]> rtime.felk.cvut.cz Git - omk.git/blobdiff - snippets/linux.omk
Use wvtool for testing instead of wvtestrun
[omk.git] / snippets / linux.omk
index d477ab1eee853d145e905152b1deb480bb79dd9c..d906f0872df4a361db04869ace2c1f3e22d09806 100644 (file)
@@ -167,6 +167,16 @@ $(2): $(1) $$(GEN_HEADERS)
 endif
 endef
 
+# Syntax: $(call COMPILE_s_o_template,<source>,<target>,<additional c-flags>)
+define COMPILE_s_o_template
+ifeq ($$($(2)_s_TARGET),)
+$(2)_s_TARGET=1
+$(2): $(1) $$(GEN_HEADERS)
+       @$(QUIET_CMD_ECHO) "  AS      $$@"
+       $(Q)$$(S_o_COMPILE) $(3) -o $$@ -c $$<
+endif
+endef
+
 # Syntax: $(call COMPILE_idl_template,</path/to/src.idl>,<basename>)
 define COMPILE_idl_template
 
@@ -180,18 +190,19 @@ $(2).c $(2)-stubs.c $(2)-skels.c $(2)-common.c $(2).h: $(1) $$(wildcard $$(first
 endif
 endef
 
+# GCC recognizes files matching this pattern as C++
+CXX_PATTERN = %.cc %.cp %.cxx %.cpp %.CPP %.c++ %.C
+
 # Syntax: $(call COMPILE_templates,<sources_abs>,<suffix>,<obj-prefix>)
 # Note: The newlines after $(call ) are IMPORTANT!!!
 define COMPILE_templates
 $(foreach src,$(filter %.c,$(1)),$(call COMPILE_c_o_template,$(src),$(3)$(notdir $(src:%.c=%$(2))),)
 )
-$(foreach src,$(filter %.cc,$(1)),$(call COMPILE_cc_o_template,$(src),$(3)$(notdir $(src:%.cc=%$(2))),)
-)
-$(foreach src,$(filter %.cxx,$(1)),$(call COMPILE_cc_o_template,$(src),$(3)$(notdir $(src:%.cxx=%$(2))),)
+$(foreach src,$(filter $(CXX_PATTERN),$(1)),$(call COMPILE_cc_o_template,$(src),$(3)$(notdir $(basename $(src))$(2)),)
 )
-$(foreach src,$(filter %.cpp,$(1)),$(call COMPILE_cc_o_template,$(src),$(3)$(notdir $(src:%.cpp=%$(2))),)
+$(foreach src,$(filter %.S,$(1)),$(call COMPILE_S_o_template,$(src),$(3)$(notdir $(basename $(src))$(2)),)
 )
-$(foreach src,$(filter %.S,$(1)),$(call COMPILE_S_o_template,$(src),$(3)$(notdir $(src:%.S=%$(2))),)
+$(foreach src,$(filter %.s,$(1)),$(call COMPILE_s_o_template,$(src),$(3)$(notdir $(basename $(src))$(2)),)
 )
 endef
 
@@ -209,7 +220,6 @@ TARGET_IDLS = $($(1)_SERVER_IDL) $($(1)_CLIENT_IDL) $($(1)_IDL)
 TARGET_CFLAGS   = $(if $($(1)_CFLAGS),$($(1)_CFLAGS),$(OMK_CFLAGS))
 TARGET_CXXFLAGS = $(if $($(1)_CXXFLAGS),$($(1)_CXXFLAGS),$(OMK_CXXFLAGS))
 TARGET_CPPFLAGS = $(if $($(1)_CPPFLAGS),$($(1)_CPPFLAGS),$(OMK_CPPFLAGS))
-LINK_WITH_CXX = $(filter %.cc,$(TARGET_SOURCES))$(filter %.cxx,$(TARGET_SOURCES))$(filter %.cpp,$(TARGET_SOURCES))
 
 # Syntax: $(call PROGRAM_template,<executable-name>,<dir>,<executable-suffix>,<linker-sript>)
 define PROGRAM_template
@@ -222,7 +232,7 @@ $(2)/$(1)$(3): OMK_CXXFLAGS=$(TARGET_CXXFLAGS)
 $(2)/$(1)$(3): OMK_CPPFLAGS=$(TARGET_CPPFLAGS)
 $(2)/$(1)$(3): $(TARGET_OBJS)
        @$(QUIET_CMD_ECHO) "  LINK    $$@"
-       $(Q) $(if $(LINK_WITH_CXX),$$(CXX),$$(CC)) \
+       $(Q) $(if $(filter $(CXX_PATTERN),$(TARGET_SOURCES)),$$(CXX),$$(CC)) \
          $(TARGET_OBJS) $$($(1)_LIBS:%=-l%) $$(LOADLIBES) $$(OMK_LDFLAGS) $$(LDFLAGS) $$($(1)_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
        @$(SED4OMK) -n -e 's|^LOAD \(.*\)$$$$|  \1  \&|p' $(USER_OBJS_DIR)/$(1).exe.map|tr '&' '\134'  >>$(USER_OBJS_DIR)/$(1).exe.d