Skip to content

Commit 10d0d8c

Browse files
committed
[clang][cmake] Use GNUInstallDirs to support custom installation dirs
I am breaking apart D99484 so the cause of build failures is easier to understand. Differential Revision: https://reviews.llvm.org/D117419
1 parent efa15f4 commit 10d0d8c

File tree

12 files changed

+35
-28
lines changed

12 files changed

+35
-28
lines changed

clang/CMakeLists.txt

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,13 @@ cmake_minimum_required(VERSION 3.13.4)
44
# standalone project, using LLVM as an external library:
55
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
66
project(Clang)
7+
set(CLANG_BUILT_STANDALONE TRUE)
8+
endif()
9+
10+
# Must go below project(..)
11+
include(GNUInstallDirs)
712

13+
if(CLANG_BUILT_STANDALONE)
814
set(CMAKE_CXX_STANDARD 14 CACHE STRING "C++ standard to conform to")
915
set(CMAKE_CXX_STANDARD_REQUIRED YES)
1016
set(CMAKE_CXX_EXTENSIONS NO)
@@ -185,8 +191,6 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
185191
endif()
186192
endif()
187193

188-
set(CLANG_BUILT_STANDALONE TRUE)
189-
190194
set(BACKEND_PACKAGE_STRING "LLVM ${LLVM_PACKAGE_VERSION}")
191195
else()
192196
set(BACKEND_PACKAGE_STRING "${PACKAGE_STRING}")
@@ -424,7 +428,7 @@ include_directories(BEFORE
424428

425429
if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
426430
install(DIRECTORY include/clang include/clang-c
427-
DESTINATION include
431+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
428432
COMPONENT clang-headers
429433
FILES_MATCHING
430434
PATTERN "*.def"
@@ -433,7 +437,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
433437
)
434438

435439
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/clang
436-
DESTINATION include
440+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
437441
COMPONENT clang-headers
438442
FILES_MATCHING
439443
PATTERN "CMakeFiles" EXCLUDE
@@ -453,7 +457,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
453457

454458
add_custom_target(bash-autocomplete DEPENDS utils/bash-autocomplete.sh)
455459
install(PROGRAMS utils/bash-autocomplete.sh
456-
DESTINATION share/clang
460+
DESTINATION "${CMAKE_INSTALL_DATADIR}/clang"
457461
COMPONENT bash-autocomplete)
458462
if(NOT LLVM_ENABLE_IDE)
459463
add_llvm_install_targets(install-bash-autocomplete

clang/cmake/modules/AddClang.cmake

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
include(GNUInstallDirs)
12
include(LLVMDistributionSupport)
23

34
function(clang_tablegen)
@@ -120,7 +121,7 @@ macro(add_clang_library name)
120121
${export_to_clangtargets}
121122
LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
122123
ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX}
123-
RUNTIME DESTINATION bin)
124+
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
124125

125126
if (NOT LLVM_ENABLE_IDE)
126127
add_llvm_install_targets(install-${lib}
@@ -159,7 +160,7 @@ macro(add_clang_tool name)
159160
get_target_export_arg(${name} Clang export_to_clangtargets)
160161
install(TARGETS ${name}
161162
${export_to_clangtargets}
162-
RUNTIME DESTINATION bin
163+
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
163164
COMPONENT ${name})
164165

165166
if(NOT LLVM_ENABLE_IDE)

clang/cmake/modules/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
include(ExtendPath)
12
include(LLVMDistributionSupport)
23
include(FindPrefixFromConfig)
34

@@ -42,8 +43,9 @@ find_prefix_from_config(CLANG_CONFIG_CODE CLANG_INSTALL_PREFIX "${CLANG_INSTALL_
4243
set(CLANG_CONFIG_CMAKE_DIR "\${CLANG_INSTALL_PREFIX}/${CLANG_INSTALL_PACKAGE_DIR}")
4344
set(CLANG_CONFIG_LLVM_CMAKE_DIR "\${CLANG_INSTALL_PREFIX}/${LLVM_INSTALL_PACKAGE_DIR}")
4445
get_config_exports_includes(Clang CLANG_CONFIG_INCLUDE_EXPORTS)
46+
extend_path(base_includedir "\${CLANG_INSTALL_PREFIX}" "${CMAKE_INSTALL_INCLUDEDIR}")
4547
set(CLANG_CONFIG_INCLUDE_DIRS
46-
"\${CLANG_INSTALL_PREFIX}/include"
48+
"${base_includedir}"
4749
)
4850
configure_file(
4951
${CMAKE_CURRENT_SOURCE_DIR}/ClangConfig.cmake.in

clang/tools/c-index-test/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
4949
set_property(TARGET c-index-test APPEND PROPERTY INSTALL_RPATH
5050
"@executable_path/../../lib")
5151
else()
52-
set(INSTALL_DESTINATION bin)
52+
set(INSTALL_DESTINATION "${CMAKE_INSTALL_BINDIR}")
5353
endif()
5454

5555
install(TARGETS c-index-test

clang/tools/clang-format/CMakeLists.txt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,20 +21,20 @@ if( LLVM_LIB_FUZZING_ENGINE OR LLVM_USE_SANITIZE_COVERAGE )
2121
endif()
2222

2323
install(PROGRAMS clang-format-bbedit.applescript
24-
DESTINATION share/clang
24+
DESTINATION "${CMAKE_INSTALL_DATADIR}/clang"
2525
COMPONENT clang-format)
2626
install(PROGRAMS clang-format-diff.py
27-
DESTINATION share/clang
27+
DESTINATION "${CMAKE_INSTALL_DATADIR}/clang"
2828
COMPONENT clang-format)
2929
install(PROGRAMS clang-format-sublime.py
30-
DESTINATION share/clang
30+
DESTINATION "${CMAKE_INSTALL_DATADIR}/clang"
3131
COMPONENT clang-format)
3232
install(PROGRAMS clang-format.el
33-
DESTINATION share/clang
33+
DESTINATION "${CMAKE_INSTALL_DATADIR}/clang"
3434
COMPONENT clang-format)
3535
install(PROGRAMS clang-format.py
36-
DESTINATION share/clang
36+
DESTINATION "${CMAKE_INSTALL_DATADIR}/clang"
3737
COMPONENT clang-format)
3838
install(PROGRAMS git-clang-format
39-
DESTINATION bin
39+
DESTINATION "${CMAKE_INSTALL_BINDIR}"
4040
COMPONENT clang-format)

clang/tools/clang-nvlink-wrapper/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,4 @@ target_link_libraries(clang-nvlink-wrapper
2222
${CLANG_NVLINK_WRAPPER_LIB_DEPS}
2323
)
2424

25-
install(TARGETS clang-nvlink-wrapper RUNTIME DESTINATION bin)
25+
install(TARGETS clang-nvlink-wrapper RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")

clang/tools/clang-rename/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ clang_target_link_libraries(clang-rename
1919
)
2020

2121
install(PROGRAMS clang-rename.py
22-
DESTINATION share/clang
22+
DESTINATION "${CMAKE_INSTALL_DATADIR}/clang"
2323
COMPONENT clang-rename)
2424
install(PROGRAMS clang-rename.el
25-
DESTINATION share/clang
25+
DESTINATION "${CMAKE_INSTALL_DATADIR}/clang"
2626
COMPONENT clang-rename)

clang/tools/libclang/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ endif()
186186
if(INTERNAL_INSTALL_PREFIX)
187187
set(LIBCLANG_HEADERS_INSTALL_DESTINATION "${INTERNAL_INSTALL_PREFIX}/include")
188188
else()
189-
set(LIBCLANG_HEADERS_INSTALL_DESTINATION include)
189+
set(LIBCLANG_HEADERS_INSTALL_DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
190190
endif()
191191

192192
install(DIRECTORY ../../include/clang-c

clang/tools/scan-build-py/CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ foreach(BinFile ${BinFiles})
4343
${CMAKE_BINARY_DIR}/bin/scan-build-py
4444
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bin/scan-build)
4545
install (PROGRAMS "bin/scan-build"
46-
DESTINATION bin
46+
DESTINATION "${CMAKE_INSTALL_BINDIR}"
4747
RENAME scan-build-py
4848
COMPONENT scan-build-py)
4949
list(APPEND Depends ${CMAKE_BINARY_DIR}/bin/scan-build-py)
@@ -56,7 +56,7 @@ foreach(BinFile ${BinFiles})
5656
${CMAKE_BINARY_DIR}/bin/
5757
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile})
5858
install(PROGRAMS bin/${BinFile}
59-
DESTINATION bin
59+
DESTINATION "${CMAKE_INSTALL_BINDIR}"
6060
COMPONENT scan-build-py)
6161
list(APPEND Depends ${CMAKE_BINARY_DIR}/bin/${BinFile})
6262
endif()
@@ -72,7 +72,7 @@ foreach(lib ${LibExecs})
7272
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/libexec/${lib})
7373
list(APPEND Depends ${CMAKE_BINARY_DIR}/libexec/${lib})
7474
install(PROGRAMS libexec/${lib}
75-
DESTINATION libexec
75+
DESTINATION "${CMAKE_INSTALL_LIBEXECDIR}"
7676
COMPONENT scan-build-py)
7777
endforeach()
7878

clang/tools/scan-build/CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ if(CLANG_INSTALL_SCANBUILD)
4747
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile})
4848
list(APPEND Depends ${CMAKE_BINARY_DIR}/bin/${BinFile})
4949
install(PROGRAMS bin/${BinFile}
50-
DESTINATION bin
50+
DESTINATION "${CMAKE_INSTALL_BINDIR}"
5151
COMPONENT scan-build)
5252
endforeach()
5353

@@ -61,7 +61,7 @@ if(CLANG_INSTALL_SCANBUILD)
6161
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/libexec/${LibexecFile})
6262
list(APPEND Depends ${CMAKE_BINARY_DIR}/libexec/${LibexecFile})
6363
install(PROGRAMS libexec/${LibexecFile}
64-
DESTINATION libexec
64+
DESTINATION "${CMAKE_INSTALL_LIBEXECDIR}"
6565
COMPONENT scan-build)
6666
endforeach()
6767

@@ -89,7 +89,7 @@ if(CLANG_INSTALL_SCANBUILD)
8989
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/share/scan-build/${ShareFile})
9090
list(APPEND Depends ${CMAKE_BINARY_DIR}/share/scan-build/${ShareFile})
9191
install(FILES share/scan-build/${ShareFile}
92-
DESTINATION share/scan-build
92+
DESTINATION "${CMAKE_INSTALL_DATADIR}/scan-build"
9393
COMPONENT scan-build)
9494
endforeach()
9595

0 commit comments

Comments
 (0)