[llvm-commits] [PATCH][CMake] Removing LLVMLibDeps.cmake and exporting libraries for CMake clients.

Óscar Fuentes ofv at wanadoo.es
Wed Sep 8 19:34:34 PDT 2010


[llvm-dev ml elided]

Michael Spencer <bigcheesegs at gmail.com>
writes:

> While implementing the object file library I ran into some weird
> linking issues. It turned out that you have to manually specify extra
> library dependencies in LLVMLibDeps.cmake, along with what you already
> specify in the CMakeLists.txt file for the component.

Uh? What those extra library dependencies are and why they do require
modifications to LLVMLibDeps.cmake? Please provide an example.

> The attached patches remove this requirement,

Your patch switches from automatic to manually maintained library
dependencies. On the case of LLVM, that increases the workload of the
maintainer and it is the CMake equivalent of spaghetti code. Only a
strong benefit would justify that.

> and add real CMake
> package export capabilities. A CMake user wishing to use LLVM can now
> use something similar to this:
>
> cmake_minimum_required(VERSION 2.8)
>
> find_package(LLVM REQUIRED)
> add_definitions(${LLVM_CXXFLAGS})
> add_executable(llvm-external-test llvm-external-test.cpp)
> target_link_libraries(llvm-external-test ${LLVM_SYSTEM_LIBS}
> ${LLVM_JIT_LIBS} ${LLVM_NATIVECODEGEN_LIBS})

How is that better than

http://www.llvm.org/docs/CMake.html#embedding

? Think that it is usual practice to have and use multiple LLVM builds
with different configurations on the same system.

> llvm+clang compile with these changes on both Linux and MSVS.
> Currently both patches must be applied at the same time. I can
> refactor them into a 3 step process if needed.
>
> Does this break anything for anyone?

If that is accepted (and for now I see no reason for accepting it)
extensive testing on all major platforms (Linux, OS/X,
Windows/mingw/MSVC++) is required before throwing away the current
method, wich has its limitations, but we know them.

[snip]




More information about the llvm-commits mailing list