Mercurial > hg > CbC > CbC_llvm
comparison CMakeLists.txt @ 100:7d135dc70f03 LLVM 3.9
LLVM 3.9
author | Miyagi Mitsuki <e135756@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 26 Jan 2016 22:53:40 +0900 |
parents | afa8332a0e37 |
children | 1172e4bd9c6f |
comparison
equal
deleted
inserted
replaced
96:6418606d0ead | 100:7d135dc70f03 |
---|---|
24 set(cmake_3_2_USES_TERMINAL) | 24 set(cmake_3_2_USES_TERMINAL) |
25 else() | 25 else() |
26 set(cmake_3_2_USES_TERMINAL USES_TERMINAL) | 26 set(cmake_3_2_USES_TERMINAL USES_TERMINAL) |
27 endif() | 27 endif() |
28 | 28 |
29 project(LLVM C CXX ASM) | 29 if(NOT DEFINED LLVM_VERSION_MAJOR) |
30 set(LLVM_VERSION_MAJOR 3) | |
31 endif() | |
32 if(NOT DEFINED LLVM_VERSION_MINOR) | |
33 set(LLVM_VERSION_MINOR 9) | |
34 endif() | |
35 if(NOT DEFINED LLVM_VERSION_PATCH) | |
36 set(LLVM_VERSION_PATCH 0) | |
37 endif() | |
38 if(NOT DEFINED LLVM_VERSION_SUFFIX) | |
39 set(LLVM_VERSION_SUFFIX svn) | |
40 endif() | |
41 | |
42 if (POLICY CMP0048) | |
43 cmake_policy(SET CMP0048 NEW) | |
44 set(cmake_3_0_PROJ_VERSION | |
45 VERSION ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}) | |
46 set(cmake_3_0_LANGUAGES LANGUAGES) | |
47 endif() | |
48 | |
49 if (NOT PACKAGE_VERSION) | |
50 set(PACKAGE_VERSION | |
51 "${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}${LLVM_VERSION_SUFFIX}") | |
52 endif() | |
53 | |
54 project(LLVM | |
55 ${cmake_3_0_PROJ_VERSION} | |
56 ${cmake_3_0_LANGUAGES} | |
57 C CXX ASM) | |
30 | 58 |
31 # The following only works with the Ninja generator in CMake >= 3.0. | 59 # The following only works with the Ninja generator in CMake >= 3.0. |
32 set(LLVM_PARALLEL_COMPILE_JOBS "" CACHE STRING | 60 set(LLVM_PARALLEL_COMPILE_JOBS "" CACHE STRING |
33 "Define the maximum number of concurrent compilation jobs.") | 61 "Define the maximum number of concurrent compilation jobs.") |
34 if(LLVM_PARALLEL_COMPILE_JOBS) | 62 if(LLVM_PARALLEL_COMPILE_JOBS) |
35 if(CMAKE_VERSION VERSION_LESS 3.0 OR NOT CMAKE_MAKE_PROGRAM MATCHES "ninja$") | 63 if(CMAKE_VERSION VERSION_LESS 3.0 OR NOT CMAKE_MAKE_PROGRAM MATCHES "ninja") |
36 message(WARNING "Job pooling is only available with Ninja generators and CMake 3.0 and later.") | 64 message(WARNING "Job pooling is only available with Ninja generators and CMake 3.0 and later.") |
37 else() | 65 else() |
38 set_property(GLOBAL APPEND PROPERTY JOB_POOLS compile_job_pool=${LLVM_PARALLEL_COMPILE_JOBS}) | 66 set_property(GLOBAL APPEND PROPERTY JOB_POOLS compile_job_pool=${LLVM_PARALLEL_COMPILE_JOBS}) |
39 set(CMAKE_JOB_POOL_COMPILE compile_job_pool) | 67 set(CMAKE_JOB_POOL_COMPILE compile_job_pool) |
40 endif() | 68 endif() |
41 endif() | 69 endif() |
42 | 70 |
71 set(LLVM_BUILD_GLOBAL_ISEL OFF CACHE BOOL "Experimental: Build GlobalISel") | |
72 | |
43 set(LLVM_PARALLEL_LINK_JOBS "" CACHE STRING | 73 set(LLVM_PARALLEL_LINK_JOBS "" CACHE STRING |
44 "Define the maximum number of concurrent link jobs.") | 74 "Define the maximum number of concurrent link jobs.") |
45 if(LLVM_PARALLEL_LINK_JOBS) | 75 if(LLVM_PARALLEL_LINK_JOBS) |
46 if(CMAKE_VERSION VERSION_LESS 3.0 OR NOT CMAKE_MAKE_PROGRAM MATCHES "ninja$") | 76 if(CMAKE_VERSION VERSION_LESS 3.0 OR NOT CMAKE_MAKE_PROGRAM MATCHES "ninja") |
47 message(WARNING "Job pooling is only available with Ninja generators and CMake 3.0 and later.") | 77 message(WARNING "Job pooling is only available with Ninja generators and CMake 3.0 and later.") |
48 else() | 78 else() |
49 set_property(GLOBAL APPEND PROPERTY JOB_POOLS link_job_pool=${LLVM_PARALLEL_LINK_JOBS}) | 79 set_property(GLOBAL APPEND PROPERTY JOB_POOLS link_job_pool=${LLVM_PARALLEL_LINK_JOBS}) |
50 set(CMAKE_JOB_POOL_LINK link_job_pool) | 80 set(CMAKE_JOB_POOL_LINK link_job_pool) |
51 endif() | 81 endif() |
56 ${CMAKE_MODULE_PATH} | 86 ${CMAKE_MODULE_PATH} |
57 "${CMAKE_CURRENT_SOURCE_DIR}/cmake" | 87 "${CMAKE_CURRENT_SOURCE_DIR}/cmake" |
58 "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules" | 88 "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules" |
59 ) | 89 ) |
60 | 90 |
61 set(LLVM_VERSION_MAJOR 3) | 91 # Generate a CompilationDatabase (compile_commands.json file) for our build, |
62 set(LLVM_VERSION_MINOR 8) | 92 # for use by clang_complete, YouCompleteMe, etc. |
63 set(LLVM_VERSION_PATCH 0) | 93 set(CMAKE_EXPORT_COMPILE_COMMANDS 1) |
64 set(LLVM_VERSION_SUFFIX svn) | |
65 | |
66 if (NOT PACKAGE_VERSION) | |
67 set(PACKAGE_VERSION | |
68 "${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}${LLVM_VERSION_SUFFIX}") | |
69 endif() | |
70 | 94 |
71 option(LLVM_INSTALL_UTILS "Include utility binaries in the 'install' target." OFF) | 95 option(LLVM_INSTALL_UTILS "Include utility binaries in the 'install' target." OFF) |
72 | 96 |
73 option(LLVM_INSTALL_TOOLCHAIN_ONLY "Only include toolchain files in the 'install' target." OFF) | 97 option(LLVM_INSTALL_TOOLCHAIN_ONLY "Only include toolchain files in the 'install' target." OFF) |
74 | 98 |
281 endif( LLVM_USE_INTEL_JITEVENTS ) | 305 endif( LLVM_USE_INTEL_JITEVENTS ) |
282 | 306 |
283 option(LLVM_USE_OPROFILE | 307 option(LLVM_USE_OPROFILE |
284 "Use opagent JIT interface to inform OProfile about JIT code" OFF) | 308 "Use opagent JIT interface to inform OProfile about JIT code" OFF) |
285 | 309 |
310 option(LLVM_EXTERNALIZE_DEBUGINFO | |
311 "Generate dSYM files and strip executables and libraries (Darwin Only)" OFF) | |
312 | |
286 # If enabled, verify we are on a platform that supports oprofile. | 313 # If enabled, verify we are on a platform that supports oprofile. |
287 if( LLVM_USE_OPROFILE ) | 314 if( LLVM_USE_OPROFILE ) |
288 if( NOT CMAKE_SYSTEM_NAME MATCHES "Linux" ) | 315 if( NOT CMAKE_SYSTEM_NAME MATCHES "Linux" ) |
289 message(FATAL_ERROR "OProfile support is available on Linux only.") | 316 message(FATAL_ERROR "OProfile support is available on Linux only.") |
290 endif( NOT CMAKE_SYSTEM_NAME MATCHES "Linux" ) | 317 endif( NOT CMAKE_SYSTEM_NAME MATCHES "Linux" ) |
354 if(NOT DEFINED LLVM_DYLIB_COMPONENTS) | 381 if(NOT DEFINED LLVM_DYLIB_COMPONENTS) |
355 set(LLVM_DYLIB_COMPONENTS "all" CACHE STRING | 382 set(LLVM_DYLIB_COMPONENTS "all" CACHE STRING |
356 "Semicolon-separated list of components to include in libLLVM, or \"all\".") | 383 "Semicolon-separated list of components to include in libLLVM, or \"all\".") |
357 endif() | 384 endif() |
358 option(LLVM_LINK_LLVM_DYLIB "Link tools against the libllvm dynamic library" OFF) | 385 option(LLVM_LINK_LLVM_DYLIB "Link tools against the libllvm dynamic library" OFF) |
359 option(LLVM_BUILD_LLVM_DYLIB "Build libllvm dynamic library" ${LLVM_LINK_LLVM_DYLIB}) | 386 option(LLVM_BUILD_LLVM_C_DYLIB "Build libllvm-c re-export library (Darwin Only)" OFF) |
360 option(LLVM_DYLIB_EXPORT_ALL "Export all symbols from libLLVM.dylib (default is C API only" ${LLVM_LINK_LLVM_DYLIB}) | 387 set(LLVM_BUILD_LLVM_DYLIB_default OFF) |
388 if(LLVM_LINK_LLVM_DYLIB OR LLVM_BUILD_LLVM_C_DYLIB) | |
389 set(LLVM_BUILD_LLVM_DYLIB_default ON) | |
390 endif() | |
391 option(LLVM_BUILD_LLVM_DYLIB "Build libllvm dynamic library" ${LLVM_BUILD_LLVM_DYLIB_default}) | |
361 set(LLVM_DISABLE_LLVM_DYLIB_ATEXIT_DEFAULT ON) | 392 set(LLVM_DISABLE_LLVM_DYLIB_ATEXIT_DEFAULT ON) |
362 if (LLVM_LINK_LLVM_DYLIB) | 393 if (LLVM_LINK_LLVM_DYLIB) |
363 set(LLVM_DISABLE_LLVM_DYLIB_ATEXIT_DEFAULT OFF) | 394 set(LLVM_DISABLE_LLVM_DYLIB_ATEXIT_DEFAULT OFF) |
364 endif() | 395 endif() |
365 option(LLVM_DISABLE_LLVM_DYLIB_ATEXIT "Disable llvm-shlib's atexit destructors." ${LLVM_DISABLE_LLVM_DYLIB_ATEXIT_DEFAULT}) | 396 option(LLVM_DISABLE_LLVM_DYLIB_ATEXIT "Disable llvm-shlib's atexit destructors." ${LLVM_DISABLE_LLVM_DYLIB_ATEXIT_DEFAULT}) |
659 if( LLVM_INCLUDE_EXAMPLES ) | 690 if( LLVM_INCLUDE_EXAMPLES ) |
660 add_subdirectory(examples) | 691 add_subdirectory(examples) |
661 endif() | 692 endif() |
662 | 693 |
663 if( LLVM_INCLUDE_TESTS ) | 694 if( LLVM_INCLUDE_TESTS ) |
695 if(EXISTS ${LLVM_MAIN_SRC_DIR}/projects/test-suite AND TARGET clang) | |
696 include(LLVMExternalProjectUtils) | |
697 llvm_ExternalProject_Add(test-suite ${LLVM_MAIN_SRC_DIR}/projects/test-suite | |
698 USE_TOOLCHAIN | |
699 EXCLUDE_FROM_ALL | |
700 NO_INSTALL) | |
701 endif() | |
664 add_subdirectory(test) | 702 add_subdirectory(test) |
665 add_subdirectory(unittests) | 703 add_subdirectory(unittests) |
666 if (MSVC) | 704 if (MSVC) |
667 # This utility is used to prevent crashing tests from calling Dr. Watson on | 705 # This utility is used to prevent crashing tests from calling Dr. Watson on |
668 # Windows. | 706 # Windows. |