X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;ds=inline;f=build%2FMakebottom;h=92bc47eab91ca65df7d7395418843610d5a0572c;hb=92655707e71f24b309fdc9966c4feaef42e46988;hp=bf342b0cea618849897f0c1bc82a8e8cd829dad8;hpb=b20998a1656dafd2cf694b7f4d5807d8321db43a;p=libucw.git diff --git a/build/Makebottom b/build/Makebottom index bf342b0c..92bc47ea 100644 --- a/build/Makebottom +++ b/build/Makebottom @@ -7,7 +7,7 @@ runtree: run/.tree-stamp $(addsuffix /.dir-stamp,$(addprefix $(o)/,$(DIRS))) run/.tree-stamp: $(o)/config.mk $(M)Creating runtree - $(Q)mkdir -p run $(addprefix run/, cf $(EXTRA_RUNDIRS) $(INSTALL_RUNDIRS)) + $(Q)mkdir -p run $(addprefix run/, $(CONFIG_DIR) $(EXTRA_RUNDIRS) $(INSTALL_RUNDIRS)) $(Q)touch run/.tree-stamp # Miscellaneous targets @@ -15,7 +15,7 @@ run/.tree-stamp: $(o)/config.mk programs: $(PROGS) datafiles: $(DATAFILES) tests: $(TESTS) -configs: $(addprefix run/cf/,$(CONFIGS)) +configs: $(addprefix run/$(CONFIG_DIR)/,$(CONFIGS)) tags: etags `find . -name "*.[ch]"` @@ -39,13 +39,14 @@ force: # Rules for configuration files -run/cf/%: custom/cf/% $(o)/config.mk $(s)/build/genconf +run/$(CONFIG_DIR)/%: $(s)/$(CONFIG_DIR)/% $(o)/config.mk $(s)/build/genconf $(M)CF $< $(Q)$(s)/build/genconf $< $@ $(o)/config.mk -run/cf/%: $(s)/cf/% $(o)/config.mk $(s)/build/genconf +$(o)/%.cf: $(s)/%.cf $(o)/config.mk $(s)/build/genconf $(M)CF $< $(Q)$(s)/build/genconf $< $@ $(o)/config.mk + $(Q)cp $@ run/$(CONFIG_DIR)/$(basename $(@F)) # Rules for libraries @@ -54,13 +55,13 @@ run/cf/%: $(s)/cf/% $(o)/config.mk $(s)/build/genconf $(Q)rm -f $@ $(Q)ar rcs $@ $^ ifdef CONFIG_INSTALL_API - $(Q)$(call symlink,$@,run/lib) + $(Q)$(call symlink-alias,$@,run/lib,$(*F)$(LIBNAME_INFIX).a) endif %.so: $(M)LD $@ $(Q)$(CC) $(LSHARED) $(LDFLAGS) -o $@ $^ - $(Q)$(call symlink,$@,run/lib) + $(Q)$(call symlink-alias,$@,run/lib,$(*F)$(SONAME_INFIX).so$(SONAME_SUFFIX)) $(o)/%.pc: $(s)/%.pc $(o)/%.$(LS) $(M)PC $< @@ -72,7 +73,15 @@ $(o)/%.pc: $(s)/%.pc $(o)/%.$(LS) ifdef CONFIG_INSTALL_API +ifdef CONFIG_LOCAL +# Need an absolute path API_ROOT:=$(shell pwd)/run +API_LIBDIR=$(API_ROOT)/lib +API_INCDIR=$(API_ROOT)/include +else +API_LIBDIR=$(INSTALL_LIB_DIR) +API_INCDIR=$(INSTALL_INCLUDE_DIR) +endif INSTALL_RUNDIRS+=include lib/pkgconfig api: $(API_INCLUDES) $(addprefix run/lib/pkgconfig/,$(addsuffix .pc,$(API_LIBS))) @@ -82,7 +91,7 @@ $(o)/%/.include-stamp: run/lib/pkgconfig/%.pc: # RHS supplied in the sub-makefile $(M)PC-API $@ - $(Q)sed <$< >$@ "s@^libdir=.*@libdir=$(API_ROOT)/lib@;s@^incdir=.*@incdir=$(API_ROOT)/include@" + $(Q)sed <$< >$@ "s@^libdir=.*@libdir=$(API_LIBDIR)@;s@^incdir=.*@incdir=$(API_INCDIR)@" else api: @@ -122,11 +131,11 @@ $(o)/%-tt.o: $(s)/%.c $(o)/autoconf.h $(o)/%-t: $(o)/%-tt.o $(TESTING_DEPS) $(M)LD-TEST $@ - $(Q)$(CC) $(LDFLAGS) -o $@ $(shell $(s)/build/lib-flags $^) $(LIBS) + $(Q)$(CC) $(LDFLAGS) -o $@ $(shell PKG_CONFIG_PATH="$(PKG_CONFIG_PATH)" $(s)/build/lib-flags $^) $(LIBS) $(o)/%.test: $(s)/%.t $(s)/build/tester $(M)TEST $@ - $(Q)$(s)/build/tester $< && touch $@ + $(Q)$(s)/build/tester --rundir=run $(TESTERFLAGS) $< && touch $@ # Rules for binaries @@ -134,7 +143,7 @@ BINDIR=bin $(o)/%: $(o)/%.o $(M)LD $@ - $(Q)$(CC) $(LDFLAGS) -o $@ $(shell $(s)/build/lib-flags $^) $(LIBS) + $(Q)$(CC) $(LDFLAGS) -o $@ $(shell PKG_CONFIG_PATH="$(PKG_CONFIG_PATH)" $(s)/build/lib-flags $^) $(LIBS) $(Q)$(call symlink,$@,run/$(BINDIR)) $(o)/%: $(s)/%.sh $(o)/config.mk $(s)/build/genconf @@ -185,7 +194,7 @@ $(DATAFILES): $(o)/%: $(s)/% # Default installation target default-install: - SH_EXTRA_RUNDIRS="$(sort $(EXTRA_RUNDIRS))" SH_INSTALL_RUNDIRS="$(sort $(INSTALL_RUNDIRS))" SH_CONFIGS="$(sort $(CONFIGS))" $(s)/build/installer $(INSTALL_DIR) + SH_EXTRA_RUNDIRS="$(sort $(EXTRA_RUNDIRS))" SH_INSTALL_RUNDIRS="$(sort $(INSTALL_RUNDIRS))" SH_CONFIGS="$(sort $(CONFIGS))" SH_AUTO_CONFIRM="$(CONFIRM)" $(s)/build/installer $(INSTALL_DIR) # Don't delete intermediate targets. There shouldn't be any, but due to bugs # in GNU Make rules with targets in not-yet-existing directories are ignored