CMakeLists.txt 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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(CLR_CMAKE_PLATFORM_UNIX)
  33. add_definitions(-DPLATFORM_UNIX=1)
  34. if(CLR_CMAKE_PLATFORM_LINUX)
  35. add_definitions(-D__LINUX__=1)
  36. if(CLR_CMAKE_PLATFORM_UNIX_TARGET_AMD64)
  37. message("Detected Linux x86_64")
  38. add_definitions(-DLINUX64)
  39. else()
  40. clr_unknown_arch()
  41. endif(CLR_CMAKE_PLATFORM_UNIX_TARGET_AMD64)
  42. endif(CLR_CMAKE_PLATFORM_LINUX)
  43. if(CMAKE_SYSTEM_PROCESSOR STREQUAL x86_64 OR CMAKE_SYSTEM_PROCESSOR STREQUAL amd64)
  44. set(IS_64BIT_BUILD 1)
  45. add_definitions(-D_M_X64)
  46. endif(CMAKE_SYSTEM_PROCESSOR STREQUAL x86_64 OR CMAKE_SYSTEM_PROCESSOR STREQUAL amd64)
  47. add_definitions("-fms-extensions")
  48. # Disable some warnings
  49. add_definitions("-Wno-tautological-constant-out-of-range-compare")
  50. add_definitions("-D__STDC_WANT_LIB_EXT1__=1")
  51. add_definitions("-std=c++11")
  52. add_definitions("-stdlib=libc++")
  53. add_definitions(
  54. -DPAL_STDCPP_COMPAT=1
  55. -D_SAFECRT_USE_CPP_OVERLOADS=1
  56. )
  57. # xplat-todo: revisit these
  58. add_definitions(
  59. -fdelayed-template-parsing
  60. -Wno-microsoft
  61. -Wno-unused-value
  62. -Wno-int-to-void-pointer-cast
  63. -Wno-invalid-offsetof
  64. -Wno-undefined-inline
  65. -Wno-inconsistent-missing-override
  66. -Wno-c++14-extensions
  67. -Wno-macro-redefined
  68. )
  69. endif(CLR_CMAKE_PLATFORM_UNIX)
  70. if(IS_64BIT_BUILD)
  71. add_definitions(
  72. -DBIT64=1
  73. -DSTACK_ALIGN=16
  74. )
  75. endif(IS_64BIT_BUILD)
  76. include_directories("pal")
  77. include_directories("pal/inc")
  78. include_directories("pal/inc/rt")
  79. include_directories(lib/common)
  80. add_subdirectory (lib)