[llvm-commits] [PATCH][CMake][clang-tools-extra] Apply add_llvm_external_project to clang-tools-extra.

NAKAMURA Takumi geek4civic at gmail.com
Wed Sep 5 00:44:42 PDT 2012


This patchset introduces availability of external clang-tools-extra in
the build.

By default,
LLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR=/path/to/srcroot/tools/clang/extra
and build directory is in tools/clang/extra.

check-clang-tools and check-all pased. :p

Please review, thank you.

ps. I will not introduce extra-dir stuff to autoconf build, for now.

...Takumi
-------------- next part --------------
From 8ffce2ea3c00d5b861c8af3ea96d2b3137d0542c Mon Sep 17 00:00:00 2001
From: NAKAMURA Takumi <geek4civic at gmail.com>
Date: Wed, 5 Sep 2012 16:18:48 +0900
Subject: [PATCH 1/2] [CMake] Enhance add_llvm_external_project.
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="------------1.7.4.1"

This is a multi-part message in MIME format.
--------------1.7.4.1
Content-Type: text/plain; charset=UTF-8; format=fixed
Content-Transfer-Encoding: 8bit


  - Substitute hyphen to underscore, s/-/_/g, as the variable name.
  - Additional parameter can be specified as the name of directory.

e.g.) add_llvm_external_project(clang-tools-extra extra)

  - LLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR=/path/to/srcroot/tools/clang/extra, by default.
  - Build directory is in tools/clang/extra
---
 llvm/cmake/modules/AddLLVM.cmake |   12 +++++++++---
 1 files changed, 9 insertions(+), 3 deletions(-)


--------------1.7.4.1
Content-Type: text/x-patch; name="0001-CMake-Enhance-add_llvm_external_project.patch.txt"
Content-Transfer-Encoding: 8bit
Content-Disposition: attachment; filename="0001-CMake-Enhance-add_llvm_external_project.patch.txt"

diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake
index f44a27c..a999f30 100755
--- a/llvm/cmake/modules/AddLLVM.cmake
+++ b/llvm/cmake/modules/AddLLVM.cmake
@@ -135,16 +135,22 @@ endmacro(add_llvm_target)
 # lld, and Polly. This adds two options. One for the source directory of the
 # project, which defaults to ${CMAKE_CURRENT_SOURCE_DIR}/${name}. Another to
 # enable or disable building it with everthing else.
+# Additional parameter can be specified as the name of directory.
 macro(add_llvm_external_project name)
-  string(TOUPPER ${name} nameUPPER)
-  set(LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/${name}"
+  set(add_llvm_external_dir "${ARGN}")
+  if("${add_llvm_external_dir}" STREQUAL "")
+    set(add_llvm_external_dir ${name})
+  endif()
+  string(REPLACE "-" "_" nameUNDERSCORE ${name})
+  string(TOUPPER ${nameUNDERSCORE} nameUPPER)
+  set(LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/${add_llvm_external_dir}"
       CACHE PATH "Path to ${name} source directory")
   if (NOT ${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR} STREQUAL ""
       AND EXISTS ${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR}/CMakeLists.txt)
     option(LLVM_EXTERNAL_${nameUPPER}_BUILD
            "Whether to build ${name} as part of LLVM" ON)
     if (LLVM_EXTERNAL_${nameUPPER}_BUILD)
-      add_subdirectory(${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR} ${name})
+      add_subdirectory(${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR} ${add_llvm_external_dir})
     endif()
   endif()
 endmacro(add_llvm_external_project)

--------------1.7.4.1--


-------------- next part --------------
From 9745f2950fac389a8eb6a7a1f98d1f95004f1be2 Mon Sep 17 00:00:00 2001
From: NAKAMURA Takumi <geek4civic at gmail.com>
Date: Wed, 5 Sep 2012 16:26:00 +0900
Subject: [PATCH 2/2] [CMake] clang/tools/extra may be included by LLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR.
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="------------1.7.4.1"

This is a multi-part message in MIME format.
--------------1.7.4.1
Content-Type: text/plain; charset=UTF-8; format=fixed
Content-Transfer-Encoding: 8bit


LLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR=/path/to/srcroot/tools/clang/extra, by default.
---
 clang/tools/CMakeLists.txt |    6 ++----
 1 files changed, 2 insertions(+), 4 deletions(-)


--------------1.7.4.1
Content-Type: text/x-patch; name="0002-CMake-clang-tools-extra-may-be-included-by-LLVM_.patch.txt"
Content-Transfer-Encoding: 8bit
Content-Disposition: attachment; filename="0002-CMake-clang-tools-extra-may-be-included-by-LLVM_.patch.txt"

diff --git a/clang/tools/CMakeLists.txt b/clang/tools/CMakeLists.txt
index 3a6fef5..cccff5d 100644
--- a/clang/tools/CMakeLists.txt
+++ b/clang/tools/CMakeLists.txt
@@ -10,7 +10,5 @@ add_subdirectory(clang-check)
 # subdirectory. It contains tools developed as part of the Clang/LLVM project
 # on top of the Clang tooling platform. We keep them in a separate repository
 # to keep the primary Clang repository small and focused.
-if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/extra AND
-   EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/extra/CMakeLists.txt)
-  add_subdirectory(extra)
-endif()
+# It also may be included by LLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR.
+add_llvm_external_project(clang-tools-extra extra)

--------------1.7.4.1--




More information about the llvm-commits mailing list