Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CXX Usage Modifications #754

Merged
merged 6 commits into from
Jun 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
24 changes: 15 additions & 9 deletions makefiles/instance/rules.mk
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,12 @@ endif

OBJ_FILES_TO_LINK = $(strip $(addprefix $(THEOS_OBJ_DIR)/,$(OBJ_FILES)) $(call __schema_var_all,$(THEOS_CURRENT_INSTANCE)_,OBJ_FILES) $(SUBPROJECT_OBJ_FILES))
_OBJ_DIR_STAMPS = $(sort $(foreach o,$(filter $(THEOS_OBJ_DIR)%,$(OBJ_FILES_TO_LINK)),$(dir $o).stamp))
ifneq ($(OBJ_FILES_TO_LINK),)
_THEOS_CXX_FILE_TYPES = .mm .mii .cc .cp .cxx .cpp .ii .xm .xmi
ifneq ($(strip $(foreach type,$(_THEOS_CXX_FILE_TYPES),$(findstring $(type),$(OBJ_FILES_TO_LINK)))),)
TARGET_LD = $(TARGET_CXX)
endif
endif

# If we have any Objective-C objects, link Foundation and libobjc.
ifneq ($(_OBJC_FILE_COUNT)$(_SWIFT_FILE_COUNT),00)
Expand Down Expand Up @@ -277,11 +283,11 @@ endif

$(THEOS_OBJ_DIR)/%.m.$(_THEOS_OBJ_FILE_TAG).o: %.m
$(ECHO_NOTHING)mkdir -p $(dir $@)$(ECHO_END)
$(ECHO_COMPILING)$(ECHO_UNBUFFERED)$(TARGET_CXX) -x objective-c -c $(_THEOS_INTERNAL_IFLAGS_C) $(ALL_DEPFLAGS) $(ALL_CFLAGS) $(ALL_OBJCFLAGS) $< -o $@$(ECHO_END)
$(ECHO_COMPILING)$(ECHO_UNBUFFERED)$(TARGET_CC) -x objective-c -c $(_THEOS_INTERNAL_IFLAGS_C) $(ALL_DEPFLAGS) $(ALL_CFLAGS) $(ALL_OBJCFLAGS) $< -o $@$(ECHO_END)

$(THEOS_OBJ_DIR)/%.mi.$(_THEOS_OBJ_FILE_TAG).o: %.mi
$(ECHO_NOTHING)mkdir -p $(dir $@)$(ECHO_END)
$(ECHO_COMPILING)$(ECHO_UNBUFFERED)$(TARGET_CXX) -x objective-c-cpp-output -c $(_THEOS_INTERNAL_IFLAGS_C) $(ALL_DEPFLAGS) $(ALL_CFLAGS) $(ALL_OBJCFLAGS) $< -o $@$(ECHO_END)
$(ECHO_COMPILING)$(ECHO_UNBUFFERED)$(TARGET_CC) -x objective-c-cpp-output -c $(_THEOS_INTERNAL_IFLAGS_C) $(ALL_DEPFLAGS) $(ALL_CFLAGS) $(ALL_OBJCFLAGS) $< -o $@$(ECHO_END)

$(THEOS_OBJ_DIR)/%.mm.$(_THEOS_OBJ_FILE_TAG).o: %.mm
$(ECHO_NOTHING)mkdir -p $(dir $@)$(ECHO_END)
Expand All @@ -293,19 +299,19 @@ $(THEOS_OBJ_DIR)/%.mii.$(_THEOS_OBJ_FILE_TAG).o: %.mii

$(THEOS_OBJ_DIR)/%.c.$(_THEOS_OBJ_FILE_TAG).o: %.c
$(ECHO_NOTHING)mkdir -p $(dir $@)$(ECHO_END)
$(ECHO_COMPILING)$(ECHO_UNBUFFERED)$(TARGET_CXX) -x c -c $(_THEOS_INTERNAL_IFLAGS_C) $(ALL_DEPFLAGS) $(ALL_CFLAGS) $< -o $@$(ECHO_END)
$(ECHO_COMPILING)$(ECHO_UNBUFFERED)$(TARGET_CC) -x c -c $(_THEOS_INTERNAL_IFLAGS_C) $(ALL_DEPFLAGS) $(ALL_CFLAGS) $< -o $@$(ECHO_END)

$(THEOS_OBJ_DIR)/%.i.$(_THEOS_OBJ_FILE_TAG).o: %.i
$(ECHO_NOTHING)mkdir -p $(dir $@)$(ECHO_END)
$(ECHO_COMPILING)$(ECHO_UNBUFFERED)$(TARGET_CXX) -x c-cpp-output -c $(_THEOS_INTERNAL_IFLAGS_C) $(ALL_DEPFLAGS) $(ALL_CFLAGS) $< -o $@$(ECHO_END)
$(ECHO_COMPILING)$(ECHO_UNBUFFERED)$(TARGET_CC) -x c-cpp-output -c $(_THEOS_INTERNAL_IFLAGS_C) $(ALL_DEPFLAGS) $(ALL_CFLAGS) $< -o $@$(ECHO_END)

$(THEOS_OBJ_DIR)/%.s.$(_THEOS_OBJ_FILE_TAG).o: %.s
$(ECHO_NOTHING)mkdir -p $(dir $@)$(ECHO_END)
$(ECHO_COMPILING)$(ECHO_UNBUFFERED)$(TARGET_CXX) -x assembler-with-cpp -c $(_THEOS_INTERNAL_IFLAGS_C) $(ALL_DEPFLAGS) $(ALL_CFLAGS) $< -o $@$(ECHO_END)
$(ECHO_COMPILING)$(ECHO_UNBUFFERED)$(TARGET_CC) -x assembler-with-cpp -c $(_THEOS_INTERNAL_IFLAGS_C) $(ALL_DEPFLAGS) $(ALL_CFLAGS) $< -o $@$(ECHO_END)

$(THEOS_OBJ_DIR)/%.S.$(_THEOS_OBJ_FILE_TAG).o: %.S
$(ECHO_NOTHING)mkdir -p $(dir $@)$(ECHO_END)
$(ECHO_COMPILING)$(ECHO_UNBUFFERED)$(TARGET_CXX) -x assembler-with-cpp -c $(_THEOS_INTERNAL_IFLAGS_C) $(ALL_DEPFLAGS) $(ALL_CFLAGS) $< -o $@$(ECHO_END)
$(ECHO_COMPILING)$(ECHO_UNBUFFERED)$(TARGET_CC) -x assembler-with-cpp -c $(_THEOS_INTERNAL_IFLAGS_C) $(ALL_DEPFLAGS) $(ALL_CFLAGS) $< -o $@$(ECHO_END)

$(THEOS_OBJ_DIR)/%.cc.$(_THEOS_OBJ_FILE_TAG).o: %.cc
$(ECHO_NOTHING)mkdir -p $(dir $@)$(ECHO_END)
Expand Down Expand Up @@ -376,7 +382,7 @@ $(THEOS_OBJ_DIR)/%.x.m: %.x

$(THEOS_OBJ_DIR)/%.x.$(_THEOS_OBJ_FILE_TAG).o: %.x $(THEOS_OBJ_DIR)/%.x.m
$(ECHO_NOTHING)mkdir -p $(dir $@)$(ECHO_END)
$(ECHO_COMPILING)$(ECHO_UNBUFFERED)$(TARGET_CXX) -x objective-c -c -I"$(call __clean_pwd,$(dir $<))" $(_THEOS_INTERNAL_IFLAGS_C) $(ALL_DEPFLAGS) $(ALL_CFLAGS) $(ALL_OBJCFLAGS) $(THEOS_OBJ_DIR)/$<.m -o $@$(ECHO_END)
$(ECHO_COMPILING)$(ECHO_UNBUFFERED)$(TARGET_CC) -x objective-c -c -I"$(call __clean_pwd,$(dir $<))" $(_THEOS_INTERNAL_IFLAGS_C) $(ALL_DEPFLAGS) $(ALL_CFLAGS) $(ALL_OBJCFLAGS) $(THEOS_OBJ_DIR)/$<.m -o $@$(ECHO_END)
ifeq ($(KEEP_LOGOS_INTERMEDIATES), $(_THEOS_TRUE))
.PRECIOUS: $(THEOS_OBJ_DIR)/%.x.m
else
Expand All @@ -398,12 +404,12 @@ endif

$(THEOS_OBJ_DIR)/%.mi: %.xi
$(ECHO_NOTHING)mkdir -p $(dir $@)$(ECHO_END)
$(ECHO_PREPROCESSING)$(ECHO_UNBUFFERED)$(TARGET_CXX) -x objective-c -E -I"$(call __clean_pwd,$(dir $<))" $(_THEOS_INTERNAL_IFLAGS_C) $(ALL_DEPFLAGS) $(ALL_PFLAGS) $(PREPROCESS_ARCH_FLAGS) $(ALL_OBJCFLAGS) $< > $(THEOS_OBJ_DIR)/$<.pre && $(THEOS_BIN_PATH)/logos.pl $(ALL_LOGOSFLAGS) $(THEOS_OBJ_DIR)/$<.pre > $(THEOS_OBJ_DIR)/$<.mi $(ECHO_END)
$(ECHO_PREPROCESSING)$(ECHO_UNBUFFERED)$(TARGET_CC) -x objective-c -E -I"$(call __clean_pwd,$(dir $<))" $(_THEOS_INTERNAL_IFLAGS_C) $(ALL_DEPFLAGS) $(ALL_PFLAGS) $(PREPROCESS_ARCH_FLAGS) $(ALL_OBJCFLAGS) $< > $(THEOS_OBJ_DIR)/$<.pre && $(THEOS_BIN_PATH)/logos.pl $(ALL_LOGOSFLAGS) $(THEOS_OBJ_DIR)/$<.pre > $(THEOS_OBJ_DIR)/$<.mi $(ECHO_END)
$(ECHO_NOTHING)rm $(THEOS_OBJ_DIR)/$<.pre$(ECHO_END)

$(THEOS_OBJ_DIR)/%.xi.$(_THEOS_OBJ_FILE_TAG).o: %.xi $(THEOS_OBJ_DIR)/%.mi
$(ECHO_NOTHING)mkdir -p $(dir $@)$(ECHO_END)
$(ECHO_COMPILING)$(ECHO_UNBUFFERED)$(TARGET_CXX) -x objective-c -c $(ALL_CFLAGS) $(ALL_OBJCFLAGS) $(THEOS_OBJ_DIR)/$<.mi -o $@$(ECHO_END)
$(ECHO_COMPILING)$(ECHO_UNBUFFERED)$(TARGET_CC) -x objective-c -c $(ALL_CFLAGS) $(ALL_OBJCFLAGS) $(THEOS_OBJ_DIR)/$<.mi -o $@$(ECHO_END)
ifneq ($(KEEP_LOGOS_INTERMEDIATES), $(_THEOS_TRUE))
$(ECHO_NOTHING)rm $(THEOS_OBJ_DIR)/$<.mi$(ECHO_END)
endif
Expand Down
2 changes: 1 addition & 1 deletion makefiles/targets/Linux/linux.mk
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ endif

TARGET_CC ?= $(CROSS_COMPILE)gcc
TARGET_CXX ?= $(CROSS_COMPILE)g++
TARGET_LD ?= $(CROSS_COMPILE)g++
TARGET_LD ?= $(TARGET_CC)
TARGET_STRIP ?= $(CROSS_COMPILE)strip
TARGET_STRIP_FLAGS ?=
TARGET_CODESIGN_ALLOCATE ?=
Expand Down
2 changes: 1 addition & 1 deletion makefiles/targets/Windows/cygwin.mk
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ endif

TARGET_CC ?= $(CROSS_COMPILE)gcc
TARGET_CXX ?= $(CROSS_COMPILE)g++
TARGET_LD ?= $(CROSS_COMPILE)g++
TARGET_LD ?= $(TARGET_CC)
TARGET_STRIP ?= $(CROSS_COMPILE)strip
TARGET_STRIP_FLAGS ?=
TARGET_CODESIGN_ALLOCATE ?=
Expand Down
2 changes: 1 addition & 1 deletion makefiles/targets/_common/darwin_head.mk
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ endif

TARGET_CC ?= $(call __target_simplify,TARGET_CC,$(call __invocation,$(_THEOS_TARGET_CC)))
TARGET_CXX ?= $(call __target_simplify,TARGET_CXX,$(call __invocation,$(_THEOS_TARGET_CXX)))
TARGET_LD ?= $(call __target_simplify,TARGET_LD,$(call __invocation,$(_THEOS_TARGET_CXX)))
TARGET_LD ?= $(call __target_simplify,TARGET_LD,$(call __invocation,$(_THEOS_TARGET_CC)))
TARGET_LIPO ?= $(call __target_simplify,TARGET_LIPO,$(call __invocation,lipo))
TARGET_STRIP ?= $(call __target_simplify,TARGET_STRIP,$(call __invocation,strip))
TARGET_CODESIGN_ALLOCATE ?= $(call __target_simplify,TARGET_CODESIGN_ALLOCATE,$(call __invocation,codesign_allocate))
Expand Down
5 changes: 4 additions & 1 deletion makefiles/targets/_common/darwin_tail.mk
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,10 @@ endif

_THEOS_TARGET_CFLAGS := -isysroot "$(ISYSROOT)" $(VERSIONFLAGS) $(_THEOS_TARGET_CC_CFLAGS)
_THEOS_TARGET_CCFLAGS := $(_TARGET_LIBCPP_CCFLAGS)
_THEOS_TARGET_LDFLAGS := -isysroot "$(SYSROOT)" $(VERSIONFLAGS) $(LEGACYFLAGS) -multiply_defined suppress $(_TARGET_LIBCPP_LDFLAGS) $(_TARGET_LIBSWIFT_LDFLAGS)
_THEOS_TARGET_LDFLAGS := -isysroot "$(SYSROOT)" $(VERSIONFLAGS) $(LEGACYFLAGS) -multiply_defined suppress $(_TARGET_LIBSWIFT_LDFLAGS)
ifneq ($(filter %++,$(TARGET_LD)),)
_THEOS_TARGET_LDFLAGS += $(_TARGET_LIBCPP_LDFLAGS)
endif

# if toolchain has prefix, point clang to the ld we want to use
ifneq ($(_THEOS_TARGET_SDK_BIN_PREFIX),)
Expand Down
2 changes: 1 addition & 1 deletion makefiles/targets/_common/iphone.mk
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ endif

ifeq ($(_TARGET_VERSION_GE_12_0),1)
_TARGET_LIBCPP_CCFLAGS := -stdlib=libc++
_TARGET_LIBCPP_LDFLAGS := -stdlib=libc++ -lc++
_TARGET_LIBCPP_LDFLAGS := -stdlib=libc++
endif

ifeq ($(_TARGET_VERSION_GE_12_0),1)
Expand Down