X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;ds=sidebyside;f=build%2FMakebottom;h=92bc47eab91ca65df7d7395418843610d5a0572c;hb=fa4c8a3f9d2b3504c8843f094cb6f4fa5ef17cbc;hp=49714a754cf13cd97904c273861ace9afc6b4d66;hpb=231e128f91f6cc7f23f5d2392dffaa7857f1dcfa;p=libucw.git diff --git a/build/Makebottom b/build/Makebottom index 49714a75..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: @@ -90,43 +99,43 @@ endif # Rules for compiling C -$(o)/%.o: $(s)/%.c $(o)/lib/autoconf.h +$(o)/%.o: $(s)/%.c $(o)/autoconf.h $(M)CC $< $(Q)DEPENDENCIES_OUTPUT="$(o)/depend.new $@" $(CC) $(CFLAGS) -c -o $@ $< -$(o)/%.o: %.c $(o)/lib/autoconf.h +$(o)/%.o: %.c $(o)/autoconf.h $(M)CC $< $(Q)DEPENDENCIES_OUTPUT="$(o)/depend.new $@" $(CC) $(CFLAGS) -c -o $@ $< -%.o: %.c $(o)/lib/autoconf.h +%.o: %.c $(o)/autoconf.h $(M)CC $< $(Q)DEPENDENCIES_OUTPUT="$(o)/depend.new $@" $(CC) $(CFLAGS) -c -o $@ $< -$(o)/%.oo: $(s)/%.c $(o)/lib/autoconf.h +$(o)/%.oo: $(s)/%.c $(o)/autoconf.h $(M)CC-SO $< $(Q)DEPENDENCIES_OUTPUT="$(o)/depend.new $@" $(CC) $(CFLAGS) $(CSHARED) -c -o $@ $< -$(o)/%.oo: %.c $(o)/lib/autoconf.h +$(o)/%.oo: %.c $(o)/autoconf.h $(M)CC-SO $< $(Q)DEPENDENCIES_OUTPUT="$(o)/depend.new $@" $(CC) $(CFLAGS) $(CSHARED) -c -o $@ $< -%.oo: %.c $(o)/lib/autoconf.h +%.oo: %.c $(o)/autoconf.h $(M)CC-SO $< $(Q)DEPENDENCIES_OUTPUT="$(o)/depend.new $@" $(CC) $(CFLAGS) $(CSHARED) -c -o $@ $< -$(o)/%-tt.o: $(s)/%.c $(o)/lib/autoconf.h +$(o)/%-tt.o: $(s)/%.c $(o)/autoconf.h $(M)CC-TEST $< $(Q)DEPENDENCIES_OUTPUT="$(o)/depend.new $@" $(CC) $(CFLAGS) -DTEST -c -o $@ $< # 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