Skip to content

Commit 9d9e1b7

Browse files
[llvm] add gnu install dirs
1 parent 648981f commit 9d9e1b7

File tree

6 files changed

+38
-12
lines changed

6 files changed

+38
-12
lines changed

llvm/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1133,9 +1133,9 @@ if (NOT TENSORFLOW_AOT_PATH STREQUAL "")
11331133
add_subdirectory(${TENSORFLOW_AOT_PATH}/xla_aot_runtime_src
11341134
${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}/tf_runtime)
11351135
install(TARGETS tf_xla_runtime EXPORT LLVMExports
1136-
ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT tf_xla_runtime)
1136+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX} COMPONENT tf_xla_runtime)
11371137
install(TARGETS tf_xla_runtime EXPORT LLVMDevelopmentExports
1138-
ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT tf_xla_runtime)
1138+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX} COMPONENT tf_xla_runtime)
11391139
set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS tf_xla_runtime)
11401140
# Once we add more modules, we should handle this more automatically.
11411141
if (DEFINED LLVM_OVERRIDE_MODEL_HEADER_INLINERSIZEMODEL)

llvm/cmake/modules/AddLLVM.cmake

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -974,8 +974,8 @@ macro(add_llvm_library name)
974974
endif()
975975
install(TARGETS ${name}
976976
${export_to_llvmexports}
977-
LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT ${name}
978-
ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT ${name}
977+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX} COMPONENT ${name}
978+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX} COMPONENT ${name}
979979
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT ${name})
980980

981981
if (NOT LLVM_ENABLE_IDE)
@@ -2243,7 +2243,7 @@ function(llvm_install_library_symlink name dest type)
22432243
set(LLVM_LINK_OR_COPY copy)
22442244
endif()
22452245

2246-
set(output_dir lib${LLVM_LIBDIR_SUFFIX})
2246+
set(output_dir ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX})
22472247
if(WIN32 AND "${type}" STREQUAL "SHARED")
22482248
set(output_dir "${CMAKE_INSTALL_BINDIR}")
22492249
endif()
@@ -2519,16 +2519,37 @@ function(llvm_setup_rpath name)
25192519

25202520
if (APPLE)
25212521
set(_install_name_dir INSTALL_NAME_DIR "@rpath")
2522-
set(_install_rpath "@loader_path/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
2522+
set(_install_rpath ${extra_libdir})
25232523
elseif(${CMAKE_SYSTEM_NAME} MATCHES "AIX" AND BUILD_SHARED_LIBS)
25242524
# $ORIGIN is not interpreted at link time by aix ld.
25252525
# Since BUILD_SHARED_LIBS is only recommended for use by developers,
25262526
# hardcode the rpath to build/install lib dir first in this mode.
25272527
# FIXME: update this when there is better solution.
2528-
set(_install_rpath "${LLVM_LIBRARY_OUTPUT_INTDIR}" "${CMAKE_INSTALL_PREFIX}/lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
2528+
set(_install_rpath "${LLVM_LIBRARY_OUTPUT_INTDIR}" "${CMAKE_INSTALL_FULL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
25292529
elseif(UNIX)
2530+
# Note that we add `extra_libdir` (aka `LLVM_LIBRARY_DIR` in our case) back
2531+
# to `_install_rpath` here.
2532+
#
2533+
# In nixpkgs we do not build and install LLVM alongside rdeps of LLVM (i.e.
2534+
# clang); instead LLVM is its own package and thus lands at its own nix
2535+
# store path. This makes it so that the default relative rpath (`../lib/`)
2536+
# does not point at the LLVM shared objects.
2537+
#
2538+
# More discussion here:
2539+
# - https://github.com/NixOS/nixpkgs/pull/235624#discussion_r1220150329
2540+
# - https://reviews.llvm.org/D146918 (16.0.5+)
2541+
#
2542+
# Note that we leave `extra_libdir` in `_build_rpath`: without FHS there is
2543+
# no potential that this will result in us pulling in the "wrong" LLVM.
2544+
# Adding this to the build rpath means we aren't forced to use
2545+
# `installCheckPhase` instead of `checkPhase` (i.e. binaries in the build
2546+
# dir, pre-install, will have the right rpath for LLVM).
2547+
#
2548+
# As noted in the differential above, an alternative solution is to have
2549+
# all rdeps of nixpkgs' LLVM (that use the AddLLVM.cmake machinery) set
2550+
# `CMAKE_INSTALL_RPATH`.
25302551
set(_build_rpath "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
2531-
set(_install_rpath "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}")
2552+
set(_install_rpath ${extra_libdir})
25322553
if(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)")
25332554
set_property(TARGET ${name} APPEND_STRING PROPERTY
25342555
LINK_FLAGS " -Wl,-z,origin ")

llvm/cmake/modules/AddOCaml.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,9 +147,9 @@ function(add_ocaml_library name)
147147
endforeach()
148148

149149
if( APPLE )
150-
set(ocaml_rpath "@executable_path/../../../lib${LLVM_LIBDIR_SUFFIX}")
150+
set(ocaml_rpath ${LLVM_LIBRARY_DIR})
151151
elseif( UNIX )
152-
set(ocaml_rpath "\\$ORIGIN/../../../lib${LLVM_LIBDIR_SUFFIX}")
152+
set(ocaml_rpath ${LLVM_LIBRARY_DIR})
153153
endif()
154154
list(APPEND ocaml_flags "-ldopt" "-Wl,-rpath,${ocaml_rpath}")
155155

llvm/cmake/modules/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ set(LLVM_CONFIG_INCLUDE_DIRS
130130
)
131131
list(REMOVE_DUPLICATES LLVM_CONFIG_INCLUDE_DIRS)
132132

133-
extend_path(LLVM_CONFIG_LIBRARY_DIR "\${LLVM_INSTALL_PREFIX}" "lib\${LLVM_LIBDIR_SUFFIX}")
133+
extend_path(LLVM_CONFIG_LIBRARY_DIR "\${LLVM_INSTALL_PREFIX}" "${CMAKE_INSTALL_LIBDIR}\${LLVM_LIBDIR_SUFFIX}")
134134
set(LLVM_CONFIG_LIBRARY_DIRS
135135
"${LLVM_CONFIG_LIBRARY_DIR}"
136136
# FIXME: Should there be other entries here?

llvm/tools/llvm-config/BuildVariables.inc.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#define LLVM_CXXFLAGS "@LLVM_CXXFLAGS@"
2424
#define LLVM_BUILDMODE "@LLVM_BUILDMODE@"
2525
#define LLVM_LIBDIR_SUFFIX "@LLVM_LIBDIR_SUFFIX@"
26+
#define LLVM_INSTALL_LIBDIR "@CMAKE_INSTALL_LIBDIR@"
2627
#define LLVM_INSTALL_INCLUDEDIR "@CMAKE_INSTALL_INCLUDEDIR@"
2728
#define LLVM_INSTALL_PACKAGE_DIR "@LLVM_INSTALL_PACKAGE_DIR@"
2829
#define LLVM_TARGETS_BUILT "@LLVM_TARGETS_BUILT@"

llvm/tools/llvm-config/llvm-config.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,11 @@ int main(int argc, char **argv) {
366366
sys::fs::make_absolute(ActivePrefix, Path);
367367
ActiveBinDir = std::string(Path);
368368
}
369-
ActiveLibDir = ActivePrefix + "/lib" + LLVM_LIBDIR_SUFFIX;
369+
{
370+
SmallString<256> Path(LLVM_INSTALL_LIBDIR LLVM_LIBDIR_SUFFIX);
371+
sys::fs::make_absolute(ActivePrefix, Path);
372+
ActiveLibDir = std::string(Path);
373+
}
370374
{
371375
SmallString<256> Path(LLVM_INSTALL_PACKAGE_DIR);
372376
sys::fs::make_absolute(ActivePrefix, Path);

0 commit comments

Comments
 (0)