don hinton via llvm-dev
2016-Oct-10 00:10 UTC
[llvm-dev] Embedding llvm as a git submodule in Project
Hi Timo: You need to find LLVMConfig.cmake in the binary or install directory tree, not the source tree. Although I don't embed clang/llvm, my config might help you figure it -- clang/llvm installed under (could have used build directory) ~/usr : $ cd /Users/dhinton/projects/cover/build/ && rm -rf * && CC=~/usr/bin/clang CXX=~/usr/bin/clang++ LLVM_DIR=~/usr/lib/cmake/llvm cmake ../CVRFI/ -GNinja $ cat ../CVRFI/CMakeLists.txt cmake_minimum_required(VERSION 2.8) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) # Make Debug the default, pass -DCMAKE_BUILD_TYPE=Release to change this. if (NOT CMAKE_BUILD_TYPE) message ("Setting CMAKE_BUILD_TYPE = Debug") set(CMAKE_BUILD_TYPE Debug) endif() if(APPLE) set(CMAKE_MACOSX_RPATH ON) set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -undefined dynamic_lookup") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -undefined dynamic_lookup") endif() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wno-unused-parameter") # While just setting LLVM_DIR will make find_package work, you need to # add it to CMAKE_MODULE_PATH if you want to include AddLLVM, e.g., if # you want to use add_llvm_loadable_module. set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "$ENV{LLVM_DIR}") find_package(LLVM REQUIRED CONFIG) include(AddLLVM) add_definitions(${LLVM_DEFINITIONS}) include_directories(${LLVM_INCLUDE_DIRS}) link_directories(${LLVM_LIBRARY_DIRS}) On Sun, Oct 9, 2016 at 2:03 PM, Timo Janssen via llvm-dev < llvm-dev at lists.llvm.org> wrote:> Hi, > > > I am sorry but I really am not good with cmake yet. > > I made one mistake I used MODULE instead of CONFIG in find_package. > > But even with CONFIG I doesn't work for me. > > > Here my CMakeLists.txt: > > > cmake_minimum_required(VERSION 3.5.1) > project(SimpleProject) > > find_package(LLVM REQUIRED CONFIG PATHS "${CMAKE_CURRENT_SOURCE_DIR}/l > lvm/cmake$ > > message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}") > message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}") > > include_directories(${LLVM_INCLUDE_DIRS}) > add_definitions(${LLVM_DEFINITIONS}) > > add_executable(simple-tool main.cpp) > > llvm_map_components_to_libnames(llvm_libs support) > > target_link_libraries(simple-tool ${llvm_libs}) > > > Here part of the cmake output in terminal: > > CMake Error at CMakeLists.txt:4 (find_package): > Could not find a package configuration file provided by "LLVM" with any > of > the following names: > > LLVMConfig.cmake > llvm-config.cmake > > Add the installation prefix of "LLVM" to CMAKE_PREFIX_PATH or set > "LLVM_DIR" to a directory containing one of the above files. If "LLVM" > provides a separate development package or SDK, be sure it has been > installed. > > > -- Configuring incomplete, errors occurred! > See also "/home/timoo/Schreibtisch/build/CMakeFiles/CMakeOutput.log" > > > I added the PATHS to find_package becouse the command must find the files. > > In the llvm/cmake/modules dircotry are: > > LLVM-Config.cmake (instead of lower case) and > > LLVMConfig.cmake.in (.in added at end) > > > So what must I do? > > > > Am 09.10.2016 um 16:18 schrieb Timo Janssen: > >> Hi all. >> >> >> I want to use llvm in my project and I want to make llvm a git submodule >> in my project. >> >> http://llvm.org/docs/CMake.html#embedding-llvm-in-your-project >> >> At this in the documentation it claims to describe how to embed llvm into >> a project. I tried it that way but it doesn't work, because there isn't any >> findLLVM.cmake in the llvm/cmake/modules directory anymore (i don't know if >> there was one in the past). >> >> >> Can someone tell me how to do it now. >> >> >> Timo Janssen >> >> > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20161009/4e86d36e/attachment.html>
Timo Janssen via llvm-dev
2016-Oct-10 08:33 UTC
[llvm-dev] Embedding llvm as a git submodule in Project
Hi Don, thanks, but that isn't completely what I want. THe way you explain it, I have to first build llvm an install and then seperately my project. But that isn't what I want. I want to build it together as one thing. In the Rust Compiler they have llvm as a submodule in src folder. I don't know how they do it but they don't use CMake so it won't really help to look it up. And I want to only build those llvm libraries I will need for my project. Am 10.10.2016 um 02:10 schrieb don hinton:> Hi Timo: > > You need to find LLVMConfig.cmake in the binary or install directory > tree, not the source tree. > > Although I don't embed clang/llvm, my config might help you figure it > -- clang/llvm installed under (could have used build directory) ~/usr : > > $ cd /Users/dhinton/projects/cover/build/ && rm -rf * && > CC=~/usr/bin/clang CXX=~/usr/bin/clang++ LLVM_DIR=~/usr/lib/cmake/llvm > cmake ../CVRFI/ -GNinja > > $ cat ../CVRFI/CMakeLists.txt > cmake_minimum_required(VERSION 2.8) > > set(CMAKE_EXPORT_COMPILE_COMMANDS ON) > > set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) > set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) > set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) > > # Make Debug the default, pass -DCMAKE_BUILD_TYPE=Release to change this. > if (NOT CMAKE_BUILD_TYPE) > message ("Setting CMAKE_BUILD_TYPE = Debug") > set(CMAKE_BUILD_TYPE Debug) > endif() > > if(APPLE) > set(CMAKE_MACOSX_RPATH ON) > set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} > -undefined dynamic_lookup") > set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} > -undefined dynamic_lookup") > endif() > > set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") > > set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra > -Wno-unused-parameter") > > # While just setting LLVM_DIR will make find_package work, you need to > # add it to CMAKE_MODULE_PATH if you want to include AddLLVM, e.g., if > # you want to use add_llvm_loadable_module. > set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "$ENV{LLVM_DIR}") > find_package(LLVM REQUIRED CONFIG) > include(AddLLVM) > add_definitions(${LLVM_DEFINITIONS}) > include_directories(${LLVM_INCLUDE_DIRS}) > link_directories(${LLVM_LIBRARY_DIRS}) > > > > On Sun, Oct 9, 2016 at 2:03 PM, Timo Janssen via llvm-dev > <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote: > > Hi, > > > I am sorry but I really am not good with cmake yet. > > I made one mistake I used MODULE instead of CONFIG in find_package. > > But even with CONFIG I doesn't work for me. > > > Here my CMakeLists.txt: > > > cmake_minimum_required(VERSION 3.5.1) > project(SimpleProject) > > find_package(LLVM REQUIRED CONFIG PATHS > "${CMAKE_CURRENT_SOURCE_DIR}/llvm/cmake$ > > message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}") > message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}") > > include_directories(${LLVM_INCLUDE_DIRS}) > add_definitions(${LLVM_DEFINITIONS}) > > add_executable(simple-tool main.cpp) > > llvm_map_components_to_libnames(llvm_libs support) > > target_link_libraries(simple-tool ${llvm_libs}) > > > Here part of the cmake output in terminal: > > CMake Error at CMakeLists.txt:4 (find_package): > Could not find a package configuration file provided by "LLVM" > with any of > the following names: > > LLVMConfig.cmake > llvm-config.cmake > > Add the installation prefix of "LLVM" to CMAKE_PREFIX_PATH or set > "LLVM_DIR" to a directory containing one of the above files. If > "LLVM" > provides a separate development package or SDK, be sure it has been > installed. > > > -- Configuring incomplete, errors occurred! > See also "/home/timoo/Schreibtisch/build/CMakeFiles/CMakeOutput.log" > > > I added the PATHS to find_package becouse the command must find > the files. > > In the llvm/cmake/modules dircotry are: > > LLVM-Config.cmake (instead of lower case) and > > LLVMConfig.cmake.in <http://LLVMConfig.cmake.in> (.in added at end) > > > So what must I do? > > > > Am 09.10.2016 um 16:18 schrieb Timo Janssen: > > Hi all. > > > I want to use llvm in my project and I want to make llvm a git > submodule in my project. > > http://llvm.org/docs/CMake.html#embedding-llvm-in-your-project > <http://llvm.org/docs/CMake.html#embedding-llvm-in-your-project> > > At this in the documentation it claims to describe how to > embed llvm into a project. I tried it that way but it doesn't > work, because there isn't any findLLVM.cmake in the > llvm/cmake/modules directory anymore (i don't know if there > was one in the past). > > > Can someone tell me how to do it now. > > > Timo Janssen > > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev> > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20161010/ab42f010/attachment.html>
don hinton via llvm-dev
2016-Oct-10 13:42 UTC
[llvm-dev] Embedding llvm as a git submodule in Project
Sorry my example wasn't helpful. I did take a quick look at rust -- though I didn't download or try to build it -- and they seem to allow you to use an installed or prebuilt version in addition to building it in-tree. However, even when they build it in-tree, they build the whole thing -- see mk/llvm.mk. Good luck... On Mon, Oct 10, 2016 at 1:33 AM, Timo Janssen via llvm-dev < llvm-dev at lists.llvm.org> wrote:> Hi Don, > > > thanks, but that isn't completely what I want. > > THe way you explain it, I have to first build llvm an install and then > seperately my project. > > But that isn't what I want. I want to build it together as one thing. In > the Rust Compiler they have llvm as a submodule in src folder. I don't know > how they do it but they don't use CMake so it won't really help to look it > up. And I want to only build those llvm libraries I will need for my > project. > > Am 10.10.2016 um 02:10 schrieb don hinton: > > Hi Timo: > > You need to find LLVMConfig.cmake in the binary or install directory tree, > not the source tree. > > Although I don't embed clang/llvm, my config might help you figure it -- > clang/llvm installed under (could have used build directory) ~/usr : > > $ cd /Users/dhinton/projects/cover/build/ && rm -rf * && > CC=~/usr/bin/clang CXX=~/usr/bin/clang++ LLVM_DIR=~/usr/lib/cmake/llvm > cmake ../CVRFI/ -GNinja > > $ cat ../CVRFI/CMakeLists.txt > cmake_minimum_required(VERSION 2.8) > > set(CMAKE_EXPORT_COMPILE_COMMANDS ON) > > set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) > set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) > set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) > > # Make Debug the default, pass -DCMAKE_BUILD_TYPE=Release to change this. > if (NOT CMAKE_BUILD_TYPE) > message ("Setting CMAKE_BUILD_TYPE = Debug") > set(CMAKE_BUILD_TYPE Debug) > endif() > > if(APPLE) > set(CMAKE_MACOSX_RPATH ON) > set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -undefined > dynamic_lookup") > set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -undefined > dynamic_lookup") > endif() > > set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") > > set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra > -Wno-unused-parameter") > > # While just setting LLVM_DIR will make find_package work, you need to > # add it to CMAKE_MODULE_PATH if you want to include AddLLVM, e.g., if > # you want to use add_llvm_loadable_module. > set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "$ENV{LLVM_DIR}") > find_package(LLVM REQUIRED CONFIG) > include(AddLLVM) > add_definitions(${LLVM_DEFINITIONS}) > include_directories(${LLVM_INCLUDE_DIRS}) > link_directories(${LLVM_LIBRARY_DIRS}) > > > > On Sun, Oct 9, 2016 at 2:03 PM, Timo Janssen via llvm-dev < > llvm-dev at lists.llvm.org> wrote: > >> Hi, >> >> >> I am sorry but I really am not good with cmake yet. >> >> I made one mistake I used MODULE instead of CONFIG in find_package. >> >> But even with CONFIG I doesn't work for me. >> >> >> Here my CMakeLists.txt: >> >> >> cmake_minimum_required(VERSION 3.5.1) >> project(SimpleProject) >> >> find_package(LLVM REQUIRED CONFIG PATHS "${CMAKE_CURRENT_SOURCE_DIR}/l >> lvm/cmake$ >> >> message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}") >> message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}") >> >> include_directories(${LLVM_INCLUDE_DIRS}) >> add_definitions(${LLVM_DEFINITIONS}) >> >> add_executable(simple-tool main.cpp) >> >> llvm_map_components_to_libnames(llvm_libs support) >> >> target_link_libraries(simple-tool ${llvm_libs}) >> >> >> Here part of the cmake output in terminal: >> >> CMake Error at CMakeLists.txt:4 (find_package): >> Could not find a package configuration file provided by "LLVM" with any >> of >> the following names: >> >> LLVMConfig.cmake >> llvm-config.cmake >> >> Add the installation prefix of "LLVM" to CMAKE_PREFIX_PATH or set >> "LLVM_DIR" to a directory containing one of the above files. If "LLVM" >> provides a separate development package or SDK, be sure it has been >> installed. >> >> >> -- Configuring incomplete, errors occurred! >> See also "/home/timoo/Schreibtisch/build/CMakeFiles/CMakeOutput.log" >> >> >> I added the PATHS to find_package becouse the command must find the files. >> >> In the llvm/cmake/modules dircotry are: >> >> LLVM-Config.cmake (instead of lower case) and >> >> LLVMConfig.cmake.in (.in added at end) >> >> >> So what must I do? >> >> >> >> Am 09.10.2016 um 16:18 schrieb Timo Janssen: >> >>> Hi all. >>> >>> >>> I want to use llvm in my project and I want to make llvm a git submodule >>> in my project. >>> >>> http://llvm.org/docs/CMake.html#embedding-llvm-in-your-project >>> >>> At this in the documentation it claims to describe how to embed llvm >>> into a project. I tried it that way but it doesn't work, because there >>> isn't any findLLVM.cmake in the llvm/cmake/modules directory anymore (i >>> don't know if there was one in the past). >>> >>> >>> Can someone tell me how to do it now. >>> >>> >>> Timo Janssen >>> >>> >> _______________________________________________ >> LLVM Developers mailing list >> llvm-dev at lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >> > > > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20161010/752d30ff/attachment.html>