Re: [PATCH dwarves] Respect CMAKE_INSTALL_LIBDIR

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 25/11/2024 18:44, Olson, Matthew wrote:
> On Mon, Nov 25, 2024 at 05:04:53PM +0000, Alan Maguire wrote:
>> On 25/11/2024 15:51, Ben Olson wrote:
>>> This patch changes the `cmake` configuration to honor `CMAKE_INSTALL_LIBDIR`
>>> and use `lib` by default so that installations match the conventional placement
>>> of libraries. For example, it will now install `libdwarves.so` into
>>>  `/usr/local/lib` instead of `/usr/local` directly.
>>>
>>
>> What about distros that use /usr/[local/]/lib64 for 64-bit libraries? It
>> seems like CMAKE_INSTALL_LIBDIR does the right thing there also by
>> default, can you confirm? If that is indeed the case, it would be good
>> to amend the commit description to not be "lib"-specific, and say
>> something like "CMAKE_INSTALL_LIBDIR ensures installations match the
>> conventional placement of libraries - /usr/local/lib on some systems,
>> /usr/local/li64 on others. Otherwise folks might think they need to
>> override this when they probably don't. Thanks!
> 
> Yes, it should respect `lib64` - we've just tested on both Arch and Fedora.
> On Arch, `lib64` is just a symlink to `lib`, and this patch places things
> in `lib`. On Fedora, it places things in `lib64`. Just noticed that we do
> have to include a built-in CMake module for it to work properly, though.
> I'll add that in v2 along with the commit message change.
> 
> Thank you!
>

Great, thanks for confirming!


>>
>> Alan
>>
>>> Signed-off-by: Brandon Kammerdiener <brandon.kammerdiener@xxxxxxxxx>
>>> Signed-off-by: Ben Olson <matthew.olson@xxxxxxxxx>
>>> ---
>>>
>>> This patch addresses this issue: https://github.com/acmel/dwarves/issues/48
>>>
>>>  CMakeLists.txt | 17 ++++-------------
>>>  README         |  3 +--
>>>  2 files changed, 5 insertions(+), 15 deletions(-)
>>>
>>> diff --git a/CMakeLists.txt b/CMakeLists.txt
>>> index 8ca1bf2..b2c8057 100644
>>> --- a/CMakeLists.txt
>>> +++ b/CMakeLists.txt
>>> @@ -21,18 +21,7 @@ else()
>>>  	LINK_DIRECTORIES(${LIBBPF_LIBRARY_DIRS})
>>>  endif()
>>>  
>>> -# Try to parse this later, Helio just showed me a KDE4 example to support
>>> -# x86-64 builds.
>>> -# the following are directories where stuff will be installed to
>>> -set(__LIB "" CACHE STRING "Define suffix of directory name (32/64)" )
>>> -
>>> -macro(_set_fancy _var _value _comment)
>>> -	if (NOT DEFINED ${_var})
>>> -		set(${_var} ${_value})
>>> -	else (NOT DEFINED ${_var})
>>> -		set(${_var} "${${_var}}" CACHE PATH "${_comment}")
>>> -	endif (NOT DEFINED ${_var})
>>> -endmacro(_set_fancy)
>>> +set(CMAKE_INSTALL_LIBDIR "lib" CACHE STRING "libdir name")
>>>  
>>>  # where to look first for cmake modules,
>>>  # before ${CMAKE_ROOT}/Modules/ is checked
>>> @@ -84,7 +73,9 @@ if(NOT LIBBPF_FOUND AND NOT EXISTS "${PROJECT_SOURCE_DIR}/lib/bpf/src/btf.h")
>>>  	message(FATAL_ERROR "The submodules were not downloaded! GIT_SUBMODULE was turned off or failed. Please update submodules and try again.")
>>>  endif()
>>>  
>>> -_set_fancy(LIB_INSTALL_DIR "${EXEC_INSTALL_PREFIX}${CMAKE_INSTALL_PREFIX}/${__LIB}" "libdir")
>>> +if (NOT DEFINED LIB_INSTALL_DIR)
>>> +    set(LIB_INSTALL_DIR "${EXEC_INSTALL_PREFIX}${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
>>> +endif()
>>>  
>>>  # libbpf uses reallocarray, which is not available in all versions of glibc
>>>  # libbpf's include/tools/libc_compat.h provides implementation, but needs
>>> diff --git a/README b/README
>>> index f9aeef7..0627872 100644
>>> --- a/README
>>> +++ b/README
>>> @@ -3,8 +3,7 @@ Build instructions:
>>>  1. install cmake
>>>  2. mkdir build
>>>  3. cd build
>>> -4. cmake -D__LIB=lib ..
>>> -5. make install
>>> +4. make install
>>>  
>>>  cmake Options:
>>>    -DBUILD_SHARED_LIBS
>>





[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux