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.