Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dd86e5a0 authored by Scott James Remnant's avatar Scott James Remnant
Browse files

build: support compiling .mm on host

libchrome uses .mm (Objective-C++) files to bridge C++ code with
OS X Frameworks. This adds support for compiling .mm to .o by just
using the existing C++ support.

Bug: 24168923
Change-Id: Ia65357e2e2584dfffcb6796e214fe6b27635c3a6
parent 3ee9daac
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -926,6 +926,20 @@ $(objc_objects): $(intermediates)/%.o: $(TOPDIR)$(LOCAL_PATH)/%.m $(yacc_cpps) $
-include $(objc_objects:%.o=%.P)
endif

###########################################################
## ObjC++: Compile .mm files to .o
###########################################################

objcpp_sources := $(filter %.mm,$(my_src_files))
objcpp_objects := $(addprefix $(intermediates)/,$(objcpp_sources:.mm=.o))

ifneq ($(strip $(objcpp_objects)),)
$(objcpp_objects): $(intermediates)/%.o: $(TOPDIR)$(LOCAL_PATH)/%.mm $(yacc_cpps) $(proto_generated_headers) \
    $(my_additional_dependencies)
	$(transform-$(PRIVATE_HOST)mm-to-o)
-include $(objcpp_objects:%.o=%.P)
endif

###########################################################
## AS: Compile .S files to .o.
###########################################################
@@ -1039,6 +1053,7 @@ normal_objects := \
    $(c_objects) \
    $(gen_c_objects) \
    $(objc_objects) \
    $(objcpp_objects) \
    $(yacc_objects) \
    $(lex_objects) \
    $(proto_generated_objects) \
+8 −0
Original line number Diff line number Diff line
@@ -1198,6 +1198,14 @@ $(transform-host-m-to-o-no-deps)
$(transform-d-to-p)
endef

###########################################################
## Commands for running gcc to compile a host Objective-C++ file
###########################################################

define transform-host-mm-to-o
$(transform-host-cpp-to-o)
endef


###########################################################
## Rules to compile a single C/C++ source with ../ in the path