X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=build%2FMakebottom;h=92bc47eab91ca65df7d7395418843610d5a0572c;hb=fa4c8a3f9d2b3504c8843f094cb6f4fa5ef17cbc;hp=3475df019c75ce72aa34cf4840c6228d959548d8;hpb=54833f693e97cc4c3d5b8c28e6816e8d1ce5192e;p=libucw.git diff --git a/build/Makebottom b/build/Makebottom index 3475df01..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: @@ -120,13 +129,13 @@ $(o)/%-tt.o: $(s)/%.c $(o)/autoconf.h # Rules for testing -$(o)/%-t: $(o)/%-tt.o $(LIBSH) +$(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 @@ -161,15 +170,17 @@ $(o)/%: %.pl $(o)/config.mk $(s)/build/genconf $(Q)chmod +x $@ $(Q)$(call symlink,$@,run/$(BINDIR)) +PERL_MODULE_DIR=UCW + $(o)/%.pm: $(s)/%.pm - $(M)PM $< + $(M)"PM $< -> run/lib/perl5/$(PERL_MODULE_DIR)/$(@F)" $(Q)cp $^ $@ - $(Q)$(call symlink,$@,run/lib/perl5/Sherlock) + $(Q)$(call symlink,$@,run/lib/perl5/$(PERL_MODULE_DIR)) $(o)/%.pm: %.pm - $(M)PM $< + $(M)"PM $< -> run/lib/perl/$(PERL_MODULE_DIR)/$(@F)" $(Q)cp $^ $@ - $(Q)$(call symlink,$@,run/lib/perl5/Sherlock) + $(Q)$(call symlink,$@,run/lib/perl5/$(PERL_MODULE_DIR)) # Rules for data files @@ -183,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