diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 766abf48a77..afcbc75a638 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -167,61 +167,64 @@ target_link_libraries(hermesvmlean_a PUBLIC add_library(hermesvm SHARED dummy.cpp) add_library(hermesvmlean SHARED dummy.cpp) -if(APPLE) - set_target_properties(hermesvm PROPERTIES OUTPUT_NAME hermes) +# Do not build a framework for the test suite. +if(!HERMES_ENABLE_TEST_SUITE) + if(APPLE) + set_target_properties(hermesvm PROPERTIES OUTPUT_NAME hermes) - set_target_properties(hermesvm PROPERTIES - FRAMEWORK TRUE - VERSION ${PROJECT_VERSION} - SOVERSION ${PROJECT_VERSION} - FRAMEWORK_VERSION ${PROJECT_VERSION_MAJOR} - MACOSX_FRAMEWORK_SHORT_VERSION_STRING ${PROJECT_VERSION} - MACOSX_FRAMEWORK_BUNDLE_VERSION ${PROJECT_VERSION} - MACOSX_FRAMEWORK_IDENTIFIER dev.hermesengine.${HERMES_APPLE_TARGET_PLATFORM} - ) + set_target_properties(hermesvm PROPERTIES + FRAMEWORK TRUE + VERSION ${PROJECT_VERSION} + SOVERSION ${PROJECT_VERSION} + FRAMEWORK_VERSION ${PROJECT_VERSION_MAJOR} + MACOSX_FRAMEWORK_SHORT_VERSION_STRING ${PROJECT_VERSION} + MACOSX_FRAMEWORK_BUNDLE_VERSION ${PROJECT_VERSION} + MACOSX_FRAMEWORK_IDENTIFIER dev.hermesengine.${HERMES_APPLE_TARGET_PLATFORM} + ) - add_custom_command(TARGET hermesvm POST_BUILD - COMMAND /usr/libexec/PlistBuddy -c "Add :MinimumOSVersion string ${CMAKE_OSX_DEPLOYMENT_TARGET}" $/Info.plist - ) - - install(TARGETS hermesvm - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib - FRAMEWORK DESTINATION Library/Frameworks/${HERMES_APPLE_TARGET_PLATFORM} - ) + add_custom_command(TARGET hermesvm POST_BUILD + COMMAND /usr/libexec/PlistBuddy -c "Add :MinimumOSVersion string ${CMAKE_OSX_DEPLOYMENT_TARGET}" $/Info.plist + ) - install(DIRECTORY "${PROJECT_SOURCE_DIR}/API/hermes" DESTINATION include - FILES_MATCHING PATTERN "*.h" - PATTERN "synthtest" EXCLUDE) -endif() + install(TARGETS hermesvm + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib + FRAMEWORK DESTINATION Library/Frameworks/${HERMES_APPLE_TARGET_PLATFORM} + ) -# Create debug symbols (dSYM) bundle for Apple platform dylibs/frameworks -# Largely inspired by https://github.com/llvm/llvm-project/blob/6701993027f8af172d7ba697884459261b00e3c6/llvm/cmake/modules/AddLLVM.cmake#L1934-L1986 -if(HERMES_BUILD_APPLE_DSYM) - if(CMAKE_CXX_FLAGS MATCHES "-flto") - set(lto_object ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/hermesvm-lto.o) - set_property(TARGET hermesvm APPEND_STRING PROPERTY LINK_FLAGS " -Wl,-object_path_lto,${lto_object}") + install(DIRECTORY "${PROJECT_SOURCE_DIR}/API/hermes" DESTINATION include + FILES_MATCHING PATTERN "*.h" + PATTERN "synthtest" EXCLUDE) endif() - get_target_property(DSYM_PATH hermesvm LOCATION) - if(HERMES_BUILD_APPLE_FRAMEWORK) - get_filename_component(DSYM_PATH ${DSYM_PATH} DIRECTORY) - endif() - set(DSYM_PATH "${DSYM_PATH}.dSYM") + # Create debug symbols (dSYM) bundle for Apple platform dylibs/frameworks + # Largely inspired by https://github.com/llvm/llvm-project/blob/6701993027f8af172d7ba697884459261b00e3c6/llvm/cmake/modules/AddLLVM.cmake#L1934-L1986 + if(HERMES_BUILD_APPLE_DSYM) + if(CMAKE_CXX_FLAGS MATCHES "-flto") + set(lto_object ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/hermesvm-lto.o) + set_property(TARGET hermesvm APPEND_STRING PROPERTY LINK_FLAGS " -Wl,-object_path_lto,${lto_object}") + endif() - if(NOT CMAKE_DSYMUTIL) - set(CMAKE_DSYMUTIL xcrun dsymutil) - endif() - add_custom_command(TARGET hermesvm POST_BUILD - COMMAND ${CMAKE_DSYMUTIL} $ --out ${DSYM_PATH} - BYPRODUCTS ${DSYM_PATH} - ) + get_target_property(DSYM_PATH hermesvm LOCATION) + if(HERMES_BUILD_APPLE_FRAMEWORK) + get_filename_component(DSYM_PATH ${DSYM_PATH} DIRECTORY) + endif() + set(DSYM_PATH "${DSYM_PATH}.dSYM") + + if(NOT CMAKE_DSYMUTIL) + set(CMAKE_DSYMUTIL xcrun dsymutil) + endif() + add_custom_command(TARGET hermesvm POST_BUILD + COMMAND ${CMAKE_DSYMUTIL} $ --out ${DSYM_PATH} + BYPRODUCTS ${DSYM_PATH} + ) - if(HERMES_BUILD_APPLE_FRAMEWORK) - install(DIRECTORY ${DSYM_PATH} DESTINATION Library/Frameworks/${HERMES_APPLE_TARGET_PLATFORM}) - else() - install(DIRECTORY ${DSYM_PATH} DESTINATION lib) + if(HERMES_BUILD_APPLE_FRAMEWORK) + install(DIRECTORY ${DSYM_PATH} DESTINATION Library/Frameworks/${HERMES_APPLE_TARGET_PLATFORM}) + else() + install(DIRECTORY ${DSYM_PATH} DESTINATION lib) + endif() endif() endif()