diff --git a/core/defs.mk b/core/defs.mk index d04220d..279fecd 100644 --- a/core/defs.mk +++ b/core/defs.mk @@ -541,6 +541,48 @@ $(Q)$(CCACHE) $(TARGET_CXX) \ $(call path-from-top,$<) endef +############################################################################### +## Commands for running gcc to compile a m++ file. +############################################################################### + +define transform-mm-to-o +@mkdir -p $(dir $@) +@echo "$(DISPLAY_ARM_MODE)m++: $(PRIVATE_MODULE) <== $(call path-from-top,$<)" +$(call check-pwd-is-top-dir) +$(Q)$(CCACHE) $(TARGET_CXX) \ + -o $@ \ + $(TARGET_GLOBAL_C_INCLUDES) \ + $(PRIVATE_C_INCLUDES) \ + $(TARGET_GLOBAL_CFLAGS_$(PRIVATE_ARM_MODE)) \ + $(TARGET_GLOBAL_CFLAGS) $(TARGET_GLOBAL_CPPFLAGS) $(CXX_FLAGS_WARNINGS) \ + $(PRIVATE_CFLAGS) $(PRIVATE_CPPFLAGS) \ + -D__EWOL_APPL_NAME__="$(PROJECT_NAME2)" \ + -c -MMD -MP -g \ + -fgnu-runtime \ + $(call path-from-top,$<) +endef + +############################################################################### +## Commands for running gcc to compile a m file. +############################################################################### + +define transform-m-to-o +@mkdir -p $(dir $@) +@echo "$(DISPLAY_ARM_MODE)m++: $(PRIVATE_MODULE) <== $(call path-from-top,$<)" +$(call check-pwd-is-top-dir) +$(Q)$(CCACHE) $(TARGET_CC) \ + -o $@ \ + $(TARGET_GLOBAL_C_INCLUDES) \ + $(PRIVATE_C_INCLUDES) \ + $(TARGET_GLOBAL_CFLAGS_$(PRIVATE_ARM_MODE)) \ + $(TARGET_GLOBAL_CFLAGS) $(TARGET_GLOBAL_CPPFLAGS) $(CXX_FLAGS_WARNINGS) \ + $(PRIVATE_CFLAGS) $(PRIVATE_CPPFLAGS) \ + -D__EWOL_APPL_NAME__="$(PROJECT_NAME2)" \ + -c -MMD -MP -g \ + -fgnu-runtime \ + $(call path-from-top,$<) +endef + ############################################################################### ## Commands for running gcc to compile a C++ file. ############################################################################### @@ -667,15 +709,9 @@ $(call check-pwd-is-top-dir) $(Q)$(TARGET_CXX) \ -o $@ \ $(TARGET_GLOBAL_LDFLAGS) \ - -Wl,-Map -Wl,$(basename $@).map \ - -Wl,-rpath-link=$(TARGET_OUT_STAGING)/lib \ - -Wl,-rpath-link=$(TARGET_OUT_STAGING)/usr/lib \ + -Wl,-map -Wl,$(basename $@).map \ $(PRIVATE_LDFLAGS) \ $(PRIVATE_ALL_OBJECTS) \ - -Wl,--whole-archive \ - $(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES) \ - -Wl,--no-whole-archive \ - -Wl,--as-needed \ $(PRIVATE_ALL_STATIC_LIBRARIES) \ $(PRIVATE_ALL_SHARED_LIBRARIES) \ $(PRIVATE_LDLIBS) \ diff --git a/core/rules.mk b/core/rules.mk index ccb6993..4688162 100644 --- a/core/rules.mk +++ b/core/rules.mk @@ -57,6 +57,12 @@ endif ## List of sources, objects and libraries. ############################################################################### +mm_sources := $(filter %.mm,$(LOCAL_SRC_FILES)) +mm_objects := $(addprefix $(build_dir)/,$(mm_sources:.mm=.o)) + +m_sources := $(filter %.m,$(LOCAL_SRC_FILES)) +m_objects := $(addprefix $(build_dir)/,$(m_sources:.m=.o)) + cpp_sources := $(filter %.cpp,$(LOCAL_SRC_FILES)) cpp_objects := $(addprefix $(build_dir)/,$(cpp_sources:.cpp=.o)) @@ -73,6 +79,8 @@ S_sources := $(filter %.S,$(LOCAL_SRC_FILES)) S_objects := $(addprefix $(build_dir)/,$(S_sources:.S=.o)) all_objects := \ + $(mm_objects) \ + $(m_objects) \ $(cpp_objects) \ $(cxx_objects) \ $(c_objects) \ @@ -173,6 +181,20 @@ LOCAL_CFLAGS += $(foreach __mod,$(all_depends), \ ## Actual rules. ############################################################################### +# mm files +ifneq ("$(strip $(mm_objects))","") +$(mm_objects): $(build_dir)/%.o: $(LOCAL_PATH)/%.mm + $(transform-mm-to-o) +-include $(mm_objects:%.o=%.d) +endif + +# m files +ifneq ("$(strip $(m_objects))","") +$(m_objects): $(build_dir)/%.o: $(LOCAL_PATH)/%.m + $(transform-m-to-o) +-include $(m_objects:%.o=%.d) +endif + # cpp files ifneq ("$(strip $(cpp_objects))","") $(cpp_objects): $(build_dir)/%.o: $(LOCAL_PATH)/%.cpp