@@ -3,7 +3,7 @@ | |||
# See the cotire manual for usage hints. | |||
# | |||
#============================================================================= | |||
# Copyright 2012-2013 Sascha Kratky | |||
# Copyright 2012-2014 Sascha Kratky | |||
# | |||
# Permission is hereby granted, free of charge, to any person | |||
# obtaining a copy of this software and associated documentation | |||
@@ -45,7 +45,7 @@ if (NOT CMAKE_SCRIPT_MODE_FILE) | |||
endif() | |||
set (COTIRE_CMAKE_MODULE_FILE "${CMAKE_CURRENT_LIST_FILE}") | |||
set (COTIRE_CMAKE_MODULE_VERSION "1.5.1") | |||
set (COTIRE_CMAKE_MODULE_VERSION "1.5.2") | |||
include(CMakeParseArguments) | |||
include(ProcessorCount) | |||
@@ -383,13 +383,19 @@ function (cotire_get_target_compile_flags _config _language _directory _target _ | |||
foreach (_arch ${_architectures}) | |||
list (APPEND _compileFlags "-arch" "${_arch}") | |||
endforeach() | |||
if (CMAKE_OSX_SYSROOT AND CMAKE_OSX_SYSROOT_DEFAULT AND CMAKE_${_language}_HAS_ISYSROOT) | |||
if (NOT "${CMAKE_OSX_SYSROOT}" STREQUAL "${CMAKE_OSX_SYSROOT_DEFAULT}") | |||
if (CMAKE_OSX_SYSROOT) | |||
if (CMAKE_${_language}_SYSROOT_FLAG) | |||
list (APPEND _compileFlags "${CMAKE_${_language}_SYSROOT_FLAG}" "${CMAKE_OSX_SYSROOT}") | |||
else() | |||
list (APPEND _compileFlags "-isysroot" "${CMAKE_OSX_SYSROOT}") | |||
endif() | |||
endif() | |||
if (CMAKE_OSX_DEPLOYMENT_TARGET AND CMAKE_${_language}_OSX_DEPLOYMENT_TARGET_FLAG) | |||
list (APPEND _compileFlags "${CMAKE_${_language}_OSX_DEPLOYMENT_TARGET_FLAG}${CMAKE_OSX_DEPLOYMENT_TARGET}") | |||
if (CMAKE_OSX_DEPLOYMENT_TARGET) | |||
if (CMAKE_${_language}_OSX_DEPLOYMENT_TARGET_FLAG) | |||
list (APPEND _compileFlags "${CMAKE_${_language}_OSX_DEPLOYMENT_TARGET_FLAG}${CMAKE_OSX_DEPLOYMENT_TARGET}") | |||
else() | |||
list (APPEND _compileFlags "-mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}") | |||
endif() | |||
endif() | |||
endif() | |||
if (COTIRE_DEBUG AND _compileFlags) | |||
@@ -683,6 +689,24 @@ macro (cotire_add_includes_to_cmd _cmdVar _language) | |||
endforeach() | |||
endmacro() | |||
macro (cotire_add_frameworks_to_cmd _cmdVar _language) | |||
if (APPLE) | |||
set (_frameWorkDirs "") | |||
foreach (_include ${ARGN}) | |||
if (IS_ABSOLUTE "${_include}" AND _include MATCHES "\\.framework$") | |||
get_filename_component(_frameWorkDir "${_include}" PATH) | |||
list (APPEND _frameWorkDirs "${_frameWorkDir}") | |||
endif() | |||
endforeach() | |||
if (_frameWorkDirs) | |||
list (REMOVE_DUPLICATES _frameWorkDirs) | |||
foreach (_frameWorkDir ${_frameWorkDirs}) | |||
list (APPEND ${_cmdVar} "-F${_frameWorkDir}") | |||
endforeach() | |||
endif() | |||
endif() | |||
endmacro() | |||
macro (cotire_add_compile_flags_to_cmd _cmdVar) | |||
foreach (_flag ${ARGN}) | |||
list (APPEND ${_cmdVar} "${_flag}") | |||
@@ -936,6 +960,7 @@ function (cotire_scan_includes _includesVar) | |||
cotire_add_definitions_to_cmd(_cmd "${_option_LANGUAGE}" ${_option_COMPILE_DEFINITIONS}) | |||
cotire_add_compile_flags_to_cmd(_cmd ${_option_COMPILE_FLAGS}) | |||
cotire_add_includes_to_cmd(_cmd "${_option_LANGUAGE}" ${_option_INCLUDE_DIRECTORIES}) | |||
cotire_add_frameworks_to_cmd(_cmd "${_option_LANGUAGE}" ${_option_INCLUDE_DIRECTORIES}) | |||
cotire_add_makedep_flags("${_option_LANGUAGE}" "${_option_COMPILER_ID}" "${_option_COMPILER_VERSION}" _cmd) | |||
# only consider existing source files for scanning | |||
set (_existingSourceFiles "") | |||
@@ -1478,6 +1503,7 @@ function (cotire_precompile_prefix_header _prefixFile _pchFile _hostFile) | |||
cotire_add_definitions_to_cmd(_cmd "${_option_LANGUAGE}" ${_option_COMPILE_DEFINITIONS}) | |||
cotire_add_compile_flags_to_cmd(_cmd ${_option_COMPILE_FLAGS}) | |||
cotire_add_includes_to_cmd(_cmd "${_option_LANGUAGE}" ${_option_INCLUDE_DIRECTORIES}) | |||
cotire_add_frameworks_to_cmd(_cmd "${_option_LANGUAGE}" ${_option_INCLUDE_DIRECTORIES}) | |||
cotire_add_pch_compilation_flags( | |||
"${_option_LANGUAGE}" "${_option_COMPILER_ID}" "${_option_COMPILER_VERSION}" | |||
"${_prefixFile}" "${_pchFile}" "${_hostFile}" _cmd) | |||
@@ -1,3 +1,9 @@ | |||
## 1.5.2 (2014-01-17) | |||
* honor framework includes under OS X correctly. | |||
* fix handling of OS X specific variables `CMAKE_OSX_SYSROOT` and `CMAKE_OSX_DEPLOYMENT_TARGET`. | |||
* add new examples to the `Patches` directory. | |||
## 1.5.1 (2013-11-12) | |||
* fixed string quoting bugs. | |||
@@ -0,0 +1,48 @@ | |||
diff -rupN clang-3.4.src/CMakeLists.txt clang-3.4.src.cotire/CMakeLists.txt | |||
--- clang-3.4.src/CMakeLists.txt 2013-11-06 09:37:50.000000000 +0100 | |||
@@ -2,7 +2,7 @@ | |||
# standalone project, using LLVM as an external library: | |||
if( CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR ) | |||
project(Clang) | |||
- cmake_minimum_required(VERSION 2.8) | |||
+ cmake_minimum_required(VERSION 2.8.11) | |||
set(CLANG_PATH_TO_LLVM_SOURCE "" CACHE PATH | |||
"Path to LLVM source code. Not necessary if using an installed LLVM.") | |||
@@ -40,6 +40,8 @@ if( CMAKE_SOURCE_DIR STREQUAL CMAKE_CURR | |||
include(TableGen) | |||
include("${CLANG_PATH_TO_LLVM_BUILD}/share/llvm/cmake/LLVMConfig.cmake") | |||
include(HandleLLVMOptions) | |||
+ include(cotire) | |||
+ set_property(DIRECTORY PROPERTY COTIRE_UNITY_LINK_LIBRARIES_INIT "COPY_UNITY") | |||
set(PACKAGE_VERSION "${LLVM_PACKAGE_VERSION}") | |||
@@ -286,6 +288,12 @@ macro(add_clang_library name) | |||
endif() | |||
set_target_properties(${name} PROPERTIES FOLDER "Clang libraries") | |||
+ if (COMMAND cotire) | |||
+ if (NOT "${name}" MATCHES "libclang") | |||
+ set_target_properties(${name} PROPERTIES COTIRE_UNITY_SOURCE_POST_UNDEFS "DEBUG_TYPE") | |||
+ cotire(${name}) | |||
+ endif() | |||
+ endif() | |||
endmacro(add_clang_library) | |||
macro(add_clang_executable name) | |||
diff -rupN clang-3.4.src/tools/libclang/CMakeLists.txt clang-3.4.src.cotire/tools/libclang/CMakeLists.txt | |||
--- clang-3.4.src/tools/libclang/CMakeLists.txt 2013-11-13 23:26:04.000000000 +0100 | |||
@@ -124,3 +124,10 @@ if( (NOT LLVM_ENABLE_PIC OR LIBCLANG_BUI | |||
PROPERTIES | |||
OUTPUT_NAME "clang") | |||
endif() | |||
+ | |||
+if (COMMAND cotire) | |||
+ cotire(libclang) | |||
+ if (TARGET ${LIBCLANG_STATIC_TARGET_NAME}) | |||
+ cotire(${LIBCLANG_STATIC_TARGET_NAME}) | |||
+ endif() | |||
+endif() |
@@ -0,0 +1,100 @@ | |||
diff -rupN llvm-3.4.src/CMakeLists.txt llvm-3.4.src.cotire/CMakeLists.txt | |||
--- llvm-3.4.src/CMakeLists.txt 2013-11-25 19:34:26.000000000 +0100 | |||
@@ -1,7 +1,7 @@ | |||
# See docs/CMake.html for instructions about how to build LLVM with CMake. | |||
project(LLVM) | |||
-cmake_minimum_required(VERSION 2.8) | |||
+cmake_minimum_required(VERSION 2.8.12) | |||
# Add path for custom modules | |||
set(CMAKE_MODULE_PATH | |||
@@ -25,6 +25,8 @@ if ( LLVM_USE_FOLDERS ) | |||
endif() | |||
include(VersionFromVCS) | |||
+include(cotire) | |||
+set_property(DIRECTORY PROPERTY COTIRE_UNITY_LINK_LIBRARIES_INIT "COPY_UNITY") | |||
option(LLVM_APPEND_VC_REV | |||
"Append the version control system revision id to LLVM version" OFF) | |||
diff -rupN llvm-3.4.src/cmake/modules/AddLLVM.cmake llvm-3.4.src.cotire/cmake/modules/AddLLVM.cmake | |||
--- llvm-3.4.src/cmake/modules/AddLLVM.cmake 2013-08-27 21:25:01.000000000 +0200 | |||
@@ -41,6 +41,10 @@ macro(add_llvm_library name) | |||
# property has been set to an empty value. | |||
get_property(lib_deps GLOBAL PROPERTY LLVMBUILD_LIB_DEPS_${name}) | |||
target_link_libraries(${name} ${lib_deps}) | |||
+if (COMMAND cotire) | |||
+ set_target_properties(${name} PROPERTIES COTIRE_UNITY_SOURCE_POST_UNDEFS "DEBUG_TYPE") | |||
+ cotire(${name}) | |||
+endif() | |||
endmacro(add_llvm_library name) | |||
macro(add_llvm_loadable_module name) | |||
@@ -78,6 +82,10 @@ ${name} ignored.") | |||
ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX}) | |||
endif() | |||
endif() | |||
+if (COMMAND cotire) | |||
+ set_target_properties(${name} PROPERTIES COTIRE_UNITY_SOURCE_POST_UNDEFS "DEBUG_TYPE") | |||
+ cotire(${name}) | |||
+endif() | |||
endif() | |||
set_target_properties(${name} PROPERTIES FOLDER "Loadable modules") | |||
@@ -119,6 +127,10 @@ macro(add_llvm_tool name) | |||
endif() | |||
endif() | |||
set_target_properties(${name} PROPERTIES FOLDER "Tools") | |||
+if (COMMAND cotire) | |||
+ set_target_properties(${name} PROPERTIES COTIRE_UNITY_SOURCE_POST_UNDEFS "DEBUG_TYPE") | |||
+ cotire(${name}) | |||
+endif() | |||
endmacro(add_llvm_tool name) | |||
@@ -132,12 +144,20 @@ macro(add_llvm_example name) | |||
install(TARGETS ${name} RUNTIME DESTINATION examples) | |||
endif() | |||
set_target_properties(${name} PROPERTIES FOLDER "Examples") | |||
+if (COMMAND cotire) | |||
+ set_target_properties(${name} PROPERTIES COTIRE_UNITY_SOURCE_POST_UNDEFS "DEBUG_TYPE") | |||
+ cotire(${name}) | |||
+endif() | |||
endmacro(add_llvm_example name) | |||
macro(add_llvm_utility name) | |||
add_llvm_executable(${name} ${ARGN}) | |||
set_target_properties(${name} PROPERTIES FOLDER "Utils") | |||
+if (COMMAND cotire) | |||
+ set_target_properties(${name} PROPERTIES COTIRE_UNITY_SOURCE_POST_UNDEFS "DEBUG_TYPE") | |||
+ cotire(${name}) | |||
+endif() | |||
endmacro(add_llvm_utility name) | |||
@@ -245,6 +265,10 @@ function(add_unittest test_suite test_na | |||
set(target_compile_flags "${target_compile_flags} -Wno-variadic-macros") | |||
endif () | |||
set_property(TARGET ${test_name} PROPERTY COMPILE_FLAGS "${target_compile_flags}") | |||
+if (COMMAND cotire) | |||
+ set_target_properties(${name} PROPERTIES COTIRE_UNITY_SOURCE_POST_UNDEFS "DEBUG_TYPE") | |||
+ cotire(${name}) | |||
+endif() | |||
endfunction() | |||
# This function provides an automatic way to 'configure'-like generate a file | |||
diff -rupN llvm-3.4.src/lib/Support/CMakeLists.txt llvm-3.4.src.cotire/lib/Support/CMakeLists.txt | |||
--- llvm-3.4.src/lib/Support/CMakeLists.txt 2013-09-04 18:00:12.000000000 +0200 | |||
@@ -1,3 +1,7 @@ | |||
+if (COMMAND cotire) | |||
+ set_source_files_properties (IsInf.cpp IsNAN.cpp PROPERTIES COTIRE_EXCLUDED TRUE) | |||
+endif() | |||
+ | |||
add_llvm_library(LLVMSupport | |||
APFloat.cpp | |||
APInt.cpp |
@@ -9,9 +9,9 @@ features | |||
-------- | |||
* Non-intrusive. Requires no source code modification and only minimal changes to CMake list files. | |||
* Automatically generates a single compilation unit (aka unity source file) for a CMake target. | |||
* Automatically generates a [single compilation unit][scu] (aka unity source file) for a CMake target. | |||
* Automatically generates a [prefix header][pfh] by tracking includes used by a CMake target. | |||
* Automatically precompiles prefix header and applies resulting precompiled header to a CMake target. | |||
* Automatically precompiles prefix header and applies resulting [precompiled header][pch] to a CMake target. | |||
* Alternatively, allows for using manually maintained unity source and prefix header files. | |||
* Supports C/C++ compilers Clang, GCC, Intel and Visual Studio C++. | |||
* Supports mixed language CMake targets. | |||
@@ -1,4 +1,4 @@ | |||
Copyright (c) 2012-2013 Sascha Kratky | |||
Copyright (c) 2012-2014 Sascha Kratky | |||
Permission is hereby granted, free of charge, to any person | |||
obtaining a copy of this software and associated documentation | |||