diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2015-07-23 22:39:38 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2015-07-23 22:39:38 -0700 |
commit | 68e72f7fb9c53ddba3e62315bb5b8d7a59a9579f (patch) | |
tree | 3739fb8185130c2b3822a7e7630233a960b17e5e | |
parent | b2a47642713286c195d2e4fd27b67019a0cba411 (diff) | |
download | txr-68e72f7fb9c53ddba3e62315bb5b8d7a59a9579f.tar.gz txr-68e72f7fb9c53ddba3e62315bb5b8d7a59a9579f.tar.bz2 txr-68e72f7fb9c53ddba3e62315bb5b8d7a59a9579f.zip |
Set up blank top_srcdir if building in source directory.
This means short, relative names are used for C source files when
compiling in the source directory.
* Makefile (CFLAGS): Exclude -iquote $(top_srcdir) arguments
if top_srcdir is blank. Remove slash after $(top_srcdir),
since the variable includes it now, if its value is not blank.
(SRCS, ABBREV, opt/%-win.o, lex.yy.c, y.tab.c, install): Remove slash
after $(top_srcdir).
(dbg/%.o, opt/%.o): Only include rules for depending
on $(top_srcdir)%.c prerequisite if top_srcdir is not blank.
In the blank case, the rules are redundant.
* configure: if configuring in the root of the source tree,
establish top_srcdir as blank, otherwise establish is as
an absolute path with a trailing slash.
-rw-r--r-- | ChangeLog | 20 | ||||
-rw-r--r-- | Makefile | 32 | ||||
-rwxr-xr-x | configure | 15 |
3 files changed, 48 insertions, 19 deletions
@@ -1,5 +1,25 @@ 2015-07-23 Kaz Kylheku <kaz@kylheku.com> + Set up blank top_srcdir if building in source directory. + + This means short, relative names are used for C source files when + compiling in the source directory. + + * Makefile (CFLAGS): Exclude -iquote $(top_srcdir) arguments + if top_srcdir is blank. Remove slash after $(top_srcdir), + since the variable includes it now, if its value is not blank. + (SRCS, ABBREV, opt/%-win.o, lex.yy.c, y.tab.c, install): Remove slash + after $(top_srcdir). + (dbg/%.o, opt/%.o): Only include rules for depending + on $(top_srcdir)%.c prerequisite if top_srcdir is not blank. + In the blank case, the rules are redundant. + + * configure: if configuring in the root of the source tree, + establish top_srcdir as blank, otherwise establish is as + an absolute path with a trailing slash. + +2015-07-23 Kaz Kylheku <kaz@kylheku.com> + Split off test macros from ifa.tl into common file. * Makefile (TESTS_OUT): Don't use find to hunt down tests; @@ -26,10 +26,10 @@ -include config/config.make VERBOSE := -CFLAGS := -iquote $(conf_dir) -iquote $(top_srcdir) \ +CFLAGS := -iquote $(conf_dir) $(if $(top_srcdir),-iquote $(top_srcdir)) \ $(LANG_FLAGS) $(DIAG_FLAGS) \ $(DBG_FLAGS) $(PLATFORM_FLAGS) $(EXTRA_FLAGS) -CFLAGS += -iquote $(top_srcdir)/mpi +CFLAGS += -iquote $(top_srcdir)mpi CFLAGS := $(filter-out $(REMOVE_FLAGS),$(CFLAGS)) ifneq ($(subst g++,@,$(notdir $(CC))),$(notdir $(CC))) @@ -54,10 +54,10 @@ OBJS-$(have_posix_sigs) += signal.o EXTRA_OBJS-$(add_win_res) += win/txr.res ifneq ($(have_git),) -SRCS := $(addprefix $(top_srcdir)/,\ +SRCS := $(addprefix $(top_srcdir),\ $(filter-out lex.yy.c y.tab.c y.tab.h,\ $(shell git --work-tree=$(top_srcdir) \ - --git-dir=$(top_srcdir)/.git \ + --git-dir=$(top_srcdir).git \ ls-files "*.c" "*.h" "*.l" "*.y"))) endif @@ -84,7 +84,7 @@ V = $(if $(VERBOSE),,@) ABBREV = $(if $(VERBOSE),\ @:,\ @printf "%s %s -> %s\n" $(1) \ - "$(patsubst $(top_srcdir)/%,%,$(filter-out $(DEP_$@),$^))" $@) + "$(patsubst $(top_srcdir)%,%,$(filter-out $(DEP_$@),$^))" $@) ABBREV3 = $(if $(VERBOSE),@:,@printf "%s %s -> %s\n" $(1) "$(3)" $(2)) define DEPGEN @@ -114,11 +114,13 @@ $(V)mkdir -p $(dir $@) $(V)windres -O coff -DTXR_VER=$(txr_ver) $< $@ endef -dbg/%.o: $(top_srcdir)/%.c +ifneq ($(top_srcdir),) +dbg/%.o: $(top_srcdir)%.c $(call COMPILE_C_WITH_DEPS,) -opt/%.o: $(top_srcdir)/%.c +opt/%.o: $(top_srcdir)%.c $(call COMPILE_C_WITH_DEPS,$(OPT_FLAGS)) +endif dbg/%.o: %.c $(call COMPILE_C_WITH_DEPS,) @@ -126,10 +128,10 @@ dbg/%.o: %.c opt/%.o: %.c $(call COMPILE_C_WITH_DEPS,$(OPT_FLAGS)) -dbg/%-win.o: $(top_srcdir)/%.c +dbg/%-win.o: $(top_srcdir)%.c $(call COMPILE_C_WITH_DEPS,-DCONFIG_WIN_MAIN=1) -opt/%-win.o: $(top_srcdir)/%.c +opt/%-win.o: $(top_srcdir)%.c $(call COMPILE_C_WITH_DEPS,-DCONFIG_WIN_MAIN=1 $(OPT_FLAGS)) %.res: %.rc @@ -182,7 +184,7 @@ $(call DEP,$(OBJS) $(EXTRA_OBJS-y),\ $(call DEP,opt/lex.yy.o dbg/lex.yy.o,y.tab.h) -lex.yy.c: $(top_srcdir)/parser.l +lex.yy.c: $(top_srcdir)parser.l $(call ABBREV,LEX) $(V)rm -f $@ $(V)$(LEX) $(LEX_DBG_FLAGS) $< @@ -195,7 +197,7 @@ y.tab.h: y.tab.c exit 1; \ fi -y.tab.c: $(top_srcdir)/parser.y +y.tab.c: $(top_srcdir)parser.y $(call ABBREV,YACC) $(V)rm -f y.tab.c $(V)if $(YACC) -v -d $< ; then chmod a-w y.tab.c ; true ; else rm y.tab.c ; false ; fi @@ -351,11 +353,11 @@ PREINSTALL := : install: $(PROG) $(V)$(PREINSTALL) $(call INSTALL,0755,txr$(EXE),$(DESTDIR)$(bindir)) - $(call INSTALL,0444,$(top_srcdir)/LICENSE,$(DESTDIR)$(datadir)) - $(call INSTALL,0444,$(top_srcdir)/METALICENSE,$(DESTDIR)$(datadir)) - $(call INSTALL,0444,$(top_srcdir)/txr.1,$(DESTDIR)$(mandir)/man1) + $(call INSTALL,0444,$(top_srcdir)LICENSE,$(DESTDIR)$(datadir)) + $(call INSTALL,0444,$(top_srcdir)METALICENSE,$(DESTDIR)$(datadir)) + $(call INSTALL,0444,$(top_srcdir)txr.1,$(DESTDIR)$(mandir)/man1) $(call INSTALL,0444,\ - $(addprefix $(top_srcdir)/share/txr/stdlib/,\ + $(addprefix $(top_srcdir)share/txr/stdlib/,\ *.txr *.tl),\ $(DESTDIR)$(datadir)/stdlib) @@ -535,11 +535,18 @@ done source_dir="$(dirname $0)" # -# Compute an absolute path to the source directory. +# If building in a separate directory, establish top_srcdir as +# an absolute path to the source directory, with a trailing slash. +# Otherwise top_srcdir is blank. # -top_srcdir="$(cd "$source_dir" ; pwd -P)" -printf "Checking source directory %s ..." "$top_srcdir" +if [ "$source_dir" = "." ] ; then + top_srcdir="" +else + top_srcdir="$(cd "$source_dir" ; pwd -P)"/ +fi + +printf "Checking source directory \"%s\" ..." "$top_srcdir" case "$top_srcdir" in " "* | *" "* | *" " ) @@ -715,7 +722,7 @@ conftest_syms() # But this is pointless if we have no git repo. # "have_git" means we have a repo, and git. # -if [ -d $top_srcdir/.git ] ; then +if [ -d $top_srcdir.git ] ; then printf "Checking whether we have git ... " if git --version > /dev/null 2> /dev/null ; then |