From ec79f2534f29ba1580e84ed1dde9f934697ea2f3 Mon Sep 17 00:00:00 2001 From: Michal Sojka Date: Tue, 30 Dec 2008 21:55:01 +0100 Subject: [PATCH] Fixed build in subdirectories --- devel-test/Makefile.omk | 4 +--- devel-test/dir/Makefile | 14 ++++++++++++++ devel-test/dir/Makefile.omk | 4 ++++ devel-test/dir/test.c | 7 +++++++ devel-test/test.c | 9 --------- snippets/Makefile.rules.test | 17 +++++++++++------ snippets/base | 19 +++++++++++-------- snippets/build | 6 +++--- 8 files changed, 51 insertions(+), 29 deletions(-) create mode 100644 devel-test/dir/Makefile create mode 100644 devel-test/dir/Makefile.omk create mode 100644 devel-test/dir/test.c delete mode 100644 devel-test/test.c diff --git a/devel-test/Makefile.omk b/devel-test/Makefile.omk index dd0139e..87e8848 100644 --- a/devel-test/Makefile.omk +++ b/devel-test/Makefile.omk @@ -1,3 +1 @@ -bin_PROGRAMS = test - -test_SOURCES = test.c \ No newline at end of file +SUBDIRS=dir diff --git a/devel-test/dir/Makefile b/devel-test/dir/Makefile new file mode 100644 index 0000000..b22a357 --- /dev/null +++ b/devel-test/dir/Makefile @@ -0,0 +1,14 @@ +# Generic directory or leaf node makefile for OCERA make framework + +ifndef MAKERULES_DIR +MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) ) +endif + +ifeq ($(MAKERULES_DIR),) +all : default +.DEFAULT:: + @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n" +else +include $(MAKERULES_DIR)/Makefile.rules +endif + diff --git a/devel-test/dir/Makefile.omk b/devel-test/dir/Makefile.omk new file mode 100644 index 0000000..13d3ec5 --- /dev/null +++ b/devel-test/dir/Makefile.omk @@ -0,0 +1,4 @@ +bin_PROGRAMS = test + +test_SOURCES = test.c +test_LIBS = m diff --git a/devel-test/dir/test.c b/devel-test/dir/test.c new file mode 100644 index 0000000..822e084 --- /dev/null +++ b/devel-test/dir/test.c @@ -0,0 +1,7 @@ +#include + +int main() +{ + printf("Hello world\n"); + return 0; +} diff --git a/devel-test/test.c b/devel-test/test.c deleted file mode 100644 index f24b7bd..0000000 --- a/devel-test/test.c +++ /dev/null @@ -1,9 +0,0 @@ -#include - -int main() -{ -#ifdef NUMBER - printf("NUMBER is %d\n", NUMBER); -#endif - return 0; -} diff --git a/snippets/Makefile.rules.test b/snippets/Makefile.rules.test index c6a17e7..d16e073 100644 --- a/snippets/Makefile.rules.test +++ b/snippets/Makefile.rules.test @@ -60,7 +60,12 @@ program_cmd = set -e; $(if $(filter %.cc,$($(1)_SOURCES)),$(CXX),$(CC)) \ sed -n -e 's|^LOAD \(.*\)$$$$| \1 \&|p' $(USER_OBJS_DIR)/$(1).exe.map|tr '&' '\134' >>$(USER_OBJS_DIR)/$(1).exe.d; \ echo >>$(USER_OBJS_DIR)/$(1).exe.d - +prepare-pass: create-build-dirs +create-build-dirs:: +ifneq ($(bin_PROGRAMS),) +create-build-dirs:: + @$(call mkdir_def,$(USER_OBJS_DIR)) +endif $(foreach prog,$(bin_PROGRAMS),$(eval $(call program_template,$(prog),bin))) #$(foreach prog,$(bin_PROGRAMS),$(info >>>$(call program_template,$(prog),bin)<<<)) $(foreach src,$(filter %.c,$(USER_SOURCES)),\ @@ -70,11 +75,11 @@ $(foreach src,$(filter %.c,$(USER_SOURCES)),\ "CC ",\ $(c_o_cmd)))) -$(eval $(call prepare_rule_goal,\ - $(USER_OBJS_DIR)/test.X.o,\ - $(SOURCES_DIR)/test.c,\ - "CC ",\ - $(c_o_cmd))) +# $(eval $(call prepare_rule_goal,\ +# $(USER_OBJS_DIR)/test.X.o,\ +# $(SOURCES_DIR)/test.c,\ +# "CC ",\ +# $(c_o_cmd))) check-dir:: @$(call mkdir_def,$(USER_BUILD_DIR)) diff --git a/snippets/base b/snippets/base index 08c4410..37f6d8a 100644 --- a/snippets/base +++ b/snippets/base @@ -33,7 +33,7 @@ ifndef OUTPUT_DIR OUTPUT_DIR := $(MAKERULES_DIR) endif -.PHONY: all default check-make-ver omkize prepare build +.PHONY: all default check-make-ver omkize prepare build-pseudo-pass ifdef W ifeq ("$(origin W)", "command line") @@ -49,12 +49,12 @@ ifneq ($(OMK_WHOLE_TREE),1) omk_checks=check-make-ver check-dir export omk_prereq_checked=1 endif -all: build +all: build-pseudo-pass prepare: $(omk_checks) prepare-pass -build: prepare +build-pseudo-pass: prepare +@echo "make[omk]: build" - @$(MAKE) -C $(MAKERULES_DIR) -f Makefile.rules build-pseudo-pass + @$(MAKE) -C $(MAKERULES_DIR) -f Makefile.rules build @echo "Compilation finished" prepare-pass: $(omk_checks) @@ -206,7 +206,7 @@ distclean dist-clean: # Common OMK templates # ==================== -# Syntax: $(call mkdir,) +# Syntax: $(call mkdir_def,) define mkdir_def [ -d $(1) ] || mkdir -p $(1) || exit 1 endef @@ -241,7 +241,6 @@ define omk_pass_subdir_template .PHONY: $(pass)-$(2)-subdir $(pass)-subdirs: $(pass)-$(2)-subdir $(pass)-$(2)-subdir: - @$(call mkdir_def,$(OMK_WORK_DIR)/$(2)) +@$(MAKE) SOURCES_DIR=$(SOURCES_DIR)/$(2) $(NO_PRINT_DIRECTORY) \ RELATIVE_DIR=$(RELATIVE_PREFIX)$(2) -C $(2) \ -f $(SUBDIR_MAKEFILE) $(pass) @@ -260,7 +259,7 @@ extra-rules-$(1): SOURCES_DIR=$(SOURCES_DIR)/$(1) RELATIVE_DIR=$(RELATIVE_PREFIX)$(1) -C $(SOURCES_DIR)/$(1) endef -.PHONY: extra-rules-subdirs +.PHONY: extra-rules-subdirs mkdir-omk-work extra-rules-subdirs: $(foreach subdir,$(EXTRA_RULES_SUBDIRS),$(eval $(call extra_rules_subdir_template,$(subdir)))) @@ -269,13 +268,17 @@ $(foreach subdir,$(EXTRA_RULES_SUBDIRS),$(eval $(call extra_rules_subdir_templat define omk_pass_template .PHONY: $(pass) $(pass)-local $(pass)-msg $(pass)-subdirs $(pass): $(pass)-local -$(pass)-local: $(pass)-subdirs $(pass)-msg +$(pass)-local: $(pass)-subdirs $(pass)-msg mkdir-omk-work $(foreach subdir,$(SUBDIRS),$(call omk_pass_subdir_template,$(pass),$(subdir))) $(pass)-msg: $(pass)-subdirs +@echo "make[omk]: $(pass) in $(RELATIVE_DIR)" endef +mkdir-omk-work: + @$(call mkdir_def,$(OMK_WORK_DIR)) + + # ======================= # DEFAULT CONFIG PASS diff --git a/snippets/build b/snippets/build index c939665..4a73188 100644 --- a/snippets/build +++ b/snippets/build @@ -2,7 +2,7 @@ ##################### -*- makefile-gmake -*- # Build pseudo-pass # ##################### -ifneq (,$(filter build-pseudo-pass,$(MAKECMDGOALS))) +ifneq (,$(filter build,$(MAKECMDGOALS))) rule_targets = $(value $(1)_targets) rule_deps = $(value $(1)_deps) rule_msg = $(value $(1)_msg) @@ -21,8 +21,8 @@ endef $(foreach rule,$(prepared_rules),$(eval $(call build_rule,$(rule)))) -.PHONY: build-pseudo-pass +.PHONY: build -build-pseudo-pass: $(omk_goals) +build: $(omk_goals) endif # (,$(filter build,$(MAKECMDGOALS))) -- 2.39.2