mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-12 13:30:51 +00:00
CMake: Automatic regeneration of the library dependencies file.
It doesn't stop or reconfigure the build, though, so the user will see a broken build that magically succeeds at the next attempt. It is technically possible to halt the build with a helpful message, and even to automatically restart the build using the new dependencies as it we did when llvm-config was used by cmake for learning dependencies. This is left on the TODO list. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79004 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
717f1dcfac
commit
94d38e561b
@ -1,5 +1,3 @@
|
||||
include(LLVMLibDeps)
|
||||
|
||||
function(get_system_libs return_var)
|
||||
# Returns in `return_var' a list of system libraries used by LLVM.
|
||||
if( NOT MSVC )
|
||||
@ -101,3 +99,29 @@ function(explicit_map_components_to_libraries out_libs)
|
||||
endwhile( 0 LESS ${lst_size} )
|
||||
set(${out_libs} ${result} PARENT_SCOPE)
|
||||
endfunction(explicit_map_components_to_libraries)
|
||||
|
||||
|
||||
# The library dependency data is contained in the file
|
||||
# LLVMLibDeps.cmake on this directory. It is automatically generated
|
||||
# by tools/llvm-config/CMakeLists.txt when the build comprises all the
|
||||
# targets and we are on a environment Posix enough to build the
|
||||
# llvm-config script. This, in practice, just excludes MSVC.
|
||||
|
||||
# When you remove or rename a library from the build, be sure to
|
||||
# remove its file from lib/ as well, or the GenLibDeps.pl script will
|
||||
# include it on its analysis!
|
||||
|
||||
# The format generated by GenLibDeps.pl
|
||||
|
||||
# LLVMARMAsmPrinter.o: LLVMARMCodeGen.o libLLVMAsmPrinter.a libLLVMCodeGen.a libLLVMCore.a libLLVMSupport.a libLLVMTarget.a
|
||||
|
||||
# is translated to:
|
||||
|
||||
# set(MSVC_LIB_DEPS_LLVMARMAsmPrinter LLVMARMCodeGen LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMSupport LLVMTarget)
|
||||
|
||||
# It is necessary to remove the `lib' prefix and the `.a'.
|
||||
|
||||
# This 'sed' script should do the trick:
|
||||
# sed -e s'#\.a##g' -e 's#libLLVM#LLVM#g' -e 's#: # #' -e 's#\(.*\)#set(MSVC_LIB_DEPS_\1)#' ~/llvm/tools/llvm-config/LibDeps.txt
|
||||
|
||||
include(LLVMLibDeps)
|
||||
|
@ -1,26 +1,3 @@
|
||||
# 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:
|
||||
|
||||
# LLVMARMAsmPrinter.o: LLVMARMCodeGen.o libLLVMAsmPrinter.a libLLVMCodeGen.a libLLVMCore.a libLLVMSupport.a libLLVMTarget.a
|
||||
|
||||
# This is translated to:
|
||||
|
||||
# set(MSVC_LIB_DEPS_LLVMARMAsmPrinter LLVMARMCodeGen LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMSupport LLVMTarget)
|
||||
|
||||
# It is necessary to remove the `lib' prefix and the `.a'.
|
||||
|
||||
# This 'sed' script should do the trick:
|
||||
# sed -e s'#\.a##g' -e 's#libLLVM#LLVM#g' -e 's#: # #' -e 's#\(.*\)#set(MSVC_LIB_DEPS_\1)#' ~/llvm/tools/llvm-config/LibDeps.txt
|
||||
#
|
||||
|
||||
# TODO: do this transformations on cmake.
|
||||
|
||||
# It is very important that the LLVM built for extracting this data
|
||||
# must contain all targets, not just X86.
|
||||
|
||||
|
||||
set(MSVC_LIB_DEPS_LLVMARMAsmPrinter LLVMARMCodeGen LLVMARMInfo LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMSupport LLVMSystem LLVMTarget)
|
||||
set(MSVC_LIB_DEPS_LLVMARMCodeGen LLVMARMInfo LLVMCodeGen LLVMCore LLVMSelectionDAG LLVMSupport LLVMSystem LLVMTarget)
|
||||
set(MSVC_LIB_DEPS_LLVMARMInfo LLVMSupport)
|
||||
@ -79,7 +56,7 @@ set(MSVC_LIB_DEPS_LLVMSystemZInfo LLVMSupport)
|
||||
set(MSVC_LIB_DEPS_LLVMTarget LLVMCore LLVMMC LLVMSupport LLVMSystem)
|
||||
set(MSVC_LIB_DEPS_LLVMTransformUtils LLVMAnalysis LLVMCore LLVMSupport LLVMSystem LLVMTarget LLVMipa)
|
||||
set(MSVC_LIB_DEPS_LLVMX86AsmParser LLVMMC LLVMX86Info)
|
||||
set(MSVC_LIB_DEPS_LLVMX86AsmPrinter LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMSupport LLVMSystem LLVMTarget LLVMX86CodeGen LLVMX86Info)
|
||||
set(MSVC_LIB_DEPS_LLVMX86AsmPrinter LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMMC LLVMSupport LLVMSystem LLVMTarget LLVMX86CodeGen LLVMX86Info)
|
||||
set(MSVC_LIB_DEPS_LLVMX86CodeGen LLVMCodeGen LLVMCore LLVMSelectionDAG LLVMSupport LLVMSystem LLVMTarget LLVMX86Info)
|
||||
set(MSVC_LIB_DEPS_LLVMX86Info LLVMSupport)
|
||||
set(MSVC_LIB_DEPS_LLVMXCore LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMSelectionDAG LLVMSupport LLVMSystem LLVMTarget LLVMXCoreInfo)
|
||||
|
@ -124,4 +124,26 @@ install(FILES ${LLVM_CONFIG}
|
||||
WORLD_READ WORLD_EXECUTE
|
||||
DESTINATION bin)
|
||||
|
||||
|
||||
# Regeneration of library dependencies.
|
||||
|
||||
# See the comments at the end of cmake/modules/LLVMConfig.cmake for
|
||||
# notes and guidelines.
|
||||
|
||||
set(LLVMLibDeps ${LLVM_MAIN_SRC_DIR}/cmake/modules/LLVMLibDeps.cmake)
|
||||
set(LLVMLibDeps_TMP ${CMAKE_CURRENT_BINARY_DIR}/LLVMLibDeps.cmake.tmp)
|
||||
|
||||
add_custom_command(OUTPUT ${LLVMLibDeps_TMP}
|
||||
COMMAND sed -e s'@\\.a@@g' -e 's@libLLVM@LLVM@g' -e 's@: @ @' -e 's@\\\(.*\\\)@set\(MSVC_LIB_DEPS_\\1\)@' ${FINAL_LIBDEPS} > ${LLVMLibDeps_TMP}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${LLVMLibDeps_TMP} ${LLVMLibDeps}
|
||||
DEPENDS ${FINAL_LIBDEPS}
|
||||
COMMENT "Updating cmake library dependencies file ${LLVMLibDeps}"
|
||||
)
|
||||
|
||||
if( LLVM_TARGETS_TO_BUILD STREQUAL LLVM_ALL_TARGETS )
|
||||
add_custom_target(llvmlibdeps.target ALL DEPENDS ${LLVMLibDeps_TMP})
|
||||
add_dependencies(llvmlibdeps.target llvm-config.target)
|
||||
set(LLVM_COMMON_DEPENDS ${LLVM_COMMON_DEPENDS} llvmlibdeps.target)
|
||||
endif()
|
||||
|
||||
set(LLVM_COMMON_DEPENDS ${LLVM_COMMON_DEPENDS} PARENT_SCOPE)
|
||||
|
Loading…
Reference in New Issue
Block a user