From ba204e49feab9a6fcb019b0043f0980095ca8611 Mon Sep 17 00:00:00 2001 From: Michal Sojka Date: Tue, 30 Dec 2008 23:23:58 +0100 Subject: [PATCH] Linux snippet reverted to version in master (to make porting old functionality easier) --- snippets/linux | 92 ++++++++++++++++++-------------------------------- 1 file changed, 32 insertions(+), 60 deletions(-) diff --git a/snippets/linux b/snippets/linux index 4b0d135..048d5ef 100644 --- a/snippets/linux +++ b/snippets/linux @@ -62,7 +62,6 @@ USER_UTILS_DIR := $(TARGET_DIR)/usr/bin USER_TESTS_DIR := $(TARGET_DIR)/usr/bin USER_BIN_DIR := $(TARGET_DIR)/usr/bin USER_BUILD_DIR := $(BUILD_DIR)/user/$(GROUP_DIR_NAME) -LINK_BUILD_DIR := $(BUILD_DIR)/link/$(GROUP_DIR_NAME) #LINUX_DIR := $(OCERA_DIR)/kernel/linux #RTL_DIR := $(OCERA_DIR)/kernel/rtlinux #CONFIG_FILE := $(OCERA_DIR)/emdebsys/.config @@ -81,7 +80,6 @@ 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 ifndef LINUX_VERSION LINUX_VERSION=$(shell uname -r) @@ -120,7 +118,7 @@ CPPFLAGS += -I $(USER_INCLUDE_DIR) LOADLIBES += -L$(USER_LIB_DIR) -#LOADLIBES += $(lib_LOADLIBES:%=-l%) +LOADLIBES += $(lib_LOADLIBES:%=-l%) LIB_CPPFLAGS += $(CPPFLAGS) LIB_CFLAGS += $(CFLAGS) @@ -145,7 +143,8 @@ OMK_WORK_DIR = $(USER_OBJS_DIR) # Some support to serialize some targets for parallel make ifneq ($(OMK_SERIALIZE_INCLUDED),y) include-pass: check-dir -link: include-pass +library-pass: include-pass +binary-pass: library-pass link-pseudo-pass kernel-lib-pass: include-pass kernel-mod-pass: kernel-lib-pass kernel-modpost-pass: kernel-mod-pass @@ -158,7 +157,7 @@ endif # Checks for OMK tester ifdef OMK_TESTSROOT default-config-pass-check include-pass-check: -library-pass-check: +library-pass-check binary-pass-check: @[ -x "$(shell which $(CC))" ] || $(call canttest,Cannot find compiler: $(CC)) endif @@ -257,7 +256,8 @@ $(2).c $(2)-stubs.c $(2)-skels.c $(2)-common.c $(2).h: $(1) endef -# Syntax: $(call PROGRAM_template,,) +# Syntax: $(call PROGRAM_template,,,,) +# FIXME: ???????? asi je tu blbej komentar define PROGRAM_template USER_IDLS += $$($(1)_SERVER_IDL) $$($(1)_CLIENT_IDL) $$($(1)_IDL) @@ -277,13 +277,13 @@ $(1)_OBJS := $$(sort $$($(1)_OBJS:%/=%)) USER_OBJS += $$($(1)_OBJS) USER_SOURCES += $$($(1)_SOURCES) -include-pass-local: $(OMK_WORK_DIR)/$(2)-$(1)$(EXE_SUFFIX).cmd -$(OMK_WORK_DIR)/$(2)-$(1)$(EXE_SUFFIX).cmd: $$($(1)_OBJS) FORCE - $(Q)echo '$(1)_objs += $$$$(addprefix $(USER_OBJS_DIR)/,$$($(1)_OBJS))' > $$@.tmp; \ - echo '$(1)_libs += $$($(1)_LIBS) $$(lib_LOADLIBES)' >> $$@.tmp; \ - echo '$(1)_linker += $$(if $$(filter %.cc,$$($(1)_SOURCES:%.cxx=%.cc)),$$(CXX),$$(CC))' >> $$@.tmp; \ - echo '$(2)_programs += $(1)' >> $$@.tmp; \ - if cmp -s $$@.tmp $$@; then rm $$@.tmp; else mv $$@.tmp $$@; fi +$(2)/$(1)$(3): $$($(1)_OBJS) + @$(QUIET_CMD_ECHO) " LINK $$@" + $(Q) $$(if $$(filter %.cc,$$($(1)_SOURCES:%.cxx=%.cc)),$$(CXX),$$(CC)) \ + $$($(1)_OBJS) $$($(1)_LIBS:%=-l%) $$(LOADLIBES) $$(LDFLAGS) -Wl,-rpath-link,$(USER_LIB_DIR) -Wl,-Map,$(USER_OBJS_DIR)/$(1).exe.map -o $$@ + @echo "$(2)/$(1)$(3): \\" >$(USER_OBJS_DIR)/$(1).exe.d + @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 endef @@ -341,19 +341,10 @@ $(OMK_WORK_DIR)/lib$(1).$(SOLIB_EXT).omkvar: $$($(1)_OBJSLO) FORCE if cmp -s $$@.tmp $$@; then rm $$@.tmp; else mv $$@.tmp $$@; fi endef +library-pass-local: $(addprefix $(USER_INCLUDE_DIR)/,$(cmetric_include_HEADERS)) \ + $(lib_LIBRARIES:%=$(USER_LIB_DIR)/lib%.a) $(shared_LIBRARIES:%=$(OMK_WORK_DIR)/lib%.$(SOLIB_EXT).omkvar) -$(OMK_WORK_DIR)/targets.omk: FORCE - @rm $$@.tmp; \ - echo '_omk_libs += $(lib_LIBRARIES)' >> $$@.tmp; \ - echo '_omk_shared_libs += $(shared_LIBRARIES)' >> $$@.tmp; \ - echo '_omk_bin += $(bin_PROGRAMS)' >> $$@.tmp; \ - echo '_omk_utils += $(utils_PROGRAMS)' >> $$@.tmp; \ - echo '_omk_test += $(test_PROGRAMS)' >> $$@.tmp; \ - if cmp -s $$@.tmp $$@; then rm $$@.tmp; else mv $$@.tmp $$@; fi - - -include-pass-local: $(addprefix $(USER_INCLUDE_DIR)/,$(cmetric_include_HEADERS)) \ - $(OMK_WORK_DIR)/targets.omk +binary-pass-local: $(bin_PROGRAMS:%=$(USER_BIN_DIR)/%$(EXE_SUFFIX)) $(utils_PROGRAMS:%=$(USER_UTILS_DIR)/%$(EXE_SUFFIX)) $(test_PROGRAMS:%=$(USER_TESTS_DIR)/%$(EXE_SUFFIX)) # Special rules for CMETRIC generated headers @@ -370,11 +361,11 @@ GEN_HEADERS+=$(filter %.h,$(USER_IDLS:%.idl=%.h)) # Generate rules for compilation of programs and libraries -$(foreach prog,$(utils_PROGRAMS),$(eval $(call PROGRAM_template,$(prog),utils))) +$(foreach prog,$(utils_PROGRAMS),$(eval $(call PROGRAM_template,$(prog),$(USER_UTILS_DIR),$(EXE_SUFFIX)))) -$(foreach prog,$(test_PROGRAMS),$(eval $(call PROGRAM_template,$(prog),test))) +$(foreach prog,$(test_PROGRAMS),$(eval $(call PROGRAM_template,$(prog),$(USER_TESTS_DIR),$(EXE_SUFFIX)))) -$(foreach prog,$(bin_PROGRAMS),$(eval $(call PROGRAM_template,$(prog),bin))) +$(foreach prog,$(bin_PROGRAMS),$(eval $(call PROGRAM_template,$(prog),$(USER_BIN_DIR),$(EXE_SUFFIX)))) $(foreach lib,$(lib_LIBRARIES),$(eval $(call LIBRARY_template,$(lib)))) @@ -384,11 +375,11 @@ $(foreach lib,$(shared_LIBRARIES),$(eval $(call SOLIB_template,$(lib)))) endif # USER_RULE_TEMPLATES -.PHONY: link -link: - $(Q)$(MAKE) $(NO_PRINT_DIRECTORY) -C $(LINK_BUILD_DIR) -f $(SOURCESDIR_MAKEFILE) link-pseudo-pass +.PHONY: link-pseudo-pass +link-pseudo-pass: + $(Q)$(MAKE) $(NO_PRINT_DIRECTORY) -C $(USER_BUILD_DIR) -f $(SOURCESDIR_MAKEFILE) link-shared-libs -ifeq ($(MAKECMDGOALS),link-pseudo-pass) +ifeq ($(MAKECMDGOALS),link-shared-libs) # Syntax: $(call solib_link_template,) define solib_link_template @@ -399,30 +390,12 @@ $(USER_LIB_DIR)/lib$(1).$(SOLIB_EXT): $$($(1)_shared_libs) $$($(1)_objslo) $(Q)$(CC) --shared -Xlinker -soname=lib$(1).$(SOLIB_EXT) -o $$@ $$($(1)_objslo) $$(LOADLIBES) $$($(1)_libs:%=-l%) endef -# Syntax: $(call program_link_template,,) -define program_link_template -$(2)/$(1)$(EXE_SUFFIX): dir=$(LINK_BUILD_DIR)/$$(notdir $(2)) -$(2)/$(1)$(EXE_SUFFIX): $$($(1)_objs) - @$(QUIET_CMD_ECHO) " LINK $$@" - $(Q) $$($(1)_linker) \ - $$($(1)_objs) $$($(1)_libs:%=-l%) $$(LOADLIBES) $$(LDFLAGS) -Wl,-Map,$$(dir)/$(1).exe.map -o $$@ - @echo "$$@: \\" >$$(dir)/$(1).exe.d - @sed -n -e 's|^LOAD \(.*\)$$$$| \1 \&|p' $$(dir)/$(1).exe.map|tr '&' '\134' >>$$(dir)/$(1).exe.d - @echo >>$$(dir)/$(1).exe.d -endef - --include $(shell true; find $(USER_BUILD_DIR) -name '*.omkvar') # `true' is a hack for MinGW +-include $(shell true; find $(USER_BUILD_DIR) -name 'lib*.omkvar') # `true' is a hack for MinGW #$(warning $(shared_libs)) $(foreach lib,$(shared_libs),$(eval $(call solib_link_template,$(lib)))) -$(foreach prg,$(bin_programs),$(eval $(call program_link_template,$(prg),$(USER_BIN_DIR)))) -$(foreach prg,$(utils_programs),$(eval $(call program_link_template,$(prg),$(USER_UTILS_DIR)))) -$(foreach prg,$(test_programs),$(eval $(call program_link_template,$(prg),$(USER_TESTS_DIR)))) -.PHONY: link-pseudo-pass -link-pseudo-pass: $(shared_libs:%=$(USER_LIB_DIR)/lib%.$(SOLIB_EXT)) \ - $(bin_programs:%=$(USER_BIN_DIR)/%$(EXE_SUFFIX)) \ - $(utils_programs:%=$(USER_UTILS_DIR)/%$(EXE_SUFFIX)) \ - $(tests_programs:%=$(USER_TESTS_DIR)/%$(EXE_SUFFIX)) +.PHONY: link-shared-libs +link-shared-libs: $(shared_libs:%=$(USER_LIB_DIR)/lib%.$(SOLIB_EXT)) endif # link-shared-libs #===================================================================== @@ -732,16 +705,15 @@ kernel-modpost-pass: -f $(SOURCES_DIR)/Makefile KERN_RULE_TEMPLATES=y KERN_MODPOST_PASS=y $(@:%=%-local) ; \ fi +$(eval $(call omk_pass_template, library-pass,$(USER_OBJS_DIR),USER_RULE_TEMPLATES=y,$(lib_LIBRARIES)$(shared_LIBRARIES))) +$(eval $(call omk_pass_template, binary-pass, $(USER_OBJS_DIR),USER_RULE_TEMPLATES=y,$(bin_PROGRAMS)$(utils_PROGRAMS)$(test_PROGRAMS))) + $(eval $(call omk_pass_template,clean,$(USER_OBJS_DIR),,always)) $(eval $(call omk_pass_template,install,$(USER_OBJS_DIR),,always)) $(eval $(call omk_pass_template,include-pass,$(USER_OBJS_DIR),USER_RULE_TEMPLATES=y,always)) -check-dir: +check-dir:: @$(call mkdir_def,$(USER_BUILD_DIR)) - @$(call mkdir_def,$(LINK_BUILD_DIR)/lib) - @$(call mkdir_def,$(LINK_BUILD_DIR)/bin) - @$(call mkdir_def,$(LINK_BUILD_DIR)/bin-utils) - @$(call mkdir_def,$(LINK_BUILD_DIR)/bin-tests) @$(call mkdir_def,$(KERN_BUILD_DIR)) @$(call mkdir_def,$(USER_INCLUDE_DIR)) @$(call mkdir_def,$(KERN_INCLUDE_DIR)) @@ -844,12 +816,12 @@ include-pass-submakes: extra-rules-subdirs # might be needed there. include-pass-this-dir $(foreach subdir,$(SUBDIRS),include-pass-$(subdir)-subdir): extra-rules-subdirs -default: include-pass link +default: include-pass library-pass binary-pass ifndef OMIT_KERNEL_PASSES # Also make kernel passes if not disabled default: kernel-lib-pass kernel-pass endif # Local Variables: -# mode:makefile-gmake +# mode:makefile # End: -- 2.39.2