CMakeLists.txt 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. set(ch_source_files
  2. ch.cpp
  3. ChakraRtInterface.cpp
  4. CodexAssert.cpp
  5. Debugger.cpp
  6. Helpers.cpp
  7. HostConfigFlags.cpp
  8. WScriptJsrt.cpp
  9. RuntimeThreadData.cpp
  10. )
  11. if (STATIC_LIBRARY)
  12. set(ch_source_files "${ch_source_files}"
  13. ../ChakraCore/TestHooks.cpp
  14. )
  15. endif()
  16. add_executable (ch ${ch_source_files})
  17. set_target_properties(ch
  18. PROPERTIES
  19. POSITION_INDEPENDENT_CODE True
  20. )
  21. include_directories(..)
  22. if(CC_TARGETS_AMD64)
  23. set(Wasm_dep ../../lib/WasmReader)
  24. endif()
  25. target_include_directories (ch
  26. PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
  27. ../ChakraCore
  28. ../../lib/Common
  29. ../../lib/Jsrt
  30. ../../lib/Runtime
  31. ../../lib/Parser
  32. ${Wasm_dep}
  33. )
  34. if(STATIC_LIBRARY)
  35. if(CC_TARGET_OS_ANDROID OR CC_TARGET_OS_LINUX)
  36. set(LINKER_START_GROUP -pie -Wl,--start-group)
  37. set(LINKER_END_GROUP -Wl,--end-group)
  38. if (CC_TARGET_OS_LINUX) # do not embed libstdc++ statically on Android
  39. set(LINKER_END_GROUP "${LINKER_END_GROUP} -static-libstdc++")
  40. else()
  41. set(LINKER_END_GROUP "${LINKER_END_GROUP} -llog")
  42. endif()
  43. elseif(CC_TARGET_OS_OSX)
  44. set(LINKER_START_GROUP -Wl,-force_load,)
  45. endif()
  46. if (NOT CC_TARGET_OS_ANDROID)
  47. set(LINKER_END_GROUP
  48. "${LINKER_END_GROUP}"
  49. pthread
  50. )
  51. endif()
  52. # common link deps
  53. set(lib_target "${lib_target}"
  54. -Wl,-undefined,error
  55. ${LINKER_START_GROUP}
  56. ChakraCoreStatic
  57. ${ICULIB}
  58. ${LINKER_END_GROUP}
  59. dl
  60. )
  61. if(CC_TARGET_OS_OSX)
  62. set(lib_target "${lib_target}"
  63. "-framework CoreFoundation"
  64. "-framework Security"
  65. )
  66. elseif (NOT CC_TARGET_OS_ANDROID)
  67. set(lib_target "${lib_target}"
  68. "pthread"
  69. )
  70. endif()
  71. else() # // shared library below
  72. set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fPIE")
  73. if(CC_TARGET_OS_ANDROID OR CC_TARGET_OS_LINUX)
  74. set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie") # osx clang sets this by default
  75. endif()
  76. set(lib_target
  77. PRIVATE Chakra.Pal.Singular
  78. PRIVATE Chakra.Common.Codex.Singular
  79. PRIVATE Chakra.Runtime.PlatformAgnostic.Singular
  80. )
  81. endif()
  82. if(CC_TARGET_OS_ANDROID OR CC_TARGET_OS_LINUX)
  83. set(lib_target "${lib_target}"
  84. -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/ch.version
  85. ${LINKER_REDUCED_MEMORY}
  86. )
  87. elseif(CC_TARGET_OS_OSX)
  88. if(CC_TARGETS_X86)
  89. set(lib_target "${lib_target} -arch i386")
  90. elseif(CC_TARGETS_ARM)
  91. set(lib_target "${lib_target} -arch arm")
  92. endif()
  93. endif()
  94. target_link_libraries (ch
  95. ${lib_target}
  96. ${CC_LTO_ENABLED}
  97. )
  98. if(NOT CC_XCODE_PROJECT)
  99. # Add a post build event to the ch target
  100. # which executes a command to copy ch to
  101. # out/{BUILD_TYPE}/ for convenience
  102. add_custom_command(TARGET ch POST_BUILD
  103. COMMAND ${CMAKE_COMMAND} -E copy_if_different
  104. "${CHAKRACORE_BINARY_DIR}/bin/ch/ch"
  105. ${CHAKRACORE_BINARY_DIR}/)
  106. endif()