diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake index 0236746b28a..40ff5eda5d0 100755 --- a/cmake/modules/AddLLVM.cmake +++ b/cmake/modules/AddLLVM.cmake @@ -197,3 +197,54 @@ function(add_unittest test_suite test_name) endif () set_property(TARGET ${test_name} PROPERTY COMPILE_FLAGS "${target_compile_flags}") endfunction() + +# This function provides an automatic way to 'configure'-like generate a file +# based on a set of common and custom variables, specifically targetting the +# variables needed for the 'lit.site.cfg' files. This function bundles the +# common variables that any Lit instance is likely to need, and custom +# variables can be passed in. +function(configure_lit_site_cfg input output) + foreach(c ${LLVM_TARGETS_TO_BUILD}) + set(TARGETS_BUILT "${TARGETS_BUILT} ${c}") + endforeach(c) + set(TARGETS_TO_BUILD ${TARGETS_BUILT}) + + set(SHLIBEXT "${LTDL_SHLIB_EXT}") + set(SHLIBDIR "${LLVM_BINARY_DIR}/lib/${CMAKE_CFG_INTDIR}") + + if(BUILD_SHARED_LIBS) + set(LLVM_SHARED_LIBS_ENABLED "1") + else() + set(LLVM_SHARED_LIBS_ENABLED "0") + endif(BUILD_SHARED_LIBS) + + if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + set(SHLIBPATH_VAR "DYLD_LIBRARY_PATH") + else() # Default for all other unix like systems. + # CMake hardcodes the library locaction using rpath. + # Therefore LD_LIBRARY_PATH is not required to run binaries in the + # build dir. We pass it anyways. + set(SHLIBPATH_VAR "LD_LIBRARY_PATH") + endif() + + # Configuration-time: See Unit/lit.site.cfg.in + set(LLVM_BUILD_MODE "%(build_mode)s") + + set(LLVM_SOURCE_DIR ${LLVM_MAIN_SRC_DIR}) + set(LLVM_BINARY_DIR ${LLVM_BINARY_DIR}) + set(LLVM_TOOLS_DIR "${LLVM_TOOLS_BINARY_DIR}/%(build_config)s") + set(PYTHON_EXECUTABLE ${PYTHON_EXECUTABLE}) + set(ENABLE_SHARED ${LLVM_SHARED_LIBS_ENABLED}) + set(SHLIBPATH_VAR ${SHLIBPATH_VAR}) + + if(LLVM_ENABLE_ASSERTIONS AND NOT MSVC_IDE) + set(ENABLE_ASSERTIONS "1") + else() + set(ENABLE_ASSERTIONS "0") + endif() + + set(HOST_OS ${CMAKE_HOST_SYSTEM_NAME}) + set(HOST_ARCH ${CMAKE_HOST_SYSTEM_PROCESSOR}) + + configure_file(${input} ${output} @ONLY) +endfunction() diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index aeb7d52c20e..4bcc98708fc 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,61 +1,16 @@ -foreach(c ${LLVM_TARGETS_TO_BUILD}) - set(TARGETS_BUILT "${TARGETS_BUILT} ${c}") -endforeach(c) -set(TARGETS_TO_BUILD ${TARGETS_BUILT}) - -# FIXME: This won't work for project files, we need to use a --param. -set(LLVM_LIBS_DIR "${LLVM_BINARY_DIR}/lib/${CMAKE_CFG_INTDIR}") -set(SHLIBEXT "${LTDL_SHLIB_EXT}") - -set(SHLIBDIR "${LLVM_BINARY_DIR}/lib/${CMAKE_CFG_INTDIR}") - -if(BUILD_SHARED_LIBS) - set(LLVM_SHARED_LIBS_ENABLED "1") -else() - set(LLVM_SHARED_LIBS_ENABLED "0") -endif(BUILD_SHARED_LIBS) - -if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - set(SHLIBPATH_VAR "DYLD_LIBRARY_PATH") -else() # Default for all other unix like systems. - # CMake hardcodes the library locaction using rpath. - # Therefore LD_LIBRARY_PATH is not required to run binaries in the - # build dir. We pass it anyways. - set(SHLIBPATH_VAR "LD_LIBRARY_PATH") -endif() - set(LIT_ARGS "${LLVM_LIT_ARGS}") separate_arguments(LIT_ARGS) MAKE_DIRECTORY(${CMAKE_CURRENT_BINARY_DIR}/Unit) -# Configuration-time: See Unit/lit.site.cfg.in -set(LLVM_BUILD_MODE "%(build_mode)s") - -set(LLVM_SOURCE_DIR ${LLVM_MAIN_SRC_DIR}) -set(LLVM_BINARY_DIR ${LLVM_BINARY_DIR}) -set(LLVM_TOOLS_DIR "${LLVM_TOOLS_BINARY_DIR}/%(build_config)s") -set(PYTHON_EXECUTABLE ${PYTHON_EXECUTABLE}) -set(ENABLE_SHARED ${LLVM_SHARED_LIBS_ENABLED}) -set(SHLIBPATH_VAR ${SHLIBPATH_VAR}) - -if(LLVM_ENABLE_ASSERTIONS AND NOT MSVC_IDE) - set(ENABLE_ASSERTIONS "1") -else() - set(ENABLE_ASSERTIONS "0") -endif() - -set(HOST_OS ${CMAKE_HOST_SYSTEM_NAME}) -set(HOST_ARCH ${CMAKE_HOST_SYSTEM_PROCESSOR}) - -configure_file( +configure_lit_site_cfg( ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg - @ONLY) -configure_file( + ) +configure_lit_site_cfg( ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.in ${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg - @ONLY) + ) # Setup the basic dependencies for running LLVM's regression and unit test # suites.