Skip to content
This repository has been archived by the owner on Jan 7, 2023. It is now read-only.

Commit

Permalink
LLVM prebuilts improvement
Browse files Browse the repository at this point in the history
Change-Id: Ica44e8bd575124cfe742a86210437c93bf5a47b6
  • Loading branch information
lwesiers committed Jul 31, 2019
1 parent a4af5b1 commit 605739e
Show file tree
Hide file tree
Showing 5 changed files with 202 additions and 18 deletions.
9 changes: 7 additions & 2 deletions CMakeLists.txt
Expand Up @@ -49,7 +49,8 @@ set(LLVM_TARGETS_TO_BUILD "X86" CACHE STRING "desc" FORCE)
set(LLVM_BUILD_TOOLS true CACHE BOOL "desc" FORCE)
set(LLVM_INCLUDE_TOOLS true CACHE BOOL "desc" FORCE)
set(LLVM_INSTALL_UTILS false CACHE BOOL "desc" FORCE)
set(LLVM_INCLUDE_UTILS false CACHE BOOL "desc" FORCE)
set(LLVM_INCLUDE_UTILS true CACHE BOOL "desc" FORCE) # required to run LIT tests
set(LLVM_BUILD_UTILS false CACHE BOOL "desc" FORCE)
set(LLVM_BUILD_EXAMPLES false CACHE BOOL "desc" FORCE)
set(LLVM_INCLUDE_EXAMPLES false CACHE BOOL "desc" FORCE)
set(LLVM_BUILD_TESTS false CACHE BOOL "desc" FORCE)
Expand All @@ -64,13 +65,15 @@ set(LLVM_ENABLE_WERROR false CACHE BOOL "desc" FORCE)
set(LLVM_ABI_BREAKING_CHECKS FORCE_OFF CACHE BOOL "desc" FORCE)
set(LLVM_BUILD_RUNTIME true CACHE BOOL "desc" FORCE)
set(LLVM_ENABLE_TERMINFO false CACHE BOOL "desc" FORCE)
set(LLVM_ENABLE_DUMP true CACHE BOOL "desc" FORCE)
set(LLVM_BUILD_LLVM_DYLIB false CACHE BOOL "desc" FORCE)

if(DEFINED BUILD_PACKAGE)
if(NOT WIN32)
set(LLVM_BUILD_LLVM_DYLIB true CACHE BOOL "desc" FORCE)
endif()
set(LLVM_BUILD_TOOLS false CACHE BOOL "desc" FORCE)
set(LLVM_INSTALL_UTILS true CACHE BOOL "desc" FORCE)
set(LLVM_BUILD_UTILS true CACHE BOOL "desc" FORCE)
endif()


Expand All @@ -80,6 +83,7 @@ set(LLVM_OPTIONS
"-DLLVM_INCLUDE_TOOLS=${LLVM_INCLUDE_TOOLS}"
"-DLLVM_INSTALL_UTILS=${LLVM_INSTALL_UTILS}"
"-DLLVM_INCLUDE_UTILS=${LLVM_INCLUDE_UTILS}"
"-DLLVM_BUILD_UTILS=${LLVM_BUILD_UTILS}"
"-DLLVM_BUILD_EXAMPLES=${LLVM_BUILD_EXAMPLES}"
"-DLLVM_INCLUDE_EXAMPLES=${LLVM_INCLUDE_EXAMPLES}"
"-DLLVM_BUILD_TESTS=${LLVM_BUILD_TESTS}"
Expand All @@ -94,6 +98,7 @@ set(LLVM_OPTIONS
"-DLLVM_ABI_BREAKING_CHECKS=${LLVM_ABI_BREAKING_CHECKS}"
"-DLLVM_BUILD_RUNTIME=${LLVM_BUILD_RUNTIME}"
"-DLLVM_ENABLE_TERMINFO=${LLVM_ENABLE_TERMINFO}"
"-DLLVM_ENABLE_DUMP=${LLVM_ENABLE_DUMP}"
"-DLLVM_BUILD_LLVM_DYLIB=${LLVM_BUILD_LLVM_DYLIB}"
)

Expand Down
44 changes: 28 additions & 16 deletions llvm_prebuilt.cmake
Expand Up @@ -24,23 +24,35 @@
#
# ======================= end_copyright_notice ==================================

set(LLVM_USE_PREBUILT true)
set(LLVM_BUILD_TYPE ${CMAKE_BUILD_TYPE})

if(NOT LLVM_PREBUILT_PATH)
set(LLVM_PREBUILT_PATH "${CMAKE_CURRENT_BINARY_DIR}/src")
if(DEFINED BUILD_TYPE)
if(${BUILD_TYPE} STREQUAL "release")
set(LLVM_BUILD_TYPE "Release")
else()
set(LLVM_BUILD_TYPE "Debug")
endif()
endif()
find_path (LLVM_DIR LLVM-Config.cmake
${LLVM_PREBUILT_PATH}/lib/cmake/llvm
)
if(NOT LLVM_DIR)
message(FATAL_ERROR "LLVM prebuilt not found at: ${LLVM_PREBUILT_PATH}/lib/cmake/llvm")

if(NOT DEFINED LLVM_BUILD_PREBUILDS_DIR)
if(NOT EXISTS ${LLVM_BUILD_PREBUILDS_DIR})
set(LLVM_BUILD_PREBUILDS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../prebuild-llvm/${LLVM_BUILD_TYPE}")
endif()
endif()
find_package(LLVM REQUIRED CONFIG)
message(STATUS "[LLVM Prebuilt] Found LLVM ${LLVM_PACKAGE_VERSION} in ${LLVM_DIR}")
message(STATUS "[LLVM Prebuilt] Using LLVM includes from: ${LLVM_INCLUDE_DIRS}")
message(STATUS "[LLVM Prebuilt] Using LLVM libraries from: ${LLVM_LIBRARY_DIR}")
unset(LLVM_DIR CACHE)

#set(LLVM_INCLUDE_DIRS ${LLVM_INCLUDE_DIRS} PARENT_SCOPE)
#set(LLVM_LIBRARY_DIR ${LLVM_LIBRARY_DIR} PARENT_SCOPE)
#set(LLVM_DEFINITIONS ${LLVM_DEFINITIONS} PARENT_SCOPE)

if(EXISTS ${LLVM_BUILD_PREBUILDS_DIR}/include)
list(APPEND CMAKE_MODULE_PATH "${LLVM_BUILD_PREBUILDS_DIR}/lib/cmake/llvm/")

set(LLVM_DIR ${LLVM_BUILD_PREBUILDS_DIR}/lib/cmake/llvm)
include(${LLVM_BUILD_PREBUILDS_DIR}/lib/cmake/llvm/LLVMConfig.cmake)
include(${LLVM_BUILD_PREBUILDS_DIR}/lib/cmake/llvm/AddLLVM.cmake)

find_package(LLVM REQUIRED CONFIG)

set(LLVM_INCLUDE_DIRS "${LLVM_BUILD_PREBUILDS_DIR}/include")

set(LLVM_USE_PREBUILT true)

message(STATUS "[LLVM_PATCHER\\Prebuilt] : Found prebuilt of llvm in version ${PACKAGE_VERSION}")
endif()
@@ -0,0 +1,37 @@
From 3436463bf7021c9986f3a52ea0b699abfcbd0b95 Mon Sep 17 00:00:00 2001
From: Stefan Granitz <stefan.graenitz@gmail.com>
Date: Fri, 11 Jan 2019 19:34:34 +0000
Subject: [PATCH] [CMake] Export utility targets to the build/install tree
depending on LLVM_BUILD/INSTALL_UTILS

Summary:
Allow external projects to import test-related targets like FileCheck, count, not etc. and query binary paths, properties, etc.
This would be useful for LLDB, because it reduces the difference between in-tree vs. standalone builds and simplifies CMake logic.

Reviewers: chapuni, gottesmm, beanz

Reviewed By: beanz

Subscribers: mgorny, lldb-commits, llvm-commits, #lldb

Differential Revision: https://reviews.llvm.org/D56606

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@350959 91177308-0d34-0410-b5e6-96231b3b80d8
---
cmake/modules/AddLLVM.cmake | 3 +++
1 file changed, 3 insertions(+)

diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake
index 9b7d24184fe0..4dbc0ddaf4f0 100644
--- a/cmake/modules/AddLLVM.cmake
+++ b/cmake/modules/AddLLVM.cmake
@@ -920,6 +920,9 @@ macro(add_llvm_utility name)
DEPENDS ${name}
COMPONENT ${name})
endif()
+ set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${name})
+ elseif( LLVM_BUILD_UTILS )
+ set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS_BUILDTREE_ONLY ${name})
endif()
endmacro(add_llvm_utility name)

@@ -0,0 +1,65 @@
From 4ce5f86eddc0bf42a971db4509829036d5b17b92 Mon Sep 17 00:00:00 2001
From: Stefan Granitz <stefan.graenitz@gmail.com>
Date: Fri, 1 Feb 2019 13:08:09 +0000
Subject: [PATCH] [CMake] Add install targets for utilities to LLVM exports if
LLVM_INSTALL_UTILS=ON

Summary: D56606 was only appending target names to the `LLVM_EXPORTS`/`LLVM_EXPORTS_BUILDTREE_ONLY` properties. Targets showed up correctly in the build-tree `LLVMExports.cmake`, but they were missing in the installed one (as we found in https://bugs.llvm.org/show_bug.cgi?id=40443), because install did not register them explicitly.

Reviewers: mgorny, smeenai, beanz, gottesmm, dschuff, tstellar, serge-sans-paille

Reviewed By: smeenai

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D57383

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352869 91177308-0d34-0410-b5e6-96231b3b80d8
---
cmake/modules/AddLLVM.cmake | 32 +++++++++++++++++++++-----------
1 file changed, 21 insertions(+), 11 deletions(-)

diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake
index 39781bf34e24..607d6e682b49 100644
--- a/cmake/modules/AddLLVM.cmake
+++ b/cmake/modules/AddLLVM.cmake
@@ -924,18 +924,28 @@ macro(add_llvm_utility name)

add_llvm_executable(${name} DISABLE_LLVM_LINK_LLVM_DYLIB ${ARGN})
set_target_properties(${name} PROPERTIES FOLDER "Utils")
- if( LLVM_INSTALL_UTILS AND LLVM_BUILD_UTILS )
- install (TARGETS ${name}
- RUNTIME DESTINATION ${LLVM_UTILS_INSTALL_DIR}
- COMPONENT ${name})
- if (NOT CMAKE_CONFIGURATION_TYPES)
- add_llvm_install_targets(install-${name}
- DEPENDS ${name}
- COMPONENT ${name})
+ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
+ if (LLVM_INSTALL_UTILS AND LLVM_BUILD_UTILS)
+ if (${name} IN_LIST LLVM_DISTRIBUTION_COMPONENTS OR
+ NOT LLVM_DISTRIBUTION_COMPONENTS)
+ set(export_to_llvmexports EXPORT LLVMExports)
+ set_property(GLOBAL PROPERTY LLVM_HAS_EXPORTS True)
+ endif()
+
+ install(TARGETS ${name}
+ ${export_to_llvmexports}
+ RUNTIME DESTINATION ${LLVM_UTILS_INSTALL_DIR}
+ COMPONENT ${name})
+
+ if (NOT LLVM_ENABLE_IDE)
+ add_llvm_install_targets(install-${name}
+ DEPENDS ${name}
+ COMPONENT ${name})
+ endif()
+ set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${name})
+ elseif(LLVM_BUILD_UTILS)
+ set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS_BUILDTREE_ONLY ${name})
endif()
- set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${name})
- elseif( LLVM_BUILD_UTILS )
- set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS_BUILDTREE_ONLY ${name})
endif()
endmacro(add_llvm_utility name)

@@ -0,0 +1,65 @@
From 4ce5f86eddc0bf42a971db4509829036d5b17b92 Mon Sep 17 00:00:00 2001
From: Stefan Granitz <stefan.graenitz@gmail.com>
Date: Fri, 1 Feb 2019 13:08:09 +0000
Subject: [PATCH] [CMake] Add install targets for utilities to LLVM exports if
LLVM_INSTALL_UTILS=ON

Summary: D56606 was only appending target names to the `LLVM_EXPORTS`/`LLVM_EXPORTS_BUILDTREE_ONLY` properties. Targets showed up correctly in the build-tree `LLVMExports.cmake`, but they were missing in the installed one (as we found in https://bugs.llvm.org/show_bug.cgi?id=40443), because install did not register them explicitly.

Reviewers: mgorny, smeenai, beanz, gottesmm, dschuff, tstellar, serge-sans-paille

Reviewed By: smeenai

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D57383

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352869 91177308-0d34-0410-b5e6-96231b3b80d8
---
cmake/modules/AddLLVM.cmake | 32 +++++++++++++++++++++-----------
1 file changed, 21 insertions(+), 11 deletions(-)

diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake
index 39781bf34e24..607d6e682b49 100644
--- a/cmake/modules/AddLLVM.cmake
+++ b/cmake/modules/AddLLVM.cmake
@@ -911,18 +911,28 @@ macro(add_llvm_utility name)

add_llvm_executable(${name} DISABLE_LLVM_LINK_LLVM_DYLIB ${ARGN})
set_target_properties(${name} PROPERTIES FOLDER "Utils")
- if( LLVM_INSTALL_UTILS AND LLVM_BUILD_UTILS )
- install (TARGETS ${name}
- RUNTIME DESTINATION ${LLVM_UTILS_INSTALL_DIR}
- COMPONENT ${name})
- if (NOT LLVM_ENABLE_IDE)
- add_llvm_install_targets(install-${name}
- DEPENDS ${name}
- COMPONENT ${name})
+ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
+ if (LLVM_INSTALL_UTILS AND LLVM_BUILD_UTILS)
+ if (${name} IN_LIST LLVM_DISTRIBUTION_COMPONENTS OR
+ NOT LLVM_DISTRIBUTION_COMPONENTS)
+ set(export_to_llvmexports EXPORT LLVMExports)
+ set_property(GLOBAL PROPERTY LLVM_HAS_EXPORTS True)
+ endif()
+
+ install(TARGETS ${name}
+ ${export_to_llvmexports}
+ RUNTIME DESTINATION ${LLVM_UTILS_INSTALL_DIR}
+ COMPONENT ${name})
+
+ if (NOT LLVM_ENABLE_IDE)
+ add_llvm_install_targets(install-${name}
+ DEPENDS ${name}
+ COMPONENT ${name})
+ endif()
+ set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${name})
+ elseif(LLVM_BUILD_UTILS)
+ set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS_BUILDTREE_ONLY ${name})
endif()
- set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${name})
- elseif( LLVM_BUILD_UTILS )
- set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS_BUILDTREE_ONLY ${name})
endif()
endmacro(add_llvm_utility name)

0 comments on commit 605739e

Please sign in to comment.