Óscar Fuentes wrote: > The script examines library interdependencies dumping the symbol > definitions and references they contain. For this, you need to build the > libraries first. Later on the build, the executables just provide names > of components, the script maps this names to actual libraries and > returns the full list of needed libraries on the correct order for using > it on the link command. > > If you know an elegant way to handle this with CMake, I'll like to hear > it. > > BTW, this is for the Low Level Virtual Machine (LLVM) www.llvm.org
I assume you're refering to this script: http://llvm.org/svn/llvm-project/llvm/trunk/utils/GenLibDeps.pl It seems to rely on certain output from "nm". Does this work with any windows compilers? Inferring dependencies among already-built static libraries is not a design goal for CMake as it tries not to depend on any low-level details of native tools. However, given an explicit list of static libs and their *direct* dependencies, CMake will chain them automatically and handle the circular cases. I think in the long run LLVM should just explicitly declare its dependencies. They can't be *that* complicated. See below for output I got from building llvm. Would it really be so bad to list that by hand? It's 18 lines that could be distributed throughout each library's build files. The executables already list their direct dependencies explicitly. -Brad libLLVMAnalysis.a: libLLVMCore.a libLLVMSupport.a libLLVMSystem.a libLLVMTarget.a libLLVMArchive.a: libLLVMBitReader.a libLLVMCore.a libLLVMSupport.a libLLVMSystem.a libLLVMAsmParser.a: libLLVMCore.a libLLVMSupport.a libLLVMBitReader.a: libLLVMCore.a libLLVMSupport.a libLLVMBitWriter.a: libLLVMCore.a libLLVMSupport.a libLLVMCodeGen.a: libLLVMCore.a libLLVMScalarOpts.a libLLVMSupport.a libLLVMSystem.a libLLVMTarget.a libLLVMTransformUtils.a libLLVMCore.a: libLLVMSupport.a libLLVMDebugger.a: libLLVMBitReader.a libLLVMCore.a libLLVMSupport.a libLLVMSystem.a libLLVMInstrumentation.a: libLLVMCore.a libLLVMScalarOpts.a libLLVMSupport.a libLLVMTransformUtils.a libLLVMLinker.a: libLLVMArchive.a libLLVMBitReader.a libLLVMCore.a libLLVMSupport.a libLLVMSystem.a libLLVMScalarOpts.a: libLLVMAnalysis.a libLLVMCore.a libLLVMSupport.a libLLVMTarget.a libLLVMTransformUtils.a libLLVMSelectionDAG.a: libLLVMAnalysis.a libLLVMCodeGen.a libLLVMCore.a libLLVMSupport.a libLLVMSystem.a libLLVMTarget.a libLLVMSupport.a: libLLVMSystem.a libLLVMSystem.a: libLLVMTarget.a: libLLVMCore.a libLLVMSupport.a libLLVMTransformUtils.a: libLLVMAnalysis.a libLLVMCore.a libLLVMSupport.a libLLVMTarget.a libLLVMipa.a libLLVMipa.a: libLLVMAnalysis.a libLLVMCore.a libLLVMSupport.a libLLVMipo.a: libLLVMAnalysis.a libLLVMCore.a libLLVMSupport.a libLLVMTarget.a libLLVMTransformUtils.a libLLVMipa.a _______________________________________________ CMake mailing list [email protected] http://www.cmake.org/mailman/listinfo/cmake
