CMake: remove support for llvm-config-generated dependencies in the build

llvm-svn: 73979
This commit is contained in:
Douglas Gregor 2009-06-23 18:30:17 +00:00
parent 27a85303fe
commit 28a3a15808
4 changed files with 6 additions and 68 deletions

View File

@ -100,24 +100,6 @@ configure_file(
set(llvm_builded_incs_dir ${LLVM_BINARY_DIR}/include/llvm)
# The USE_EXPLICIT_DEPENDENCIES variable will be TRUE to indicate that
# we should use the library dependencies explicitly specified in the
# CMakeLists.txt files rather than those determined by
# llvm-config. This value must be true for non-make and IDE
# generators.
if (MSVC_IDE)
set(DEFAULT_USE_EXPLICIT_DEPENDENCIES ON)
elseif (XCODE)
set(DEFAULT_USE_EXPLICIT_DEPENDENCIES ON)
else ()
set(DEFAULT_USE_EXPLICIT_DEPENDENCIES OFF)
endif ()
option(USE_EXPLICIT_DEPENDENCIES
"Use explicit dependencies instead of llvm-config"
${DEFAULT_USE_EXPLICIT_DEPENDENCIES})
mark_as_advanced(USE_EXPLICIT_DEPENDENCIES)
# Add path for custom modules
set(CMAKE_MODULE_PATH
${CMAKE_MODULE_PATH}

View File

@ -26,11 +26,7 @@ macro(add_llvm_executable name)
if( LLVM_LINK_COMPONENTS )
llvm_config(${name} ${LLVM_LINK_COMPONENTS})
endif( LLVM_LINK_COMPONENTS )
if( USE_EXPLICIT_DEPENDENCIES )
target_link_libraries(${name} ${llvm_libs})
else( )
add_dependencies(${name} llvm-config.target)
endif( )
target_link_libraries(${name} ${llvm_libs})
get_system_libs(llvm_system_libs)
if( llvm_system_libs )
target_link_libraries(${name} ${llvm_system_libs})

View File

@ -20,12 +20,7 @@ endfunction(get_system_libs)
macro(llvm_config executable)
# extra args is the list of link components.
if( USE_EXPLICIT_DEPENDENCIES )
explicit_llvm_config(${executable} ${ARGN})
else( )
nix_llvm_config(${executable} ${ARGN})
endif( )
explicit_llvm_config(${executable} ${ARGN})
endmacro(llvm_config)
@ -127,44 +122,7 @@ function(explicit_map_components_to_libraries out_libs)
set(${out_libs} ${result} PARENT_SCOPE)
endfunction(explicit_map_components_to_libraries)
macro(nix_llvm_config executable)
set(lc "")
foreach(c ${ARGN})
set(lc "${lc} ${c}")
endforeach(c)
if( NOT HAVE_LLVM_CONFIG )
target_link_libraries(${executable}
"`${LLVM_TOOLS_BINARY_DIR}/llvm-config --libs ${lc}`")
else( NOT HAVE_LLVM_CONFIG )
# tbi: Error handling.
if( NOT PERL_EXECUTABLE )
message(FATAL_ERROR "Perl required but not found!")
endif( NOT PERL_EXECUTABLE )
execute_process(
COMMAND sh -c "${PERL_EXECUTABLE} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/llvm-config --libs ${lc}"
RESULT_VARIABLE rv
OUTPUT_VARIABLE libs
OUTPUT_STRIP_TRAILING_WHITESPACE)
if(NOT rv EQUAL 0)
message(FATAL_ERROR "llvm-config failed for executable ${executable}")
endif(NOT rv EQUAL 0)
string(REPLACE " " ";" libs ${libs})
foreach(c ${libs})
if(c MATCHES ".*\\.o")
get_filename_component(fn ${c} NAME)
target_link_libraries(${executable}
${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}/${CMAKE_CFG_INTDIR}/${fn})
else(c MATCHES ".*\\.o")
string(REPLACE "-l" "" fn ${c})
target_link_libraries(${executable} ${fn})
endif(c MATCHES ".*\\.o")
endforeach(c)
endif( NOT HAVE_LLVM_CONFIG )
endmacro(nix_llvm_config)
# This data is used on MSVC for stablishing executable/library
# This data is used to establish executable/library
# dependencies. Comes from the llvm-config script, which is built and
# installed on the bin directory for MinGW or Linux. At the end of the
# script, you'll see lines like this:

View File

@ -2,7 +2,9 @@
# large and three small executables. This is done to minimize memory load
# in parallel builds. Please retain this ordering.
if (NOT USE_EXPLICIT_DEPENDENCIES)
# FIXME: We don't yet have the ability to build llvm-config with CMake
# based on explicit dependencies.
if (FALSE)
add_subdirectory(llvm-config)
endif()