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}) |
Daniel Dunbar | ab0ad4e | 2011-12-01 20:18:09 +0000 | [diff] [blame] | 14 | set(SYSTEM_LIBS ${SYSTEM_LIBS} "-l${l}") |
Oscar Fuentes | 10a71da | 2009-05-27 15:49:33 +0000 | [diff] [blame] | 15 | endforeach() |
Hans Wennborg | 5c62359 | 2013-08-28 17:04:06 +0000 | [diff] [blame] | 16 | string(REPLACE ";" " " SYSTEM_LIBS "${SYSTEM_LIBS}") |
Oscar Fuentes | bda403b | 2009-04-04 22:41:07 +0000 | [diff] [blame] | 17 | |
Chris Bieneman | 9df5d7c | 2015-08-14 16:20:31 +0000 | [diff] [blame] | 18 | # Fetch target specific compile options, e.g. RTTI option |
| 19 | get_property(COMPILE_FLAGS TARGET llvm-config PROPERTY COMPILE_FLAGS) |
| 20 | |
Hans Wennborg | fe06e81 | 2013-08-23 17:59:13 +0000 | [diff] [blame] | 21 | # Use configure_file to create BuildVariables.inc. |
| 22 | set(LLVM_SRC_ROOT ${LLVM_MAIN_SRC_DIR}) |
| 23 | set(LLVM_OBJ_ROOT ${LLVM_BINARY_DIR}) |
| 24 | set(LLVM_CPPFLAGS "${CMAKE_CPP_FLAGS} ${CMAKE_CPP_FLAGS_${uppercase_CMAKE_BUILD_TYPE}} ${LLVM_DEFINITIONS}") |
| 25 | 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] | 26 | 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] | 27 | set(LLVM_BUILD_SYSTEM cmake) |
Tom Stellard | 18bf626 | 2015-11-04 20:57:43 +0000 | [diff] [blame] | 28 | set(LLVM_HAS_RTTI ${LLVM_CONFIG_HAS_RTTI}) |
Tom Stellard | 5268c17 | 2015-09-09 16:39:30 +0000 | [diff] [blame] | 29 | |
Reid Kleckner | 65fc0e2 | 2014-04-25 01:44:20 +0000 | [diff] [blame] | 30 | # Use the C++ link flags, since they should be a superset of C link flags. |
| 31 | set(LLVM_LDFLAGS "${CMAKE_CXX_LINK_FLAGS}") |
Hans Wennborg | fe06e81 | 2013-08-23 17:59:13 +0000 | [diff] [blame] | 32 | set(LLVM_BUILDMODE ${CMAKE_BUILD_TYPE}) |
| 33 | set(LLVM_SYSTEM_LIBS ${SYSTEM_LIBS}) |
Richard Diamond | 72303a2 | 2015-11-09 23:15:38 +0000 | [diff] [blame] | 34 | if(BUILD_SHARED_LIBS) |
| 35 | set(LLVM_ENABLE_SHARED ON) |
| 36 | else() |
| 37 | set(LLVM_ENABLE_SHARED OFF) |
| 38 | endif() |
Hans Wennborg | 5c62359 | 2013-08-28 17:04:06 +0000 | [diff] [blame] | 39 | string(REPLACE ";" " " LLVM_TARGETS_BUILT "${LLVM_TARGETS_TO_BUILD}") |
Hans Wennborg | fe06e81 | 2013-08-23 17:59:13 +0000 | [diff] [blame] | 40 | configure_file(${BUILDVARIABLES_SRCPATH} ${BUILDVARIABLES_OBJPATH} @ONLY) |
Oscar Fuentes | a229b3c | 2008-09-22 01:08:49 +0000 | [diff] [blame] | 41 | |
NAKAMURA Takumi | 1b16e27 | 2013-12-03 14:35:17 +0000 | [diff] [blame] | 42 | # Set build-time environment(s). |
| 43 | add_definitions(-DCMAKE_CFG_INTDIR="${CMAKE_CFG_INTDIR}") |
| 44 | |
Daniel Dunbar | ab0ad4e | 2011-12-01 20:18:09 +0000 | [diff] [blame] | 45 | # Add the dependency on the generation step. |
| 46 | add_file_dependencies(${CMAKE_CURRENT_SOURCE_DIR}/llvm-config.cpp ${BUILDVARIABLES_OBJPATH}) |
Chris Bieneman | 5007741 | 2014-09-03 23:21:18 +0000 | [diff] [blame] | 47 | |
| 48 | if(CMAKE_CROSSCOMPILING) |
| 49 | set(${project}_LLVM_CONFIG_EXE "${LLVM_NATIVE_BUILD}/bin/llvm-config") |
| 50 | set(${project}_LLVM_CONFIG_EXE ${${project}_LLVM_CONFIG_EXE} PARENT_SCOPE) |
| 51 | |
| 52 | add_custom_command(OUTPUT "${${project}_LLVM_CONFIG_EXE}" |
| 53 | COMMAND ${CMAKE_COMMAND} --build . --target llvm-config --config $<CONFIGURATION> |
| 54 | DEPENDS ${LLVM_NATIVE_BUILD}/CMakeCache.txt |
| 55 | WORKING_DIRECTORY ${LLVM_NATIVE_BUILD} |
| 56 | COMMENT "Building native llvm-config...") |
| 57 | add_custom_target(${project}NativeLLVMConfig DEPENDS ${${project}_LLVM_CONFIG_EXE}) |
Chris Bieneman | 46a65b8 | 2015-03-12 17:33:34 +0000 | [diff] [blame] | 58 | add_dependencies(${project}NativeLLVMConfig CONFIGURE_LLVM_NATIVE) |
Chris Bieneman | 5007741 | 2014-09-03 23:21:18 +0000 | [diff] [blame] | 59 | |
| 60 | add_dependencies(llvm-config ${project}NativeLLVMConfig) |
| 61 | endif(CMAKE_CROSSCOMPILING) |