build: refactor handling of lib/lib64 install directories

This commit is contained in:
Gabriel Ferreira
2023-12-26 23:18:34 +01:00
parent f863b4bd26
commit 1f1c351156
6 changed files with 26 additions and 26 deletions

View File

@@ -15,21 +15,12 @@
# #
# Author: Gabriel Ferreira <gabrielcarvfer@gmail.com> # Author: Gabriel Ferreira <gabrielcarvfer@gmail.com>
include(GNUInstallDirs) # Set RPATH not too need LD_LIBRARY_PATH after installing. Add the lib64 variant
# to support all platforms, such as alma linux, used to build the manylinux pip
# Set RPATH not too need LD_LIBRARY_PATH after installing # wheel.
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib:$ORIGIN/:$ORIGIN/../lib") set(CMAKE_INSTALL_RPATH
"${CMAKE_INSTALL_PREFIX}/lib:$ORIGIN/:$ORIGIN/../lib:${CMAKE_INSTALL_PREFIX}/lib64:$ORIGIN/:$ORIGIN/../lib64"
# Add the 64 suffix to the library path when manually requested with the )
# -DNS3_USE_LIB64=ON flag. May be necessary depending on the target platform.
# This is used to properly build the manylinux pip wheel.
set(NS3_USE_LIB64 FALSE)
if(${NS3_USE_LIB64})
link_directories(${CMAKE_OUTPUT_DIRECTORY}/lib64)
set(CMAKE_INSTALL_RPATH
"${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib64:$ORIGIN/:$ORIGIN/../lib64"
)
endif()
# cmake-format: off # cmake-format: off
# You are a wizard, Harry! # You are a wizard, Harry!

View File

@@ -18,8 +18,9 @@ ExternalProject_Add(
PREFIX click_dep PREFIX click_dep
BUILD_IN_SOURCE TRUE BUILD_IN_SOURCE TRUE
UPDATE_DISCONNECTED TRUE UPDATE_DISCONNECTED TRUE
CONFIGURE_COMMAND ./configure --disable-linuxmodule --enable-nsclick CONFIGURE_COMMAND
--enable-wifi --prefix ${CMAKE_OUTPUT_DIRECTORY} ./configure --disable-linuxmodule --enable-nsclick --enable-wifi --prefix
${CMAKE_OUTPUT_DIRECTORY} --libdir ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
BUILD_COMMAND make -j${NumThreads} BUILD_COMMAND make -j${NumThreads}
INSTALL_COMMAND make install INSTALL_COMMAND make install
) )
@@ -56,11 +57,12 @@ install(
USE_SOURCE_PERMISSIONS USE_SOURCE_PERMISSIONS
PATTERN "boost/*" PATTERN "boost/*"
) )
install( install(
DIRECTORY ${CMAKE_OUTPUT_DIRECTORY}/lib/ DIRECTORY ${CMAKE_OUTPUT_DIRECTORY}/${libdir}/
DESTINATION ${CMAKE_INSTALL_LIBDIR} DESTINATION ${CMAKE_INSTALL_LIBDIR}
USE_SOURCE_PERMISSIONS USE_SOURCE_PERMISSIONS
PATTERN "lib/*" PATTERN "${libdir}/*"
) )
macro(add_dependency_to_optional_modules_dependencies) macro(add_dependency_to_optional_modules_dependencies)

View File

@@ -66,11 +66,17 @@ else()
) )
set(CMAKE_OUTPUT_DIRECTORY ${absolute_ns3_output_directory}) set(CMAKE_OUTPUT_DIRECTORY ${absolute_ns3_output_directory})
endif() endif()
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_OUTPUT_DIRECTORY}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_OUTPUT_DIRECTORY}/lib) set(libdir "lib")
if(${CMAKE_INSTALL_LIBDIR} MATCHES "lib64")
set(libdir "lib64")
endif()
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_OUTPUT_DIRECTORY}/${libdir})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_OUTPUT_DIRECTORY}/${libdir})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_OUTPUT_DIRECTORY}) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_OUTPUT_DIRECTORY})
set(CMAKE_HEADER_OUTPUT_DIRECTORY ${CMAKE_OUTPUT_DIRECTORY}/include/ns3) set(CMAKE_HEADER_OUTPUT_DIRECTORY ${CMAKE_OUTPUT_DIRECTORY}/include/ns3)
set(THIRD_PARTY_DIRECTORY ${PROJECT_SOURCE_DIR}/3rd-party) set(THIRD_PARTY_DIRECTORY ${PROJECT_SOURCE_DIR}/3rd-party)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
link_directories(${CMAKE_OUTPUT_DIRECTORY}/lib) link_directories(${CMAKE_OUTPUT_DIRECTORY}/lib ${CMAKE_OUTPUT_DIRECTORY}/lib64)
file(MAKE_DIRECTORY ${CMAKE_OUTPUT_DIRECTORY}) file(MAKE_DIRECTORY ${CMAKE_OUTPUT_DIRECTORY})

View File

@@ -39,11 +39,13 @@ include(ns3-hidden-settings)
# as possible # as possible
include(colored-messages) include(colored-messages)
# Get installation folder default values
include(GNUInstallDirs)
# Define output directories # Define output directories
include(ns3-output-directory) include(ns3-output-directory)
# Get installation folder default values for each platform and include package # Configure packaging related settings
# configuration macro
include(ns3-cmake-package) include(ns3-cmake-package)
# Windows, Linux and Mac related checks # Windows, Linux and Mac related checks

View File

@@ -632,7 +632,7 @@ in the ``ns-3-dev/setup.py`` file.
.. sourcecode:: yaml .. sourcecode:: yaml
# Configure and build wheel # Configure and build wheel
- $PYTHON setup.py bdist_wheel build_ext "-DNS3_USE_LIB64=TRUE" - $PYTHON setup.py bdist_wheel build_ext
At this point, we have a wheel that only works in the current system, At this point, we have a wheel that only works in the current system,
since external libraries are not shipped. since external libraries are not shipped.

View File

@@ -24,7 +24,6 @@ setuptools.setup(
"-DNS3_BINDINGS_INSTALL_DIR:STRING=INSTALL_PREFIX", "-DNS3_BINDINGS_INSTALL_DIR:STRING=INSTALL_PREFIX",
"-DNS3_FETCH_OPTIONAL_COMPONENTS:BOOL=ON", "-DNS3_FETCH_OPTIONAL_COMPONENTS:BOOL=ON",
"-DNS3_PIP_PACKAGING:BOOL=ON", "-DNS3_PIP_PACKAGING:BOOL=ON",
"-DNS3_USE_LIB64:BOOL=ON",
# Make CMake find python components from the currently running python # Make CMake find python components from the currently running python
# https://catherineh.github.io/programming/2021/11/16/python-binary-distributions-whls-with-c17-cmake-auditwheel-and-manylinux # https://catherineh.github.io/programming/2021/11/16/python-binary-distributions-whls-with-c17-cmake-auditwheel-and-manylinux
f"-DPython3_LIBRARY_DIRS={sysconfig.get_config_var('LIBDIR')}", f"-DPython3_LIBRARY_DIRS={sysconfig.get_config_var('LIBDIR')}",