Loading CleanSpec.mk +3 −0 Original line number Diff line number Diff line Loading @@ -646,6 +646,9 @@ $(call add-clean-step, rm -rf $(OUT_DIR)/target/product/generic*/*/system_ext) # link_type and jni_link_type files are no longer needed $(call add-clean-step, find $(OUT_DIR) -type f -name "*link_type" -print0 | xargs -0 rm -f) # import_includes and export_includes files are no longer needed $(call add-clean-step, find $(OUT_DIR) -type f -name "import_includes" -o -name "export_includes" -print0 | xargs -0 rm -f) # ************************************************ # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST # ************************************************ core/binary.mk +29 −60 Original line number Diff line number Diff line Loading @@ -1173,31 +1173,6 @@ endif endif #################################################### ## Import includes #################################################### import_includes := $(intermediates)/import_includes import_includes_deps := $(strip \ $(if $(LOCAL_USE_VNDK),\ $(call intermediates-dir-for,HEADER_LIBRARIES,device_kernel_headers,$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross))/export_includes) \ $(foreach l, $(installed_shared_library_module_names), \ $(call intermediates-dir-for,SHARED_LIBRARIES,$(l),$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross))/export_includes) \ $(foreach l, $(my_static_libraries) $(my_whole_static_libraries), \ $(call intermediates-dir-for,STATIC_LIBRARIES,$(l),$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross))/export_includes) \ $(foreach l, $(my_header_libraries), \ $(call intermediates-dir-for,HEADER_LIBRARIES,$(l),$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross))/export_includes)) $(import_includes): PRIVATE_IMPORT_EXPORT_INCLUDES := $(import_includes_deps) $(import_includes) : $(import_includes_deps) @echo Import includes file: $@ $(hide) mkdir -p $(dir $@) && rm -f $@ ifdef import_includes_deps $(hide) for f in $(PRIVATE_IMPORT_EXPORT_INCLUDES); do \ cat $$f >> $@; \ done else $(hide) touch $@ endif #################################################### ## Verify that NDK-built libraries only link against ## other NDK-built libraries Loading Loading @@ -1309,7 +1284,6 @@ endif # that custom build rules which generate .o files don't consume other generated # sources as input (or if they do they take care of that dependency themselves). $(normal_objects) : | $(my_generated_sources) $(all_objects) : $(import_includes) ALL_C_CPP_ETC_OBJECTS += $(all_objects) Loading Loading @@ -1678,6 +1652,22 @@ ifeq ($(NATIVE_COVERAGE),true) $(LOCAL_INTERMEDIATE_TARGETS): $(my_coverage_lib) endif #################################################### ## Import includes #################################################### imported_includes := $(strip \ $(if $(LOCAL_USE_VNDK),\ $(call intermediates-dir-for,HEADER_LIBRARIES,device_kernel_headers,$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross))) \ $(foreach l, $(installed_shared_library_module_names), \ $(call intermediates-dir-for,SHARED_LIBRARIES,$(l),$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross))) \ $(foreach l, $(my_static_libraries) $(my_whole_static_libraries), \ $(call intermediates-dir-for,STATIC_LIBRARIES,$(l),$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross))) \ $(foreach l, $(my_header_libraries), \ $(call intermediates-dir-for,HEADER_LIBRARIES,$(l),$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross)))) $(foreach dep,$(imported_includes),\ $(eval EXPORTS.$$(dep).USERS := $$(EXPORTS.$$(dep).USERS) $$(all_objects))) ########################################################### ## Define PRIVATE_ variables used by multiple module types ########################################################### Loading Loading @@ -1730,7 +1720,7 @@ $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CPPFLAGS_NO_OVERRIDE := $(my_cppflags_no_ $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_RTTI_FLAG := $(LOCAL_RTTI_FLAG) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_DEBUG_CFLAGS := $(debug_cflags) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_C_INCLUDES := $(my_c_includes) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_IMPORT_INCLUDES := $(import_includes) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_IMPORTED_INCLUDES := $(imported_includes) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_LDFLAGS := $(my_ldflags) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_LDLIBS := $(my_ldlibs) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TIDY_CHECKS := $(my_tidy_checks) Loading @@ -1757,51 +1747,30 @@ all_libraries := \ ########################################################### # Export includes ########################################################### export_includes := $(intermediates)/export_includes export_cflags := $(foreach d,$(my_export_c_include_dirs),-I $(d)) $(export_includes): PRIVATE_EXPORT_CFLAGS := $(export_cflags) # Headers exported by whole static libraries are also exported by this library. export_include_deps := $(strip \ $(foreach l,$(my_whole_static_libraries), \ $(call intermediates-dir-for,STATIC_LIBRARIES,$(l),$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross))/export_includes)) $(call intermediates-dir-for,STATIC_LIBRARIES,$(l),$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross)))) # Re-export requested headers from shared libraries. export_include_deps += $(strip \ $(foreach l,$(LOCAL_EXPORT_SHARED_LIBRARY_HEADERS), \ $(call intermediates-dir-for,SHARED_LIBRARIES,$(l),$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross))/export_includes)) $(call intermediates-dir-for,SHARED_LIBRARIES,$(l),$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross)))) # Re-export requested headers from static libraries. export_include_deps += $(strip \ $(foreach l,$(LOCAL_EXPORT_STATIC_LIBRARY_HEADERS), \ $(call intermediates-dir-for,STATIC_LIBRARIES,$(l),$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross))/export_includes)) $(call intermediates-dir-for,STATIC_LIBRARIES,$(l),$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross)))) # Re-export requested headers from header libraries. export_include_deps += $(strip \ $(foreach l,$(LOCAL_EXPORT_HEADER_LIBRARY_HEADERS), \ $(call intermediates-dir-for,HEADER_LIBRARIES,$(l),$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross))/export_includes)) $(export_includes): PRIVATE_REEXPORTED_INCLUDES := $(export_include_deps) # By adding $(my_generated_sources) it makes sure the headers get generated # before any dependent source files get compiled. $(export_includes) : $(my_export_c_include_deps) $(my_generated_sources) $(export_include_deps) $(LOCAL_EXPORT_C_INCLUDE_DEPS) @echo Export includes file: $< -- $@ $(hide) mkdir -p $(dir $@) && rm -f $@.tmp && touch $@.tmp ifdef export_cflags $(hide) echo "$(PRIVATE_EXPORT_CFLAGS)" >>$@.tmp endif ifdef export_include_deps $(hide) for f in $(PRIVATE_REEXPORTED_INCLUDES); do \ cat $$f >> $@.tmp; \ done endif $(hide) if cmp -s $@.tmp $@ ; then \ rm $@.tmp ; \ else \ mv $@.tmp $@ ; \ fi export_cflags := # Kati adds restat=1 to ninja. GNU make does nothing for this. .KATI_RESTAT: $(export_includes) # Make sure export_includes gets generated when you are running mm/mmm $(LOCAL_BUILT_MODULE) : | $(export_includes) $(call intermediates-dir-for,HEADER_LIBRARIES,$(l),$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross)))) ifneq ($(strip $(my_export_c_include_dirs)$(export_include_deps)),) EXPORTS_LIST := $(EXPORTS_LIST) $(intermediates) EXPORTS.$(intermediates).FLAGS := $(foreach d,$(my_export_c_include_dirs),-I $(d)) EXPORTS.$(intermediates).REEXPORT := $(export_include_deps) EXPORTS.$(intermediates).DEPS := $(my_export_c_include_deps) $(my_generated_sources) $(LOCAL_EXPORT_C_INCLUDE_DEPS) endif ifneq (,$(filter-out $(LOCAL_PATH)/%,$(my_export_c_include_dirs))) my_soong_problems += non_local__export_c_include_dirs Loading core/cc_prebuilt_internal.mk +3 −12 Original line number Diff line number Diff line Loading @@ -75,18 +75,9 @@ else # my_strip_module not true built_module := $(LOCAL_BUILT_MODULE) ifdef prebuilt_module_is_a_library export_includes := $(intermediates)/export_includes export_cflags := $(foreach d,$(LOCAL_EXPORT_C_INCLUDE_DIRS),-I $(d)) $(export_includes): PRIVATE_EXPORT_CFLAGS := $(export_cflags) $(export_includes): $(LOCAL_EXPORT_C_INCLUDE_DEPS) @echo Export includes file: $< -- $@ $(hide) mkdir -p $(dir $@) && rm -f $@ ifdef export_cflags $(hide) echo "$(PRIVATE_EXPORT_CFLAGS)" >$@ else $(hide) touch $@ endif export_cflags := EXPORTS_LIST := $(EXPORTS_LIST) $(intermediates) EXPORTS.$(intermediates).FLAGS := $(foreach d,$(LOCAL_EXPORT_C_INCLUDE_DIRS),-I $(d)) EXPORTS.$(intermediates).DEPS := $(LOCAL_EXPORT_C_INCLUDE_DEPS) include $(BUILD_SYSTEM)/allowed_ndk_types.mk Loading core/definitions.mk +1 −1 Original line number Diff line number Diff line Loading @@ -1107,7 +1107,7 @@ endef ########################################################### define c-includes $(addprefix -I , $(PRIVATE_C_INCLUDES)) \ $$(cat $(PRIVATE_IMPORT_INCLUDES))\ $(foreach i,$(PRIVATE_IMPORTED_INCLUDES),$(EXPORTS.$(i)))\ $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),,\ $(addprefix -I ,\ $(filter-out $(PRIVATE_C_INCLUDES), \ Loading core/main.mk +21 −0 Original line number Diff line number Diff line Loading @@ -972,6 +972,27 @@ ifdef link_type_error $(error exiting from previous errors) endif # ------------------------------------------------------------------- # Handle exported/imported includes # Recursively calculate flags $(foreach export,$(EXPORTS_LIST), \ $(eval EXPORTS.$$(export) = $$(EXPORTS.$(export).FLAGS) \ $(foreach dep,$(EXPORTS.$(export).REEXPORT),$$(EXPORTS.$(dep))))) # Recursively calculate dependencies $(foreach export,$(EXPORTS_LIST), \ $(eval EXPORT_DEPS.$$(export) = $$(EXPORTS.$(export).DEPS) \ $(foreach dep,$(EXPORTS.$(export).REEXPORT),$$(EXPORT_DEPS.$(dep))))) # Converts the recursive variables to simple variables so that we don't have to # evaluate them for every .o rule $(foreach export,$(EXPORTS_LIST),$(eval EXPORTS.$$(export) := $$(strip $$(EXPORTS.$$(export))))) $(foreach export,$(EXPORTS_LIST),$(eval EXPORT_DEPS.$$(export) := $$(sort $$(EXPORT_DEPS.$$(export))))) # Add dependencies $(foreach export,$(EXPORTS_LIST),$(eval $(call add-dependency,$$(EXPORTS.$$(export).USERS),$$(EXPORT_DEPS.$$(export))))) # ------------------------------------------------------------------- # Figure out our module sets. # Loading Loading
CleanSpec.mk +3 −0 Original line number Diff line number Diff line Loading @@ -646,6 +646,9 @@ $(call add-clean-step, rm -rf $(OUT_DIR)/target/product/generic*/*/system_ext) # link_type and jni_link_type files are no longer needed $(call add-clean-step, find $(OUT_DIR) -type f -name "*link_type" -print0 | xargs -0 rm -f) # import_includes and export_includes files are no longer needed $(call add-clean-step, find $(OUT_DIR) -type f -name "import_includes" -o -name "export_includes" -print0 | xargs -0 rm -f) # ************************************************ # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST # ************************************************
core/binary.mk +29 −60 Original line number Diff line number Diff line Loading @@ -1173,31 +1173,6 @@ endif endif #################################################### ## Import includes #################################################### import_includes := $(intermediates)/import_includes import_includes_deps := $(strip \ $(if $(LOCAL_USE_VNDK),\ $(call intermediates-dir-for,HEADER_LIBRARIES,device_kernel_headers,$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross))/export_includes) \ $(foreach l, $(installed_shared_library_module_names), \ $(call intermediates-dir-for,SHARED_LIBRARIES,$(l),$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross))/export_includes) \ $(foreach l, $(my_static_libraries) $(my_whole_static_libraries), \ $(call intermediates-dir-for,STATIC_LIBRARIES,$(l),$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross))/export_includes) \ $(foreach l, $(my_header_libraries), \ $(call intermediates-dir-for,HEADER_LIBRARIES,$(l),$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross))/export_includes)) $(import_includes): PRIVATE_IMPORT_EXPORT_INCLUDES := $(import_includes_deps) $(import_includes) : $(import_includes_deps) @echo Import includes file: $@ $(hide) mkdir -p $(dir $@) && rm -f $@ ifdef import_includes_deps $(hide) for f in $(PRIVATE_IMPORT_EXPORT_INCLUDES); do \ cat $$f >> $@; \ done else $(hide) touch $@ endif #################################################### ## Verify that NDK-built libraries only link against ## other NDK-built libraries Loading Loading @@ -1309,7 +1284,6 @@ endif # that custom build rules which generate .o files don't consume other generated # sources as input (or if they do they take care of that dependency themselves). $(normal_objects) : | $(my_generated_sources) $(all_objects) : $(import_includes) ALL_C_CPP_ETC_OBJECTS += $(all_objects) Loading Loading @@ -1678,6 +1652,22 @@ ifeq ($(NATIVE_COVERAGE),true) $(LOCAL_INTERMEDIATE_TARGETS): $(my_coverage_lib) endif #################################################### ## Import includes #################################################### imported_includes := $(strip \ $(if $(LOCAL_USE_VNDK),\ $(call intermediates-dir-for,HEADER_LIBRARIES,device_kernel_headers,$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross))) \ $(foreach l, $(installed_shared_library_module_names), \ $(call intermediates-dir-for,SHARED_LIBRARIES,$(l),$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross))) \ $(foreach l, $(my_static_libraries) $(my_whole_static_libraries), \ $(call intermediates-dir-for,STATIC_LIBRARIES,$(l),$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross))) \ $(foreach l, $(my_header_libraries), \ $(call intermediates-dir-for,HEADER_LIBRARIES,$(l),$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross)))) $(foreach dep,$(imported_includes),\ $(eval EXPORTS.$$(dep).USERS := $$(EXPORTS.$$(dep).USERS) $$(all_objects))) ########################################################### ## Define PRIVATE_ variables used by multiple module types ########################################################### Loading Loading @@ -1730,7 +1720,7 @@ $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CPPFLAGS_NO_OVERRIDE := $(my_cppflags_no_ $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_RTTI_FLAG := $(LOCAL_RTTI_FLAG) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_DEBUG_CFLAGS := $(debug_cflags) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_C_INCLUDES := $(my_c_includes) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_IMPORT_INCLUDES := $(import_includes) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_IMPORTED_INCLUDES := $(imported_includes) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_LDFLAGS := $(my_ldflags) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_LDLIBS := $(my_ldlibs) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TIDY_CHECKS := $(my_tidy_checks) Loading @@ -1757,51 +1747,30 @@ all_libraries := \ ########################################################### # Export includes ########################################################### export_includes := $(intermediates)/export_includes export_cflags := $(foreach d,$(my_export_c_include_dirs),-I $(d)) $(export_includes): PRIVATE_EXPORT_CFLAGS := $(export_cflags) # Headers exported by whole static libraries are also exported by this library. export_include_deps := $(strip \ $(foreach l,$(my_whole_static_libraries), \ $(call intermediates-dir-for,STATIC_LIBRARIES,$(l),$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross))/export_includes)) $(call intermediates-dir-for,STATIC_LIBRARIES,$(l),$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross)))) # Re-export requested headers from shared libraries. export_include_deps += $(strip \ $(foreach l,$(LOCAL_EXPORT_SHARED_LIBRARY_HEADERS), \ $(call intermediates-dir-for,SHARED_LIBRARIES,$(l),$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross))/export_includes)) $(call intermediates-dir-for,SHARED_LIBRARIES,$(l),$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross)))) # Re-export requested headers from static libraries. export_include_deps += $(strip \ $(foreach l,$(LOCAL_EXPORT_STATIC_LIBRARY_HEADERS), \ $(call intermediates-dir-for,STATIC_LIBRARIES,$(l),$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross))/export_includes)) $(call intermediates-dir-for,STATIC_LIBRARIES,$(l),$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross)))) # Re-export requested headers from header libraries. export_include_deps += $(strip \ $(foreach l,$(LOCAL_EXPORT_HEADER_LIBRARY_HEADERS), \ $(call intermediates-dir-for,HEADER_LIBRARIES,$(l),$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross))/export_includes)) $(export_includes): PRIVATE_REEXPORTED_INCLUDES := $(export_include_deps) # By adding $(my_generated_sources) it makes sure the headers get generated # before any dependent source files get compiled. $(export_includes) : $(my_export_c_include_deps) $(my_generated_sources) $(export_include_deps) $(LOCAL_EXPORT_C_INCLUDE_DEPS) @echo Export includes file: $< -- $@ $(hide) mkdir -p $(dir $@) && rm -f $@.tmp && touch $@.tmp ifdef export_cflags $(hide) echo "$(PRIVATE_EXPORT_CFLAGS)" >>$@.tmp endif ifdef export_include_deps $(hide) for f in $(PRIVATE_REEXPORTED_INCLUDES); do \ cat $$f >> $@.tmp; \ done endif $(hide) if cmp -s $@.tmp $@ ; then \ rm $@.tmp ; \ else \ mv $@.tmp $@ ; \ fi export_cflags := # Kati adds restat=1 to ninja. GNU make does nothing for this. .KATI_RESTAT: $(export_includes) # Make sure export_includes gets generated when you are running mm/mmm $(LOCAL_BUILT_MODULE) : | $(export_includes) $(call intermediates-dir-for,HEADER_LIBRARIES,$(l),$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross)))) ifneq ($(strip $(my_export_c_include_dirs)$(export_include_deps)),) EXPORTS_LIST := $(EXPORTS_LIST) $(intermediates) EXPORTS.$(intermediates).FLAGS := $(foreach d,$(my_export_c_include_dirs),-I $(d)) EXPORTS.$(intermediates).REEXPORT := $(export_include_deps) EXPORTS.$(intermediates).DEPS := $(my_export_c_include_deps) $(my_generated_sources) $(LOCAL_EXPORT_C_INCLUDE_DEPS) endif ifneq (,$(filter-out $(LOCAL_PATH)/%,$(my_export_c_include_dirs))) my_soong_problems += non_local__export_c_include_dirs Loading
core/cc_prebuilt_internal.mk +3 −12 Original line number Diff line number Diff line Loading @@ -75,18 +75,9 @@ else # my_strip_module not true built_module := $(LOCAL_BUILT_MODULE) ifdef prebuilt_module_is_a_library export_includes := $(intermediates)/export_includes export_cflags := $(foreach d,$(LOCAL_EXPORT_C_INCLUDE_DIRS),-I $(d)) $(export_includes): PRIVATE_EXPORT_CFLAGS := $(export_cflags) $(export_includes): $(LOCAL_EXPORT_C_INCLUDE_DEPS) @echo Export includes file: $< -- $@ $(hide) mkdir -p $(dir $@) && rm -f $@ ifdef export_cflags $(hide) echo "$(PRIVATE_EXPORT_CFLAGS)" >$@ else $(hide) touch $@ endif export_cflags := EXPORTS_LIST := $(EXPORTS_LIST) $(intermediates) EXPORTS.$(intermediates).FLAGS := $(foreach d,$(LOCAL_EXPORT_C_INCLUDE_DIRS),-I $(d)) EXPORTS.$(intermediates).DEPS := $(LOCAL_EXPORT_C_INCLUDE_DEPS) include $(BUILD_SYSTEM)/allowed_ndk_types.mk Loading
core/definitions.mk +1 −1 Original line number Diff line number Diff line Loading @@ -1107,7 +1107,7 @@ endef ########################################################### define c-includes $(addprefix -I , $(PRIVATE_C_INCLUDES)) \ $$(cat $(PRIVATE_IMPORT_INCLUDES))\ $(foreach i,$(PRIVATE_IMPORTED_INCLUDES),$(EXPORTS.$(i)))\ $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),,\ $(addprefix -I ,\ $(filter-out $(PRIVATE_C_INCLUDES), \ Loading
core/main.mk +21 −0 Original line number Diff line number Diff line Loading @@ -972,6 +972,27 @@ ifdef link_type_error $(error exiting from previous errors) endif # ------------------------------------------------------------------- # Handle exported/imported includes # Recursively calculate flags $(foreach export,$(EXPORTS_LIST), \ $(eval EXPORTS.$$(export) = $$(EXPORTS.$(export).FLAGS) \ $(foreach dep,$(EXPORTS.$(export).REEXPORT),$$(EXPORTS.$(dep))))) # Recursively calculate dependencies $(foreach export,$(EXPORTS_LIST), \ $(eval EXPORT_DEPS.$$(export) = $$(EXPORTS.$(export).DEPS) \ $(foreach dep,$(EXPORTS.$(export).REEXPORT),$$(EXPORT_DEPS.$(dep))))) # Converts the recursive variables to simple variables so that we don't have to # evaluate them for every .o rule $(foreach export,$(EXPORTS_LIST),$(eval EXPORTS.$$(export) := $$(strip $$(EXPORTS.$$(export))))) $(foreach export,$(EXPORTS_LIST),$(eval EXPORT_DEPS.$$(export) := $$(sort $$(EXPORT_DEPS.$$(export))))) # Add dependencies $(foreach export,$(EXPORTS_LIST),$(eval $(call add-dependency,$$(EXPORTS.$$(export).USERS),$$(EXPORT_DEPS.$$(export))))) # ------------------------------------------------------------------- # Figure out our module sets. # Loading