CMakeLists.txt 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. add_compile_options(-fPIC)
  2. if(BuildJIT)
  3. set(chakra_backend_objects $<TARGET_OBJECTS:Chakra.Backend>)
  4. endif()
  5. if(CC_TARGETS_AMD64)
  6. set(wasm_objects $<TARGET_OBJECTS:Chakra.WasmReader>)
  7. set(wasm_includes ${CHAKRACORE_SOURCE_DIR}/lib/WasmReader)
  8. endif()
  9. if(CAN_BUILD_WABT)
  10. set(wabt_objects $<TARGET_OBJECTS:libwabt>)
  11. set(wabt_includes ${CHAKRACORE_SOURCE_DIR}/lib/wabt)
  12. endif()
  13. if (USE_LTTNG)
  14. set(lttng_objects $<TARGET_OBJECTS:Chakra.LTTng>)
  15. endif()
  16. add_library (ChakraCoreStatic STATIC
  17. ChakraCoreStatic.cpp
  18. $<TARGET_OBJECTS:Chakra.Pal>
  19. $<TARGET_OBJECTS:Chakra.Common.Core>
  20. $<TARGET_OBJECTS:Chakra.Jsrt>
  21. $<TARGET_OBJECTS:Chakra.Jsrt.Core>
  22. ${chakra_backend_objects}
  23. $<TARGET_OBJECTS:Chakra.Common.Common>
  24. $<TARGET_OBJECTS:Chakra.Common.Codex>
  25. $<TARGET_OBJECTS:Chakra.Common.DataStructures>
  26. $<TARGET_OBJECTS:Chakra.Common.Exceptions>
  27. $<TARGET_OBJECTS:Chakra.Common.Memory>
  28. $<TARGET_OBJECTS:Chakra.Common.Util>
  29. $<TARGET_OBJECTS:Chakra.Runtime.Base>
  30. $<TARGET_OBJECTS:Chakra.Runtime.ByteCode>
  31. $<TARGET_OBJECTS:Chakra.Runtime.Debug>
  32. $<TARGET_OBJECTS:Chakra.Runtime.Language>
  33. $<TARGET_OBJECTS:Chakra.Runtime.Library>
  34. $<TARGET_OBJECTS:Chakra.Runtime.Math>
  35. $<TARGET_OBJECTS:Chakra.Runtime.Types>
  36. $<TARGET_OBJECTS:Chakra.Runtime.PlatformAgnostic>
  37. $<TARGET_OBJECTS:Chakra.Parser>
  38. $<TARGET_OBJECTS:Chakra.SCACore>
  39. ${wasm_objects}
  40. ${wabt_objects}
  41. ${lttng_objects}
  42. )
  43. if(USE_LTTNG)
  44. target_link_libraries(ChakraCoreStatic
  45. -llttng-ust
  46. -ldl
  47. )
  48. endif()
  49. if(CC_TARGET_OS_OSX)
  50. target_link_libraries(ChakraCoreStatic
  51. "-framework CoreFoundation"
  52. "-framework Security"
  53. )
  54. else()
  55. if (NOT CC_TARGET_OS_ANDROID)
  56. set(PTHREAD "pthread")
  57. endif()
  58. target_link_libraries(ChakraCoreStatic
  59. ${PTHREAD}
  60. "dl"
  61. )
  62. endif()
  63. target_include_directories (
  64. ChakraCoreStatic PUBLIC
  65. ${CMAKE_CURRENT_SOURCE_DIR}
  66. ${CHAKRACORE_SOURCE_DIR}/lib/Backend
  67. ${CHAKRACORE_SOURCE_DIR}/lib/Common
  68. ${CHAKRACORE_SOURCE_DIR}/lib/Runtime
  69. ${CHAKRACORE_SOURCE_DIR}/lib/Runtime/ByteCode
  70. ${CHAKRACORE_SOURCE_DIR}/lib/Parser
  71. ${CHAKRACORE_SOURCE_DIR}/lib/Jsrt
  72. ${CHAKRACORE_SOURCE_DIR}/lib/SCACore
  73. ${wasm_includes}
  74. ${wabt_includes}
  75. )
  76. if(BuildJIT)
  77. add_subdirectory (Backend)
  78. endif()
  79. add_subdirectory (Common)
  80. add_subdirectory (Parser)
  81. add_subdirectory (SCACore)
  82. add_subdirectory (Runtime)
  83. add_subdirectory (Jsrt)
  84. if (CC_TARGETS_AMD64)
  85. add_subdirectory (WasmReader)
  86. set(BUILD_TESTS OFF)
  87. set(RUN_BISON OFF)
  88. set(RUN_RE2C OFF)
  89. endif()
  90. if(CAN_BUILD_WABT)
  91. add_subdirectory (wabt)
  92. endif()
  93. if(NOT CC_XCODE_PROJECT)
  94. add_custom_command(TARGET ChakraCoreStatic POST_BUILD
  95. COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/include"
  96. COMMAND ${CMAKE_COMMAND} -E copy_if_different
  97. "${CMAKE_CURRENT_SOURCE_DIR}/Jsrt/ChakraCore.h"
  98. "${CMAKE_BINARY_DIR}/include"
  99. COMMAND ${CMAKE_COMMAND} -E copy_if_different
  100. "${CMAKE_CURRENT_SOURCE_DIR}/Jsrt/ChakraCommon.h"
  101. "${CMAKE_BINARY_DIR}/include"
  102. COMMAND ${CMAKE_COMMAND} -E copy_if_different
  103. "${CMAKE_CURRENT_SOURCE_DIR}/Jsrt/ChakraDebug.h"
  104. "${CMAKE_BINARY_DIR}/include"
  105. COMMAND ${CMAKE_COMMAND} -E copy_if_different
  106. "${CMAKE_CURRENT_SOURCE_DIR}/Common/ChakraCoreVersion.h"
  107. "${CMAKE_BINARY_DIR}/include"
  108. )
  109. endif(NOT CC_XCODE_PROJECT)
  110. if (EMBED_ICU)
  111. # Declare ICU dependencies in bulk.
  112. # TODO Not the most idiomatic solution, need to understand if all of those
  113. # libraries needed to depend on it
  114. add_dependencies(Chakra.Backend ${EMBEDDED_ICU_TARGET})
  115. add_dependencies(Chakra.Jsrt ${EMBEDDED_ICU_TARGET})
  116. add_dependencies(Chakra.Jsrt.Core ${EMBEDDED_ICU_TARGET})
  117. add_dependencies(Chakra.Parser ${EMBEDDED_ICU_TARGET})
  118. add_dependencies(Chakra.Runtime.Base ${EMBEDDED_ICU_TARGET})
  119. add_dependencies(Chakra.Runtime.ByteCode ${EMBEDDED_ICU_TARGET})
  120. add_dependencies(Chakra.Runtime.Debug ${EMBEDDED_ICU_TARGET})
  121. add_dependencies(Chakra.Runtime.Library ${EMBEDDED_ICU_TARGET})
  122. add_dependencies(Chakra.Runtime.Math ${EMBEDDED_ICU_TARGET})
  123. add_dependencies(Chakra.Runtime.Language ${EMBEDDED_ICU_TARGET})
  124. add_dependencies(Chakra.Runtime.PlatformAgnostic ${EMBEDDED_ICU_TARGET})
  125. add_dependencies(Chakra.Runtime.Types ${EMBEDDED_ICU_TARGET})
  126. add_dependencies(Chakra.SCACore ${EMBEDDED_ICU_TARGET})
  127. add_dependencies(Chakra.WasmReader ${EMBEDDED_ICU_TARGET})
  128. endif()