Files
swift-mirror/stdlib/public/runtime/CMakeLists.txt
Michael Gottesman 8437819b5a [CMake] Revert recent changes.
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 commit e6ce2ff388.
This reverts commit e8645f3750.
This reverts commit 89b038ea7e.
This reverts commit 497cac64d9.
This reverts commit 953ad094da.
This reverts commit e096d1c033.

rdar://30549345
2017-02-15 22:26:06 -08:00

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})