CMakeLists.txt 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. cmake_minimum_required(VERSION 3.2)
  2. project (CHAKRACORE)
  3. function(clr_unknown_arch)
  4. if (WIN32)
  5. message(FATAL_ERROR "Only AMD64, ARM and I386 are supported")
  6. else()
  7. message(FATAL_ERROR "Only AMD64 and ARM are supported")
  8. endif()
  9. endfunction()
  10. if(CMAKE_SYSTEM_NAME STREQUAL Linux)
  11. set(CLR_CMAKE_PLATFORM_UNIX 1)
  12. if(CMAKE_SYSTEM_PROCESSOR STREQUAL x86_64)
  13. set(CLR_CMAKE_PLATFORM_UNIX_TARGET_AMD64 1)
  14. else()
  15. clr_unknown_arch()
  16. endif()
  17. set(CLR_CMAKE_PLATFORM_LINUX 1)
  18. elseif(CMAKE_SYSTEM_NAME STREQUAL Darwin)
  19. set(CLR_CMAKE_PLATFORM_UNIX 1)
  20. if(CMAKE_SYSTEM_PROCESSOR STREQUAL x86_64)
  21. set(CLR_CMAKE_PLATFORM_UNIX_TARGET_AMD64 1)
  22. else()
  23. clr_unknown_arch()
  24. endif()
  25. set(CLR_CMAKE_PLATFORM_DARWIN 1)
  26. else()
  27. clr_unknown_arch()
  28. endif()
  29. if(CLR_CMAKE_PLATFORM_UNIX_TARGET_AMD64)
  30. set(CLR_CMAKE_PLATFORM_ARCH_AMD64 1)
  31. endif()
  32. if (CMAKE_CXX_COMPILER_ID STREQUAL AppleClang
  33. OR CMAKE_CXX_COMPILER_ID STREQUAL Clang
  34. OR CMAKE_CXX_COMPILER_ID STREQUAL GNU)
  35. # Color diagnostics for g++ and clang++
  36. add_definitions("-fdiagnostics-color=always")
  37. endif()
  38. if(CLR_CMAKE_PLATFORM_UNIX)
  39. add_definitions(-DPLATFORM_UNIX=1)
  40. if(CLR_CMAKE_PLATFORM_LINUX)
  41. add_definitions(-D__LINUX__=1)
  42. if(CLR_CMAKE_PLATFORM_UNIX_TARGET_AMD64)
  43. message("Detected Linux x86_64")
  44. add_definitions(-DLINUX64)
  45. else()
  46. clr_unknown_arch()
  47. endif(CLR_CMAKE_PLATFORM_UNIX_TARGET_AMD64)
  48. endif(CLR_CMAKE_PLATFORM_LINUX)
  49. if(CMAKE_SYSTEM_PROCESSOR STREQUAL x86_64 OR CMAKE_SYSTEM_PROCESSOR STREQUAL amd64)
  50. set(IS_64BIT_BUILD 1)
  51. add_definitions(-D_M_X64)
  52. endif(CMAKE_SYSTEM_PROCESSOR STREQUAL x86_64 OR CMAKE_SYSTEM_PROCESSOR STREQUAL amd64)
  53. add_definitions("-fms-extensions")
  54. # Disable some warnings
  55. add_definitions("-Wno-tautological-constant-out-of-range-compare")
  56. add_definitions("-D__STDC_WANT_LIB_EXT1__=1")
  57. add_definitions("-std=c++11")
  58. add_definitions("-stdlib=libc++")
  59. add_definitions(
  60. -DPAL_STDCPP_COMPAT=1
  61. -DUNICODE
  62. -D_SAFECRT_USE_CPP_OVERLOADS=1
  63. )
  64. # xplat-todo: revisit these
  65. add_definitions(
  66. -fdelayed-template-parsing
  67. -Wno-microsoft
  68. -Wno-unused-value
  69. -Wno-int-to-void-pointer-cast
  70. -Wno-invalid-offsetof
  71. -Wno-undefined-inline
  72. -Wno-inconsistent-missing-override
  73. -Wno-c++14-extensions
  74. -Wno-macro-redefined
  75. -Wno-ignored-pragmas
  76. -Wno-invalid-token-paste
  77. -Wno-format
  78. -Wno-invalid-noreturn
  79. -Wno-null-arithmetic
  80. -Wno-tautological-undefined-compare
  81. )
  82. endif(CLR_CMAKE_PLATFORM_UNIX)
  83. if(IS_64BIT_BUILD)
  84. add_definitions(
  85. -DBIT64=1
  86. -DSTACK_ALIGN=16
  87. )
  88. endif(IS_64BIT_BUILD)
  89. if(CLR_CMAKE_PLATFORM_UNIX)
  90. add_definitions(-DFEATURE_PAL)
  91. endif(CLR_CMAKE_PLATFORM_UNIX)
  92. include_directories("pal")
  93. include_directories("pal/inc")
  94. include_directories("pal/inc/rt")
  95. include_directories(lib/common)
  96. add_subdirectory (lib)