mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
These changes caused a number of issues: 1. No debug info is emitted when a release-debug info compiler is built. 2. OS X deployment target specification is broken. 3. Swift options were broken without any attempt any recreating that functionality. The specific option in question is --force-optimized-typechecker. Such refactorings should be done in a fashion that does not break existing users and use cases. This reverts commite6ce2ff388. This reverts commite8645f3750. This reverts commit89b038ea7e. This reverts commit497cac64d9. This reverts commit953ad094da. This reverts commite096d1c033. rdar://30549345
236 lines
8.3 KiB
CMake
236 lines
8.3 KiB
CMake
set(swift_runtime_compile_flags ${SWIFT_RUNTIME_CORE_CXX_FLAGS})
|
|
set(swift_runtime_linker_flags ${SWIFT_RUNTIME_CORE_LINK_FLAGS})
|
|
|
|
if(SWIFT_RUNTIME_CLOBBER_FREED_OBJECTS)
|
|
list(APPEND swift_runtime_compile_flags
|
|
"-DSWIFT_RUNTIME_CLOBBER_FREED_OBJECTS=1")
|
|
endif()
|
|
|
|
if(SWIFT_RUNTIME_CRASH_REPORTER_CLIENT)
|
|
list(APPEND swift_runtime_compile_flags
|
|
"-DSWIFT_HAVE_CRASHREPORTERCLIENT=1")
|
|
endif()
|
|
|
|
set(swift_runtime_leaks_sources)
|
|
if(SWIFT_RUNTIME_ENABLE_LEAK_CHECKER)
|
|
list(APPEND swift_runtime_compile_flags
|
|
"-DSWIFT_RUNTIME_ENABLE_LEAK_CHECKER=1")
|
|
set(swift_runtime_leaks_sources Leaks.mm)
|
|
endif()
|
|
|
|
set(section_magic_compile_flags ${swift_runtime_compile_flags})
|
|
|
|
list(APPEND swift_runtime_compile_flags
|
|
"-D__SWIFT_CURRENT_DYLIB=swiftCore")
|
|
|
|
set(swift_runtime_objc_sources
|
|
ErrorObject.mm
|
|
SwiftObject.mm
|
|
SwiftValue.mm
|
|
Remangle.cpp
|
|
Reflection.mm)
|
|
|
|
set(swift_runtime_sources
|
|
AnyHashableSupport.cpp
|
|
Casting.cpp
|
|
CygwinPort.cpp
|
|
Demangle.cpp
|
|
Enum.cpp
|
|
ErrorObjectConstants.cpp
|
|
ErrorObjectNative.cpp
|
|
Errors.cpp
|
|
ErrorDefaultImpls.cpp
|
|
Heap.cpp
|
|
HeapObject.cpp
|
|
ImageInspectionMachO.cpp
|
|
ImageInspectionELF.cpp
|
|
ImageInspectionWin32.cpp
|
|
KnownMetadata.cpp
|
|
Metadata.cpp
|
|
MetadataLookup.cpp
|
|
MutexPThread.cpp
|
|
MutexWin32.cpp
|
|
Once.cpp
|
|
Portability.cpp
|
|
ProtocolConformance.cpp
|
|
RuntimeEntrySymbols.cpp)
|
|
|
|
# Acknowledge that the following sources are known.
|
|
set(LLVM_OPTIONAL_SOURCES
|
|
Remangle.cpp
|
|
swift_sections.S
|
|
MutexPThread.cpp
|
|
MutexWin32.cpp
|
|
CygwinPort.cpp
|
|
ImageInspectionInit.cpp
|
|
ImageInspectionELF.cpp
|
|
ImageInspectionStatic.cpp
|
|
StaticBinaryELF.cpp
|
|
${swift_runtime_sources}
|
|
${swift_runtime_objc_sources}
|
|
${swift_runtime_leaks_sources})
|
|
|
|
set(swift_runtime_library_compile_flags ${swift_runtime_compile_flags})
|
|
list(APPEND swift_runtime_library_compile_flags -DswiftCore_EXPORTS)
|
|
|
|
set(sdk "${SWIFT_HOST_VARIANT_SDK}")
|
|
if(SWIFT_BUILD_STATIC_STDLIB AND "${sdk}" STREQUAL "LINUX")
|
|
list(REMOVE_ITEM swift_runtime_sources ImageInspectionELF.cpp)
|
|
set(static_binary_lnk_file_list)
|
|
string(TOLOWER "${sdk}" lowercase_sdk)
|
|
|
|
# These two libraries are only used with the static swiftcore
|
|
add_library(swiftImageInspectionStatic STATIC
|
|
ImageInspectionStatic.cpp
|
|
StaticBinaryELF.cpp)
|
|
set_target_properties(swiftImageInspectionStatic PROPERTIES
|
|
ARCHIVE_OUTPUT_DIRECTORY "${SWIFTSTATICLIB_DIR}/${lowercase_sdk}")
|
|
|
|
add_library(swiftImageInspectionShared STATIC ImageInspectionELF.cpp)
|
|
set_target_properties(swiftImageInspectionShared PROPERTIES
|
|
ARCHIVE_OUTPUT_DIRECTORY "${SWIFTSTATICLIB_DIR}/${lowercase_sdk}")
|
|
|
|
swift_install_in_component(stdlib
|
|
TARGETS swiftImageInspectionStatic swiftImageInspectionShared
|
|
DESTINATION "lib/swift_static/${lowercase_sdk}")
|
|
|
|
# Generate the static-executable-args.lnk file used for ELF systems (eg linux)
|
|
set(linkfile "${lowercase_sdk}/static-executable-args.lnk")
|
|
add_custom_command_target(swift_static_binary_${sdk}_args
|
|
COMMAND
|
|
"${CMAKE_COMMAND}" -E copy
|
|
"${SWIFT_SOURCE_DIR}/utils/static-executable-args.lnk"
|
|
"${SWIFTSTATICLIB_DIR}/${linkfile}"
|
|
OUTPUT
|
|
"${SWIFTSTATICLIB_DIR}/${linkfile}"
|
|
DEPENDS
|
|
"${SWIFT_SOURCE_DIR}/utils/static-executable-args.lnk")
|
|
|
|
list(APPEND static_binary_lnk_file_list ${swift_static_binary_${sdk}_args})
|
|
swift_install_in_component(stdlib
|
|
FILES "${SWIFTSTATICLIB_DIR}/${linkfile}"
|
|
DESTINATION "lib/swift_static/${lowercase_sdk}")
|
|
add_custom_target(static_binary_magic ALL DEPENDS ${static_binary_lnk_file_list})
|
|
|
|
add_swift_library(swiftImageInspectionShared OBJECT_LIBRARY TARGET_LIBRARY
|
|
ImageInspectionELF.cpp
|
|
C_COMPILE_FLAGS ${swift_runtime_library_compile_flags}
|
|
LINK_FLAGS ${swift_runtime_linker_flags}
|
|
INSTALL_IN_COMPONENT never_install)
|
|
endif()
|
|
|
|
add_swift_library(swiftRuntime OBJECT_LIBRARY TARGET_LIBRARY
|
|
${swift_runtime_sources}
|
|
${swift_runtime_objc_sources}
|
|
${swift_runtime_leaks_sources}
|
|
C_COMPILE_FLAGS ${swift_runtime_library_compile_flags}
|
|
LINK_FLAGS ${swift_runtime_linker_flags}
|
|
INSTALL_IN_COMPONENT never_install)
|
|
|
|
set(ELFISH_SDKS)
|
|
foreach(sdk ${SWIFT_CONFIGURED_SDKS})
|
|
if("${SWIFT_SDK_${sdk}_OBJECT_FORMAT}" STREQUAL "ELF")
|
|
list(APPEND ELFISH_SDKS "${sdk}")
|
|
endif()
|
|
endforeach()
|
|
|
|
add_swift_library(section_magic_loader OBJECT_LIBRARY IS_STDLIB IS_STDLIB_CORE
|
|
ImageInspectionInit.cpp
|
|
C_COMPILE_FLAGS ${section_magic_compile_flags}
|
|
TARGET_SDKS "${ELFISH_SDKS}"
|
|
LINK_FLAGS ${swift_runtime_linker_flags}
|
|
INSTALL_IN_COMPONENT never_install)
|
|
add_swift_library(section_magic_begin OBJECT_LIBRARY IS_STDLIB IS_STDLIB_CORE
|
|
swift_sections.S
|
|
C_COMPILE_FLAGS ${section_magic_compile_flags} "-DSWIFT_BEGIN"
|
|
TARGET_SDKS "${ELFISH_SDKS}"
|
|
LINK_FLAGS ${swift_runtime_linker_flags}
|
|
INSTALL_IN_COMPONENT never_install)
|
|
add_swift_library(section_magic_end OBJECT_LIBRARY IS_STDLIB IS_STDLIB_CORE
|
|
swift_sections.S
|
|
C_COMPILE_FLAGS ${section_magic_compile_flags} "-DSWIFT_END"
|
|
LINK_FLAGS ${swift_runtime_linker_flags}
|
|
TARGET_SDKS "${ELFISH_SDKS}"
|
|
INSTALL_IN_COMPONENT never_install)
|
|
|
|
set(object_target_list)
|
|
foreach(sdk ${ELFISH_SDKS})
|
|
foreach(arch ${SWIFT_SDK_${sdk}_ARCHITECTURES})
|
|
set(arch_subdir "${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${arch}")
|
|
set(arch_suffix "${SWIFT_SDK_${sdk}_LIB_SUBDIR}-${arch}")
|
|
|
|
set(section_magic_loader_obj "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/section_magic_loader-${arch_suffix}.dir/ImageInspectionInit.cpp${CMAKE_C_OUTPUT_EXTENSION}")
|
|
set(section_magic_begin_obj "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/section_magic_begin-${arch_suffix}.dir/swift_sections.S${CMAKE_C_OUTPUT_EXTENSION}")
|
|
set(section_magic_end_obj "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/section_magic_end-${arch_suffix}.dir/swift_sections.S${CMAKE_C_OUTPUT_EXTENSION}")
|
|
|
|
add_custom_command_target(section_magic_${arch_suffix}_begin_object
|
|
COMMAND
|
|
# Merge ImageInspectionInit.o + swift_sections.S(BEGIN) => swift_begin.o
|
|
${CMAKE_LINKER} -r -o "${SWIFTLIB_DIR}/${arch_subdir}/swift_begin.o"
|
|
"${section_magic_begin_obj}" "${section_magic_loader_obj}"
|
|
OUTPUT
|
|
"${SWIFTLIB_DIR}/${arch_subdir}/swift_begin.o"
|
|
DEPENDS
|
|
"${section_magic_begin_obj}"
|
|
"${section_magic_loader_obj}")
|
|
|
|
add_custom_command_target(section_magic_${arch_suffix}_end_object
|
|
COMMAND
|
|
"${CMAKE_COMMAND}" -E copy
|
|
"${section_magic_end_obj}"
|
|
"${SWIFTLIB_DIR}/${arch_subdir}/swift_end.o"
|
|
OUTPUT
|
|
"${SWIFTLIB_DIR}/${arch_subdir}/swift_end.o"
|
|
DEPENDS
|
|
"${section_magic_end_obj}")
|
|
|
|
list(APPEND object_target_list
|
|
"${section_magic_${arch_suffix}_begin_object}"
|
|
"${section_magic_${arch_suffix}_end_object}")
|
|
|
|
swift_install_in_component(stdlib
|
|
FILES
|
|
"${SWIFTLIB_DIR}/${arch_subdir}/swift_begin.o"
|
|
"${SWIFTLIB_DIR}/${arch_subdir}/swift_end.o"
|
|
DESTINATION
|
|
"lib/swift/${arch_subdir}")
|
|
|
|
if(SWIFT_BUILD_STATIC_STDLIB)
|
|
# Static lib versions of swift_begin.o and swift_end.o
|
|
add_custom_command_target(static_section_magic_${arch_suffix}_begin_object
|
|
COMMAND
|
|
"${CMAKE_COMMAND}" -E copy
|
|
"${section_magic_begin_obj}"
|
|
"${SWIFTSTATICLIB_DIR}/${arch_subdir}/swift_begin.o"
|
|
OUTPUT
|
|
"${SWIFTSTATICLIB_DIR}/${arch_subdir}/swift_begin.o"
|
|
DEPENDS
|
|
"${section_magic_begin_obj}")
|
|
|
|
add_custom_command_target(static_section_magic_${arch_suffix}_end_object
|
|
COMMAND
|
|
"${CMAKE_COMMAND}" -E copy
|
|
"${section_magic_end_obj}"
|
|
"${SWIFTSTATICLIB_DIR}/${arch_subdir}/swift_end.o"
|
|
OUTPUT
|
|
"${SWIFTSTATICLIB_DIR}/${arch_subdir}/swift_end.o"
|
|
DEPENDS
|
|
"${section_magic_end_obj}")
|
|
|
|
list(APPEND object_target_list
|
|
"${static_section_magic_${arch_suffix}_begin_object}"
|
|
"${static_section_magic_${arch_suffix}_end_object}")
|
|
|
|
swift_install_in_component(stdlib
|
|
FILES
|
|
"${SWIFTSTATICLIB_DIR}/${arch_subdir}/swift_begin.o"
|
|
"${SWIFTSTATICLIB_DIR}/${arch_subdir}/swift_end.o"
|
|
DESTINATION
|
|
"lib/swift_static/${arch_subdir}")
|
|
endif()
|
|
|
|
endforeach()
|
|
endforeach()
|
|
|
|
add_custom_target(section_magic ALL DEPENDS ${object_target_list})
|