]> rtime.felk.cvut.cz Git - omk.git/commitdiff
Merge branch 'master' into devel
authorMichal Sojka <sojkam1@fel.cvut.cz>
Mon, 8 Dec 2008 18:47:25 +0000 (19:47 +0100)
committerMichal Sojka <sojkam1@fel.cvut.cz>
Mon, 8 Dec 2008 18:47:25 +0000 (19:47 +0100)
Conflicts:

snippets/linux

1  2 
snippets/linux

diff --combined snippets/linux
index 09f4ad18506d8ab5cdea4049a061b67c18fcf0d4,336e0350c2b9c71bab934775361b2e2a6ee47090..2be4bea0fd2009cded3c755119c8fff3fb736699
@@@ -62,7 -62,6 +62,7 @@@ USER_UTILS_DIR   := $(TARGET_DIR)/usr/b
  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 +81,7 @@@ USER_UTILS_DIR   := $(OUTPUT_DIR)/$(COM
  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 +120,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 +145,7 @@@ OMK_WORK_DIR  = $(USER_OBJS_DIR
  # Some support to serialize some targets for parallel make
  ifneq ($(OMK_SERIALIZE_INCLUDED),y)
  include-pass: check-dir
 -library-pass: include-pass
 -binary-pass: library-pass link-pseudo-pass
 +link: include-pass
  kernel-lib-pass: include-pass
  kernel-mod-pass: kernel-lib-pass
  kernel-modpost-pass: kernel-mod-pass
@@@ -158,7 -157,7 +158,7 @@@ endi
  # Checks for OMK tester
  ifdef OMK_TESTSROOT
  default-config-pass-check include-pass-check:
 -library-pass-check binary-pass-check:
 +library-pass-check:
        @[ -x "$(shell which $(CC))" ] || $(call canttest,Cannot find compiler: $(CC))
  endif
  
@@@ -257,7 -256,8 +257,7 @@@ $(2).c $(2)-stubs.c $(2)-skels.c $(2)-c
  endef
  
  
 -# Syntax: $(call PROGRAM_template,<dir>,<executable-name>,<executable-suffix>,<linker-sript>)
 -# FIXME: ???????? asi je tu blbej komentar
 +# Syntax: $(call PROGRAM_template,<executable-name>,<bin|utils|test>)
  define PROGRAM_template
  
  USER_IDLS  += $$($(1)_SERVER_IDL) $$($(1)_CLIENT_IDL) $$($(1)_IDL)
@@@ -277,13 -277,13 +277,13 @@@ $(1)_OBJS := $$(sort $$($(1)_OBJS:%/=%)
  USER_OBJS  += $$($(1)_OBJS)
  USER_SOURCES += $$($(1)_SOURCES)
  
 -$(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
 +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
  endef
  
  
@@@ -341,19 -341,10 +341,19 @@@ $(OMK_WORK_DIR)/lib$(1).$(SOLIB_EXT).om
            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)
  
 -binary-pass-local: $(bin_PROGRAMS:%=$(USER_BIN_DIR)/%$(EXE_SUFFIX)) $(utils_PROGRAMS:%=$(USER_UTILS_DIR)/%$(EXE_SUFFIX)) $(test_PROGRAMS:%=$(USER_TESTS_DIR)/%$(EXE_SUFFIX))
 +$(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
  
  # Special rules for CMETRIC generated headers
  
@@@ -370,11 -361,11 +370,11 @@@ GEN_HEADERS+=$(filter %.h,$(USER_IDLS:%
  
  # Generate rules for compilation of programs and libraries
  
 -$(foreach prog,$(utils_PROGRAMS),$(eval $(call PROGRAM_template,$(prog),$(USER_UTILS_DIR),$(EXE_SUFFIX))))
 +$(foreach prog,$(utils_PROGRAMS),$(eval $(call PROGRAM_template,$(prog),utils)))
  
 -$(foreach prog,$(test_PROGRAMS),$(eval $(call PROGRAM_template,$(prog),$(USER_TESTS_DIR),$(EXE_SUFFIX))))
 +$(foreach prog,$(test_PROGRAMS),$(eval $(call PROGRAM_template,$(prog),test)))
  
 -$(foreach prog,$(bin_PROGRAMS),$(eval $(call PROGRAM_template,$(prog),$(USER_BIN_DIR),$(EXE_SUFFIX))))
 +$(foreach prog,$(bin_PROGRAMS),$(eval $(call PROGRAM_template,$(prog),bin)))
  
  $(foreach lib,$(lib_LIBRARIES),$(eval $(call LIBRARY_template,$(lib))))
  
@@@ -384,11 -375,11 +384,11 @@@ $(foreach lib,$(shared_LIBRARIES),$(eva
  
  endif # USER_RULE_TEMPLATES
  
 -.PHONY: link-pseudo-pass
 -link-pseudo-pass:
 -      $(Q)$(MAKE) $(NO_PRINT_DIRECTORY) -C $(USER_BUILD_DIR) -f $(SOURCESDIR_MAKEFILE) link-shared-libs
 +.PHONY: link
 +link:
 +      $(Q)$(MAKE) $(NO_PRINT_DIRECTORY) -C $(LINK_BUILD_DIR) -f $(SOURCESDIR_MAKEFILE) link-pseudo-pass
  
 -ifeq ($(MAKECMDGOALS),link-shared-libs)
 +ifeq ($(MAKECMDGOALS),link-pseudo-pass)
  
  # Syntax: $(call solib_link_template,<library-name>)
  define solib_link_template
@@@ -399,30 -390,12 +399,30 @@@ $(USER_LIB_DIR)/lib$(1).$(SOLIB_EXT): $
        $(Q)$(CC) --shared -Xlinker -soname=lib$(1).$(SOLIB_EXT) -o $$@ $$($(1)_objslo) $$(LOADLIBES) $$($(1)_libs:%=-l%)
  endef
  
 --include $(shell true; find $(USER_BUILD_DIR) -name 'lib*.omkvar') # `true' is a hack for MinGW
 +# Syntax: $(call program_link_template,<executable-name>,<dest-dir>)
 +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 find $(USER_BUILD_DIR) -name '*.omkvar')
++-include $(shell true; find $(USER_BUILD_DIR) -name '*.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-shared-libs
 -link-shared-libs: $(shared_libs:%=$(USER_LIB_DIR)/lib%.$(SOLIB_EXT))
 +.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))
  endif # link-shared-libs
  
  #=====================================================================
@@@ -732,16 -705,15 +732,16 @@@ 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:
        @$(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,7 -816,7 +844,7 @@@ include-pass-submakes: extra-rules-subd
  # might be needed there.
  include-pass-this-dir $(foreach subdir,$(SUBDIRS),include-pass-$(subdir)-subdir): extra-rules-subdirs
  
 -default: include-pass library-pass binary-pass
 +default: include-pass link
  ifndef OMIT_KERNEL_PASSES
  # Also make kernel passes if not disabled
  default: kernel-lib-pass kernel-pass