CMakeLists.txt 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. add_library (ChakraCore SHARED
  2. ChakraCoreShared.cpp
  3. ConfigParserExternals.cpp
  4. TestHooks.cpp
  5. )
  6. target_include_directories (
  7. ChakraCore PUBLIC
  8. ${CMAKE_CURRENT_SOURCE_DIR}
  9. ${CHAKRACORE_SOURCE_DIR}/lib/Backend
  10. ${CHAKRACORE_SOURCE_DIR}/lib/Common
  11. ${CHAKRACORE_SOURCE_DIR}/lib/Runtime
  12. ${CHAKRACORE_SOURCE_DIR}/lib/Runtime/ByteCode
  13. ${CHAKRACORE_SOURCE_DIR}/lib/Parser
  14. ${CHAKRACORE_SOURCE_DIR}/lib/Jsrt
  15. ${wasm_includes}
  16. "-fvisibility=hidden"
  17. )
  18. #
  19. # Link step for the ChakraCore shared library
  20. #
  21. # External libraries we link with are the following:
  22. # pthread: For threading
  23. # stdc++/gcc_s: C++ runtime code
  24. # dl: For shared library loading related functions
  25. #
  26. if(CC_TARGET_OS_ANDROID OR CC_TARGET_OS_LINUX)
  27. set(LINKER_START_GROUP
  28. -fPIC
  29. -Wl,--start-group
  30. -Wl,--whole-archive
  31. )
  32. set(LINKER_END_GROUP
  33. -Wl,--no-whole-archive
  34. -Wl,--end-group
  35. -static-libstdc++
  36. )
  37. elseif(CC_TARGET_OS_OSX)
  38. set(LINKER_START_GROUP -Wl,-force_load,)
  39. endif()
  40. # common link deps
  41. set(lib_target "${lib_target}"
  42. -Wl,-undefined,error
  43. ${LINKER_START_GROUP}
  44. ChakraCoreStatic
  45. ${ICU_LIBRARIES}
  46. ${LINKER_END_GROUP}
  47. pthread
  48. dl
  49. )
  50. if(CC_TARGET_OS_ANDROID OR CC_TARGET_OS_LINUX)
  51. set(lib_target "${lib_target}"
  52. -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/libChakraCoreLib.version
  53. ${LINKER_REDUCED_MEMORY}
  54. )
  55. elseif(CC_TARGET_OS_OSX)
  56. if(CC_TARGETS_X86)
  57. set(lib_target "${lib_target} -arch i386")
  58. elseif(CC_TARGETS_ARM)
  59. set(lib_target "${lib_target} -arch arm")
  60. endif()
  61. endif()
  62. target_link_libraries (ChakraCore
  63. ${lib_target}
  64. ${CC_LTO_ENABLED}
  65. )
  66. if(NOT CC_XCODE_PROJECT)
  67. # Post build step to copy the built shared library
  68. # to out/{BUILD_TYPE}/ (or whatever the CMakeBuildDir is)
  69. add_custom_command(TARGET ChakraCore POST_BUILD
  70. COMMAND ${CMAKE_COMMAND} -E copy_if_different
  71. "${CHAKRACORE_BINARY_DIR}/bin/ChakraCore/libChakraCore.${DYN_LIB_EXT}"
  72. ${CHAKRACORE_BINARY_DIR}/
  73. )
  74. endif()