]> rtime.felk.cvut.cz Git - omk.git/commitdiff
Test and base snippets converted to non-flat structure
authorMichal Sojka <sojkam1@fel.cvut.cz>
Tue, 30 Dec 2008 09:00:21 +0000 (10:00 +0100)
committerMichal Sojka <sojkam1@fel.cvut.cz>
Tue, 30 Dec 2008 09:25:34 +0000 (10:25 +0100)
By non-flat I mean that "include XXX #omkbuild" is used not only in the
top-level snippet

snippets/Makefile.rules.test
snippets/base
snippets/test [deleted file]

index 6e92dc99069a85b109d29783eaef9f5516d1a18a..d8d708eb33fba9c4307254a5c4cdd5132a8e7393 100644 (file)
@@ -1,4 +1,90 @@
 include base #omkbuild
-include prepare #omkbuild
-include test #omkbuild
-include build #omkbuild
+
+USER_INCLUDE_DIR := $(OUTPUT_DIR)/$(COMPILED_DIR_NAME)/include
+USER_LIB_DIR     := $(OUTPUT_DIR)/$(COMPILED_DIR_NAME)/lib
+USER_UTILS_DIR   := $(OUTPUT_DIR)/$(COMPILED_DIR_NAME)/bin-utils
+USER_TESTS_DIR   := $(OUTPUT_DIR)/$(COMPILED_DIR_NAME)/bin-tests
+USER_BIN_DIR     := $(OUTPUT_DIR)/$(COMPILED_DIR_NAME)/bin
+USER_BUILD_DIR   := $(OUTPUT_DIR)/$(BUILD_DIR_NAME)/user
+LINK_BUILD_DIR   := $(OUTPUT_DIR)/$(BUILD_DIR_NAME)/link
+
+# Avoid double slash at the end in the top-level directory
+USER_OBJS_DIR = $(USER_BUILD_DIR)$(RELATIVE_DIR:%=/%)
+KERN_OBJS_DIR = $(KERN_BUILD_DIR)$(RELATIVE_DIR:%=/%)
+OMK_WORK_DIR  = $(USER_OBJS_DIR)
+
+############
+# Programs #
+############
+
+# Check GCC version for user build
+ifndef CC_MAJOR_VERSION
+CC_MAJOR_VERSION := $(shell $(CC) -dumpversion | sed -e 's/\([^.]\)\..*/\1/')
+endif
+# Prepare suitable define for dependency building
+ifeq ($(CC_MAJOR_VERSION),2)
+CC_DEPFLAGS = -Wp,-MD,"$$@.d.tmp"
+else
+CC_DEPFLAGS = -MT $$@ -MD -MP -MF "$$@.d.tmp"
+endif
+
+c_o_COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -DOMK_FOR_USER
+
+c_o_cmd = \
+       if $(c_o_COMPILE) $(CC_DEPFLAGS) -o $$@ -c $$< ; \
+       then mv -f "$$@.d.tmp" "$$@.d"; \
+       else rm -f "$$@.d.tmp"; exit 1; \
+       fi
+
+
+# Usage: $(call program_template,<executable-name>,<bin|utils|test>)
+define program_template
+$(1)_OBJS += $$(patsubst %.c,%.o,$$(filter %.c,$$($(1)_SOURCES)))
+$(1)_OBJS := $$(addprefix $(USER_OBJS_DIR)/,$$(sort $$($(1)_OBJS:%/=%)))
+
+USER_OBJS  += $$($(1)_OBJS)
+USER_SOURCES += $$($(1)_SOURCES)
+
+$(call prepare_rule_goal,\
+       $(USER_BIN_DIR)/$(1)$(EXE_SUFFIX),\
+       $$($(1)_OBJS) $$($(1)_LIBS),\
+       "LINK    ",\
+       $(program_cmd))
+endef
+
+program_cmd = $(if $(filter %.cc,$$($(1)_SOURCES)),$(CXX),$(CC)) \
+       $($(1)_OBJS) $($(1)_LIBS:%=-l%) $(LOADLIBES) $(LDFLAGS) -Wl,-rpath-link,$(USER_LIB_DIR) \
+       -Wl,-Map,$(USER_OBJS_DIR)/$(1).exe.map -o $$@
+
+$(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)),\
+       $(eval $(call prepare_rule,\
+               $(USER_OBJS_DIR)/$(src:%.c=%.o),\
+               $(SOURCES_DIR)/$(src),\
+               "CC      ",\
+               $(c_o_cmd))))
+
+$(eval $(call prepare_rule_goal,\
+               $(USER_OBJS_DIR)/test.X.o,\
+               $(SOURCES_DIR)/test.c,\
+               "CC      ",\
+               $(c_o_cmd)))
+
+# OUTPUT_DIR is not defined in Makefile.build so we has to pass it on
+# command-line. After this file will be merged with Makefile.rules, it
+# will not be necessary to pass it.
+default: check-dir prepare-pass
+       -$(MAKE) -qp -f $(MAKERULES_DIR)/Makefile.rules build > make.db.build-pseudo-pass;
+       +@echo "make[omk]: build"
+       @$(MAKE) $(NO_PRINT_DIRECTORY) -f $(MAKERULES_DIR)/Makefile.rules build
+
+check-dir::
+       @$(call mkdir_def,$(USER_BUILD_DIR))
+       @$(call mkdir_def,$(USER_INCLUDE_DIR))
+       @$(call mkdir_def,$(USER_LIB_DIR))
+       @$(call mkdir_def,$(USER_BIN_DIR))
+       @$(call mkdir_def,$(USER_UTILS_DIR))
+       @$(call mkdir_def,$(USER_TESTS_DIR))
+
index 937ee17056acb34cd491e67c5655901c41650cd1..d39f493025723c5797f1dc448e69b37e8262acfb 100644 (file)
@@ -297,6 +297,10 @@ omkize:
              cp -v Makefile "$${d}/Makefile"; \
           fi \
        done
+
+include prepare #omkbuild
+include build #omkbuild
+
 # Local Variables:
 # mode:makefile-gmake
 # End:
diff --git a/snippets/test b/snippets/test
deleted file mode 100644 (file)
index b004e9d..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-USER_INCLUDE_DIR := $(OUTPUT_DIR)/$(COMPILED_DIR_NAME)/include
-USER_LIB_DIR     := $(OUTPUT_DIR)/$(COMPILED_DIR_NAME)/lib
-USER_UTILS_DIR   := $(OUTPUT_DIR)/$(COMPILED_DIR_NAME)/bin-utils
-USER_TESTS_DIR   := $(OUTPUT_DIR)/$(COMPILED_DIR_NAME)/bin-tests
-USER_BIN_DIR     := $(OUTPUT_DIR)/$(COMPILED_DIR_NAME)/bin
-USER_BUILD_DIR   := $(OUTPUT_DIR)/$(BUILD_DIR_NAME)/user
-LINK_BUILD_DIR   := $(OUTPUT_DIR)/$(BUILD_DIR_NAME)/link
-
-# Avoid double slash at the end in the top-level directory
-USER_OBJS_DIR = $(USER_BUILD_DIR)$(RELATIVE_DIR:%=/%)
-KERN_OBJS_DIR = $(KERN_BUILD_DIR)$(RELATIVE_DIR:%=/%)
-OMK_WORK_DIR  = $(USER_OBJS_DIR)
-
-############
-# Programs #
-############
-
-# Check GCC version for user build
-ifndef CC_MAJOR_VERSION
-CC_MAJOR_VERSION := $(shell $(CC) -dumpversion | sed -e 's/\([^.]\)\..*/\1/')
-endif
-# Prepare suitable define for dependency building
-ifeq ($(CC_MAJOR_VERSION),2)
-CC_DEPFLAGS = -Wp,-MD,"$$@.d.tmp"
-else
-CC_DEPFLAGS = -MT $$@ -MD -MP -MF "$$@.d.tmp"
-endif
-
-c_o_COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -DOMK_FOR_USER
-
-c_o_cmd = \
-       if $(c_o_COMPILE) $(CC_DEPFLAGS) -o $$@ -c $$< ; \
-       then mv -f "$$@.d.tmp" "$$@.d"; \
-       else rm -f "$$@.d.tmp"; exit 1; \
-       fi
-
-
-# Usage: $(call program_template,<executable-name>,<bin|utils|test>)
-define program_template
-$(1)_OBJS += $$(patsubst %.c,%.o,$$(filter %.c,$$($(1)_SOURCES)))
-$(1)_OBJS := $$(addprefix $(USER_OBJS_DIR)/,$$(sort $$($(1)_OBJS:%/=%)))
-
-USER_OBJS  += $$($(1)_OBJS)
-USER_SOURCES += $$($(1)_SOURCES)
-
-$(call prepare_rule_goal,\
-       $(USER_BIN_DIR)/$(1)$(EXE_SUFFIX),\
-       $$($(1)_OBJS) $$($(1)_LIBS),\
-       "LINK    ",\
-       $(program_cmd))
-endef
-
-program_cmd = $(if $(filter %.cc,$$($(1)_SOURCES)),$(CXX),$(CC)) \
-       $($(1)_OBJS) $($(1)_LIBS:%=-l%) $(LOADLIBES) $(LDFLAGS) -Wl,-rpath-link,$(USER_LIB_DIR) \
-       -Wl,-Map,$(USER_OBJS_DIR)/$(1).exe.map -o $$@
-
-$(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)),\
-       $(eval $(call prepare_rule,\
-               $(USER_OBJS_DIR)/$(src:%.c=%.o),\
-               $(SOURCES_DIR)/$(src),\
-               "CC      ",\
-               $(c_o_cmd))))
-
-$(eval $(call prepare_rule_goal,\
-               $(USER_OBJS_DIR)/test.X.o,\
-               $(SOURCES_DIR)/test.c,\
-               "CC      ",\
-               $(c_o_cmd)))
-
-# OUTPUT_DIR is not defined in Makefile.build so we has to pass it on
-# command-line. After this file will be merged with Makefile.rules, it
-# will not be necessary to pass it.
-default: check-dir prepare-pass
-       -$(MAKE) -qp -f $(MAKERULES_DIR)/Makefile.rules build > make.db.build-pseudo-pass;
-       +@echo "make[omk]: build"
-       @$(MAKE) $(NO_PRINT_DIRECTORY) -f $(MAKERULES_DIR)/Makefile.rules build
-
-check-dir::
-       @$(call mkdir_def,$(USER_BUILD_DIR))
-       @$(call mkdir_def,$(USER_INCLUDE_DIR))
-       @$(call mkdir_def,$(USER_LIB_DIR))
-       @$(call mkdir_def,$(USER_BIN_DIR))
-       @$(call mkdir_def,$(USER_UTILS_DIR))
-       @$(call mkdir_def,$(USER_TESTS_DIR))