Skip to content

Commit

Permalink
cmake: fix missing rpath
Browse files Browse the repository at this point in the history
  • Loading branch information
adammoody committed Mar 14, 2019
1 parent c1b8fed commit e33f7bd
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 6 deletions.
31 changes: 30 additions & 1 deletion CMakeLists.txt
Expand Up @@ -6,7 +6,6 @@ IF(POLICY CMP0042)
CMAKE_POLICY(SET CMP0042 NEW)
ENDIF(POLICY CMP0042)
SET(CMAKE_MACOSX_RPATH ON)
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
SET(CMAKE_POSITION_INDEPENDENT_CODE ON)

# Configuration Options
Expand Down Expand Up @@ -85,6 +84,36 @@ SET(X_DATADIR ${CMAKE_INSTALL_FULL_DATADIR} CACHE INTERNAL "share")
SET(X_INCLUDEDIR ${CMAKE_INSTALL_FULL_INCLUDEDIR} CACHE INTERNAL "include")
SET(X_LIBDIR ${CMAKE_INSTALL_FULL_LIBDIR} CACHE INTERNAL "lib")

############
# This sets an rpath to buildtime libraries in build directory
# and rewrites the rpath to the install location during install
# these lines must come before add_library and add_executable macros
############

# https://gitlab.kitware.com/cmake/community/wikis/doc/cmake/RPATH-handling
# use, i.e. don't skip the full RPATH for the build tree
SET(CMAKE_SKIP_BUILD_RPATH FALSE)

# when building, don't use the install RPATH already
# (but later on when installing)
SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)

SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")

# add the automatically determined parts of the RPATH
# which point to directories outside the build tree to the install RPATH
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)

# the RPATH to be used when installing, but only if it's not a system directory
LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}" isSystemDir)
IF("${isSystemDir}" STREQUAL "-1")
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
ENDIF("${isSystemDir}" STREQUAL "-1")

############
# End rpath stuff
############

# Subdirectories
INCLUDE(MFU_ADD_TOOL)
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/src/common)
Expand Down
2 changes: 1 addition & 1 deletion cmake/MFU_ADD_TOOL.cmake
Expand Up @@ -3,6 +3,6 @@ FUNCTION(MFU_ADD_TOOL name)
ADD_EXECUTABLE(${name} ${name}.c)
TARGET_LINK_LIBRARIES(${name} mfu)
SET_TARGET_PROPERTIES(${name} PROPERTIES C_STANDARD 99)
INSTALL(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${name} DESTINATION ${CMAKE_INSTALL_BINDIR})
INSTALL(TARGETS ${name} DESTINATION ${CMAKE_INSTALL_BINDIR})

ENDFUNCTION(MFU_ADD_TOOL name)
2 changes: 1 addition & 1 deletion experimental/dtar/CMakeLists.txt
Expand Up @@ -4,4 +4,4 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
ADD_EXECUTABLE(dtar dtar.c mfu_flist_archive.c)
TARGET_LINK_LIBRARIES(dtar mfu)
SET_TARGET_PROPERTIES(dtar PROPERTIES C_STANDARD 99)
INSTALL(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/dtar DESTINATION ${CMAKE_INSTALL_BINDIR})
INSTALL(TARGETS dtar DESTINATION ${CMAKE_INSTALL_BINDIR})
4 changes: 2 additions & 2 deletions src/common/CMakeLists.txt
Expand Up @@ -40,11 +40,11 @@ ADD_LIBRARY(mfu_o OBJECT ${libmfu_srcs})
SET_TARGET_PROPERTIES(mfu_o PROPERTIES C_STANDARD 99)

ADD_LIBRARY(mfu SHARED $<TARGET_OBJECTS:mfu_o>)
TARGET_LINK_LIBRARIES(mfu ${MFU_EXTERNAL_LIBS})
TARGET_LINK_LIBRARIES(mfu LINK_PUBLIC ${MFU_EXTERNAL_LIBS})
SET_TARGET_PROPERTIES(mfu PROPERTIES OUTPUT_NAME mfu CLEAN_DIRECT_OUTPUT 1)
INSTALL(TARGETS mfu DESTINATION ${CMAKE_INSTALL_LIBDIR})

ADD_LIBRARY(mfu-static STATIC $<TARGET_OBJECTS:mfu_o>)
TARGET_LINK_LIBRARIES(mfu-static ${MFU_EXTERNAL_LIBS})
TARGET_LINK_LIBRARIES(mfu-static LINK_PUBLIC ${MFU_EXTERNAL_LIBS})
SET_TARGET_PROPERTIES(mfu-static PROPERTIES OUTPUT_NAME mfu CLEAN_DIRECT_OUTPUT 1)
INSTALL(TARGETS mfu-static DESTINATION ${CMAKE_INSTALL_LIBDIR})
2 changes: 1 addition & 1 deletion src/dcp1/CMakeLists.txt
Expand Up @@ -15,4 +15,4 @@ LIST(APPEND dcp1_srcs
ADD_EXECUTABLE(dcp1 ${dcp1_srcs})
TARGET_LINK_LIBRARIES(dcp1 mfu)
SET_TARGET_PROPERTIES(dcp1 PROPERTIES C_STANDARD 99)
INSTALL(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/dcp1 DESTINATION ${CMAKE_INSTALL_BINDIR})
INSTALL(TARGETS dcp1 DESTINATION ${CMAKE_INSTALL_BINDIR})

0 comments on commit e33f7bd

Please sign in to comment.