| Daniel Dunbar | ab0ad4e | 2011-12-01 20:18:09 +0000 | [diff] [blame] | 1 | set(LLVM_LINK_COMPONENTS support) |
| Oscar Fuentes | a229b3c | 2008-09-22 01:08:49 +0000 | [diff] [blame] | 2 | |
| Daniel Dunbar | ab0ad4e | 2011-12-01 20:18:09 +0000 | [diff] [blame] | 3 | set(BUILDVARIABLES_SRCPATH ${CMAKE_CURRENT_SOURCE_DIR}/BuildVariables.inc.in) |
| 4 | set(BUILDVARIABLES_OBJPATH ${CMAKE_CURRENT_BINARY_DIR}/BuildVariables.inc) |
| Oscar Fuentes | a229b3c | 2008-09-22 01:08:49 +0000 | [diff] [blame] | 5 | |
| Chris Bieneman | 9df5d7c | 2015-08-14 16:20:31 +0000 | [diff] [blame] | 6 | # Add the llvm-config tool. |
| 7 | add_llvm_tool(llvm-config |
| 8 | llvm-config.cpp |
| 9 | ) |
| 10 | |
| Daniel Dunbar | ab0ad4e | 2011-12-01 20:18:09 +0000 | [diff] [blame] | 11 | # Compute the substitution values for various items. |
| NAKAMURA Takumi | af2c113 | 2014-02-23 06:27:04 +0000 | [diff] [blame] | 12 | get_property(LLVM_SYSTEM_LIBS_LIST TARGET LLVMSupport PROPERTY LLVM_SYSTEM_LIBS) |
| Oscar Fuentes | 10a71da | 2009-05-27 15:49:33 +0000 | [diff] [blame] | 13 | foreach(l ${LLVM_SYSTEM_LIBS_LIST}) |
| Ehsan Akhgari | 155ca8f | 2016-02-09 19:41:14 +0000 | [diff] [blame] | 14 | if(MSVC) |
| 15 | set(SYSTEM_LIBS ${SYSTEM_LIBS} "${l}.lib") |
| 16 | else() |
| Artem Belevich | df7103d | 2016-06-21 19:34:40 +0000 | [diff] [blame^] | 17 | if (l MATCHES "^-") |
| 18 | # If it's an option, pass it without changes. |
| 19 | set(SYSTEM_LIBS ${SYSTEM_LIBS} "${l}") |
| 20 | else() |
| 21 | # Otherwise assume it's a library name we need to link with. |
| 22 | set(SYSTEM_LIBS ${SYSTEM_LIBS} "-l${l}") |
| 23 | endif() |
| Ehsan Akhgari | 155ca8f | 2016-02-09 19:41:14 +0000 | [diff] [blame] | 24 | endif() |
| Oscar Fuentes | 10a71da | 2009-05-27 15:49:33 +0000 | [diff] [blame] | 25 | endforeach() |
| Hans Wennborg | 5c62359 | 2013-08-28 17:04:06 +0000 | [diff] [blame] | 26 | string(REPLACE ";" " " SYSTEM_LIBS "${SYSTEM_LIBS}") |
| Oscar Fuentes | bda403b | 2009-04-04 22:41:07 +0000 | [diff] [blame] | 27 | |
| Chris Bieneman | 9df5d7c | 2015-08-14 16:20:31 +0000 | [diff] [blame] | 28 | # Fetch target specific compile options, e.g. RTTI option |
| 29 | get_property(COMPILE_FLAGS TARGET llvm-config PROPERTY COMPILE_FLAGS) |
| 30 | |
| Hans Wennborg | fe06e81 | 2013-08-23 17:59:13 +0000 | [diff] [blame] | 31 | # Use configure_file to create BuildVariables.inc. |
| 32 | set(LLVM_SRC_ROOT ${LLVM_MAIN_SRC_DIR}) |
| 33 | set(LLVM_OBJ_ROOT ${LLVM_BINARY_DIR}) |
| 34 | set(LLVM_CPPFLAGS "${CMAKE_CPP_FLAGS} ${CMAKE_CPP_FLAGS_${uppercase_CMAKE_BUILD_TYPE}} ${LLVM_DEFINITIONS}") |
| 35 | set(LLVM_CFLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${uppercase_CMAKE_BUILD_TYPE}} ${LLVM_DEFINITIONS}") |
| Chris Bieneman | 9df5d7c | 2015-08-14 16:20:31 +0000 | [diff] [blame] | 36 | set(LLVM_CXXFLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${uppercase_CMAKE_BUILD_TYPE}} ${COMPILE_FLAGS} ${LLVM_DEFINITIONS}") |
| Tom Stellard | 5268c17 | 2015-09-09 16:39:30 +0000 | [diff] [blame] | 37 | set(LLVM_BUILD_SYSTEM cmake) |
| Tom Stellard | 18bf626 | 2015-11-04 20:57:43 +0000 | [diff] [blame] | 38 | set(LLVM_HAS_RTTI ${LLVM_CONFIG_HAS_RTTI}) |
| Andrew Wilkins | dfd6088 | 2016-01-20 04:03:09 +0000 | [diff] [blame] | 39 | set(LLVM_DYLIB_VERSION "${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}${LLVM_VERSION_SUFFIX}") |
| Quentin Colombet | 447f852 | 2016-03-08 00:02:50 +0000 | [diff] [blame] | 40 | set(LLVM_HAS_GLOBAL_ISEL "${LLVM_BUILD_GLOBAL_ISEL}") |
| Tom Stellard | 5268c17 | 2015-09-09 16:39:30 +0000 | [diff] [blame] | 41 | |
| Reid Kleckner | 65fc0e2 | 2014-04-25 01:44:20 +0000 | [diff] [blame] | 42 | # Use the C++ link flags, since they should be a superset of C link flags. |
| 43 | set(LLVM_LDFLAGS "${CMAKE_CXX_LINK_FLAGS}") |
| Hans Wennborg | fe06e81 | 2013-08-23 17:59:13 +0000 | [diff] [blame] | 44 | set(LLVM_BUILDMODE ${CMAKE_BUILD_TYPE}) |
| 45 | set(LLVM_SYSTEM_LIBS ${SYSTEM_LIBS}) |
| Richard Diamond | 72303a2 | 2015-11-09 23:15:38 +0000 | [diff] [blame] | 46 | if(BUILD_SHARED_LIBS) |
| 47 | set(LLVM_ENABLE_SHARED ON) |
| 48 | else() |
| 49 | set(LLVM_ENABLE_SHARED OFF) |
| 50 | endif() |
| Hans Wennborg | 5c62359 | 2013-08-28 17:04:06 +0000 | [diff] [blame] | 51 | string(REPLACE ";" " " LLVM_TARGETS_BUILT "${LLVM_TARGETS_TO_BUILD}") |
| Hans Wennborg | fe06e81 | 2013-08-23 17:59:13 +0000 | [diff] [blame] | 52 | configure_file(${BUILDVARIABLES_SRCPATH} ${BUILDVARIABLES_OBJPATH} @ONLY) |
| Oscar Fuentes | a229b3c | 2008-09-22 01:08:49 +0000 | [diff] [blame] | 53 | |
| NAKAMURA Takumi | 1b16e27 | 2013-12-03 14:35:17 +0000 | [diff] [blame] | 54 | # Set build-time environment(s). |
| 55 | add_definitions(-DCMAKE_CFG_INTDIR="${CMAKE_CFG_INTDIR}") |
| 56 | |
| Daniel Dunbar | ab0ad4e | 2011-12-01 20:18:09 +0000 | [diff] [blame] | 57 | # Add the dependency on the generation step. |
| 58 | add_file_dependencies(${CMAKE_CURRENT_SOURCE_DIR}/llvm-config.cpp ${BUILDVARIABLES_OBJPATH}) |
| Chris Bieneman | 5007741 | 2014-09-03 23:21:18 +0000 | [diff] [blame] | 59 | |
| 60 | if(CMAKE_CROSSCOMPILING) |
| 61 | set(${project}_LLVM_CONFIG_EXE "${LLVM_NATIVE_BUILD}/bin/llvm-config") |
| 62 | set(${project}_LLVM_CONFIG_EXE ${${project}_LLVM_CONFIG_EXE} PARENT_SCOPE) |
| 63 | |
| 64 | add_custom_command(OUTPUT "${${project}_LLVM_CONFIG_EXE}" |
| 65 | COMMAND ${CMAKE_COMMAND} --build . --target llvm-config --config $<CONFIGURATION> |
| 66 | DEPENDS ${LLVM_NATIVE_BUILD}/CMakeCache.txt |
| 67 | WORKING_DIRECTORY ${LLVM_NATIVE_BUILD} |
| 68 | COMMENT "Building native llvm-config...") |
| 69 | add_custom_target(${project}NativeLLVMConfig DEPENDS ${${project}_LLVM_CONFIG_EXE}) |
| Chris Bieneman | 46a65b8 | 2015-03-12 17:33:34 +0000 | [diff] [blame] | 70 | add_dependencies(${project}NativeLLVMConfig CONFIGURE_LLVM_NATIVE) |
| Chris Bieneman | 5007741 | 2014-09-03 23:21:18 +0000 | [diff] [blame] | 71 | |
| 72 | add_dependencies(llvm-config ${project}NativeLLVMConfig) |
| 73 | endif(CMAKE_CROSSCOMPILING) |