CMakeLists.txt 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  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. )
  10. if (STATIC_LIBRARY)
  11. set(ch_source_files "${ch_source_files}"
  12. ../ChakraCore/TestHooks.cpp
  13. )
  14. endif()
  15. add_executable (ch ${ch_source_files})
  16. set_target_properties(ch
  17. PROPERTIES
  18. POSITION_INDEPENDENT_CODE True
  19. )
  20. include_directories(..)
  21. target_include_directories (ch
  22. PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
  23. ../ChakraCore
  24. ../../lib/Common
  25. ../../lib/Jsrt
  26. ../../lib/Runtime
  27. ../../lib/Parser
  28. )
  29. if(STATIC_LIBRARY)
  30. if(CC_TARGET_OS_ANDROID OR CC_TARGET_OS_LINUX)
  31. set(LINKER_START_GROUP -Wl,--start-group)
  32. set(LINKER_END_GROUP -Wl,--end-group -static-libstdc++)
  33. elseif(CC_TARGET_OS_OSX)
  34. set(LINKER_START_GROUP -Wl,-force_load,)
  35. endif()
  36. if (NOT CC_TARGET_OS_ANDROID)
  37. set(LINKER_END_GROUP
  38. "${LINKER_END_GROUP}"
  39. pthread
  40. )
  41. endif()
  42. # common link deps
  43. set(lib_target "${lib_target}"
  44. -Wl,-undefined,error
  45. ${LINKER_START_GROUP}
  46. Chakra.Pal
  47. Chakra.Common.Core
  48. Chakra.Jsrt
  49. ${LINKER_END_GROUP}
  50. dl
  51. ${ICULIB}
  52. )
  53. if(CC_TARGET_OS_OSX)
  54. set(lib_target "${lib_target}"
  55. "-framework CoreFoundation"
  56. "-framework Security"
  57. )
  58. endif() # Linux ?
  59. else() # // shared library below
  60. set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fPIE")
  61. if(CC_TARGET_OS_ANDROID OR CC_TARGET_OS_LINUX)
  62. set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie") # osx clang sets this by default
  63. endif()
  64. set(lib_target
  65. PRIVATE Chakra.Pal
  66. PRIVATE Chakra.Common.Codex.Singular
  67. PRIVATE Chakra.Runtime.PlatformAgnostic.Singular
  68. )
  69. endif()
  70. if(CC_TARGET_OS_ANDROID OR CC_TARGET_OS_LINUX)
  71. set(lib_target "${lib_target}"
  72. -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/ch.version
  73. )
  74. elseif(CC_TARGET_OS_OSX)
  75. if(CC_TARGETS_X86)
  76. set(lib_target "${lib_target} -arch i386")
  77. elseif(CC_TARGETS_ARM)
  78. set(lib_target "${lib_target} -arch arm")
  79. endif()
  80. endif()
  81. target_link_libraries (ch ${lib_target})
  82. if(NOT CC_XCODE_PROJECT)
  83. # Add a post build event to the ch target
  84. # which executes a command to copy ch to
  85. # BuildLinux for convenience
  86. add_custom_command(TARGET ch POST_BUILD
  87. COMMAND ${CMAKE_COMMAND} -E copy_if_different
  88. "${CHAKRACORE_BINARY_DIR}/bin/ch/ch"
  89. ${CHAKRACORE_BINARY_DIR}/)
  90. endif()