blob: ed26ba9555393d95dd34ee729694b2d4f847b271 [file] [log] [blame]
Daniel Dunbarab0ad4e2011-12-01 20:18:09 +00001set(LLVM_LINK_COMPONENTS support)
Oscar Fuentesa229b3c2008-09-22 01:08:49 +00002
Daniel Dunbarab0ad4e2011-12-01 20:18:09 +00003# We need to generate the BuildVariables.inc file containing values which are
4# only defined when under certain build modes. Unfortunately, that precludes
5# doing this inside CMake so we have to shell out to sed. For now, that means we
6# can't expect to build llvm-config on Window.s
7set(BUILDVARIABLES_SRCPATH ${CMAKE_CURRENT_SOURCE_DIR}/BuildVariables.inc.in)
8set(BUILDVARIABLES_OBJPATH ${CMAKE_CURRENT_BINARY_DIR}/BuildVariables.inc)
9set(SEDSCRIPT_OBJPATH ${CMAKE_CURRENT_BINARY_DIR}/BuildVariables.configure.sed)
Oscar Fuentesa229b3c2008-09-22 01:08:49 +000010
Daniel Dunbarab0ad4e2011-12-01 20:18:09 +000011# Compute the substitution values for various items.
Oscar Fuentes10a71da2009-05-27 15:49:33 +000012get_system_libs(LLVM_SYSTEM_LIBS_LIST)
13foreach(l ${LLVM_SYSTEM_LIBS_LIST})
Daniel Dunbarab0ad4e2011-12-01 20:18:09 +000014 set(SYSTEM_LIBS ${SYSTEM_LIBS} "-l${l}")
Oscar Fuentes10a71da2009-05-27 15:49:33 +000015endforeach()
Oscar Fuentescde00a52011-04-01 19:36:06 +000016set(C_FLGS "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${uppercase_CMAKE_BUILD_TYPE}} ${LLVM_DEFINITIONS}")
Oscar Fuentescde00a52011-04-01 19:36:06 +000017set(CXX_FLGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${uppercase_CMAKE_BUILD_TYPE}} ${LLVM_DEFINITIONS}")
18set(CPP_FLGS "${CMAKE_CPP_FLAGS} ${CMAKE_CPP_FLAGS_${uppercase_CMAKE_BUILD_TYPE}} ${LLVM_DEFINITIONS}")
Oscar Fuentesbda403b2009-04-04 22:41:07 +000019
Daniel Dunbarab0ad4e2011-12-01 20:18:09 +000020add_custom_command(OUTPUT ${BUILDVARIABLES_OBJPATH}
21 COMMAND echo s!@LLVM_SRC_ROOT@!${LLVM_MAIN_SRC_DIR}! > ${SEDSCRIPT_OBJPATH}
22 COMMAND echo s!@LLVM_OBJ_ROOT@!${LLVM_BINARY_DIR}! >> ${SEDSCRIPT_OBJPATH}
23 COMMAND echo s!@LLVM_CPPFLAGS@!${CPP_FLGS}! >> ${SEDSCRIPT_OBJPATH}
24 COMMAND echo s!@LLVM_CFLAGS@!${C_FLGS}! >> ${SEDSCRIPT_OBJPATH}
25 COMMAND echo s!@LLVM_CXXFLAGS@!${CXX_FLGS}! >> ${SEDSCRIPT_OBJPATH}
Oscar Fuentescf03f4b2009-04-03 12:16:32 +000026 # TODO: Use general flags for linking! not just for shared libs:
Daniel Dunbarab0ad4e2011-12-01 20:18:09 +000027 COMMAND echo s!@LLVM_LDFLAGS@!${CMAKE_SHARED_LINKER_FLAGS}! >> ${SEDSCRIPT_OBJPATH}
28 COMMAND echo s!@LLVM_BUILDMODE@!${CMAKE_BUILD_TYPE}! >> ${SEDSCRIPT_OBJPATH}
29 COMMAND echo s!@LLVM_SYSTEM_LIBS@!${SYSTEM_LIBS}! >> ${SEDSCRIPT_OBJPATH}
30 COMMAND sed -f ${SEDSCRIPT_OBJPATH} < ${BUILDVARIABLES_SRCPATH} > ${BUILDVARIABLES_OBJPATH}
Oscar Fuentescae1b902011-03-19 22:52:33 +000031 VERBATIM
Daniel Dunbarab0ad4e2011-12-01 20:18:09 +000032 COMMENT "Building BuildVariables.inc include."
Oscar Fuentesa229b3c2008-09-22 01:08:49 +000033 )
34
Daniel Dunbarab0ad4e2011-12-01 20:18:09 +000035# Add the llvm-config tool.
36add_llvm_tool(llvm-config
37 llvm-config.cpp
38 )
Chandler Carruth76f9e572011-11-02 17:22:57 +000039
Daniel Dunbarab0ad4e2011-12-01 20:18:09 +000040# Add the dependency on the generation step.
41add_file_dependencies(${CMAKE_CURRENT_SOURCE_DIR}/llvm-config.cpp ${BUILDVARIABLES_OBJPATH})