CMakeLists.txt 3.2 KB

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