From cb34603cce0a8814dc66f76ecc5ceeb04a8d3791 Mon Sep 17 00:00:00 2001 From: Jonathan Scruggs Date: Fri, 18 Aug 2017 13:37:54 +0100 Subject: [PATCH] OpenShadingLanguage/RB-1.8: Change to GNUInstallDirs for install paths The variables: BIN_INSTALL_DIR, LIB_INSTALL_DIR, INCLUDE_INSTALL_DIR, DOC_INSTALL_DIR, and MAN_INSTALL_DIR are defined but never used. Instead, hard coded paths to lib, include, and bin were used. This will cause difficulty on multi-lib systems or in cases where they are named differently. The existing variables were replaced by the GNUInstallDirs variables, which is compatible on all systems. The macro install_targets was defined, but never used in code, so all library installs were changed to use it. Thus all library installs now use GNUInstallDirs. INSTALL_DOCS variable is defined, so it's now controlling if the documentation is being installed. Signed-off by: Jonathan Scruggs --- CMakeLists.txt | 66 +++++++++--------------------------------- src/cmake/util_macros.cmake | 6 ++-- src/doc/CMakeLists.txt | 6 ++-- src/include/CMakeLists.txt | 2 +- src/liboslcomp/CMakeLists.txt | 2 +- src/liboslexec/CMakeLists.txt | 2 +- src/liboslnoise/CMakeLists.txt | 2 +- src/liboslquery/CMakeLists.txt | 2 +- src/osl.imageio/CMakeLists.txt | 19 +----------- src/oslc/CMakeLists.txt | 2 +- src/oslinfo/CMakeLists.txt | 2 +- src/testrender/CMakeLists.txt | 2 +- src/testshade/CMakeLists.txt | 6 ++-- 13 files changed, 32 insertions(+), 87 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 305047c0..da4635ab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -248,6 +248,8 @@ set (OSL_BUILD_PLUGINS ON CACHE BOOL "Bool OSL plugins, for example OIIO plugin" set (USE_CCACHE ON CACHE BOOL "Use ccache if found") set (CODECOV OFF CACHE BOOL "Build code coverage tests") option (USE_BOOST_WAVE "Use Boost Wave for C preprocessor (alternative is to use clang)" OFF) +set (PLUGIN_SEARCH_PATH "" CACHE STRING "Default plugin search path") +set (INSTALL_DOCS ON CACHE BOOL "Install documentation") # Use ccache if found find_program (CCACHE_FOUND ccache) @@ -349,6 +351,14 @@ if (OSL_NAMESPACE) endif () message(STATUS "Setting Namespace to: ${OSL_NAMESPACE}") +include (GNUInstallDirs) + +message (STATUS "CMAKE_INSTALL_PREFIX is ${CMAKE_INSTALL_PREFIX}") +message (STATUS "CMAKE_INSTALL_LIBDIR is ${CMAKE_INSTALL_LIBDIR}") +message (STATUS "CMAKE_INSTALL_BINDIR is ${CMAKE_INSTALL_BINDIR}") +message (STATUS "CMAKE_INSTALL_DOCDIR is ${CMAKE_INSTALL_DOCDIR}") +message (STATUS "CMAKE_INSTALL_INCLUDEDIR is ${CMAKE_INSTALL_INCLUDEDIR}") + set (CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/src/cmake/modules" "${PROJECT_SOURCE_DIR}/src/cmake") @@ -363,58 +373,6 @@ include_directories ( ) -########################################################################### -# Paths for install tree customization. Note that relative paths are relative -# to CMAKE_INSTALL_PREFIX. -set (DEFAULT_BIN_INSTALL_DIR "bin") -set (DEFAULT_LIB_INSTALL_DIR "lib") -set (DEFAULT_INCLUDE_INSTALL_DIR "include/OSL") -if (UNIX AND NOT SELF_CONTAINED_INSTALL_TREE) - # Try to be well-behaved and install into reasonable places according to - # the "standard" unix directory heirarchy - # TODO: Figure out how to get the correct python directory - set (DEFAULT_PYLIB_INSTALL_DIR "lib/python/site-packages") - set (DEFAULT_PYLIB3_INSTALL_DIR "lib/python3/site-packages") - set (DEFAULT_DOC_INSTALL_DIR "share/doc/OSL") - set (DEFAULT_MAN_INSTALL_DIR "share/man/man1") -else () - # Here is the "self-contained install tree" case: the expectation here is - # that everything OSL related will go into its own directory, not into - # some standard system heirarchy. - set (DEFAULT_PYLIB_INSTALL_DIR "python") - set (DEFAULT_PYLIB3_INSTALL_DIR "python3") - set (DEFAULT_DOC_INSTALL_DIR "doc") - set (DEFAULT_MAN_INSTALL_DIR "doc/man") -endif () -if (EXEC_INSTALL_PREFIX) - # Tack on an extra prefix to support multi-arch builds. - set (DEFAULT_BIN_INSTALL_DIR "${EXEC_INSTALL_PREFIX}/${DEFAULT_BIN_INSTALL_DIR}") - set (DEFAULT_LIB_INSTALL_DIR "${EXEC_INSTALL_PREFIX}/${DEFAULT_LIB_INSTALL_DIR}") - set (DEFAULT_PYLIB_INSTALL_DIR "${EXEC_INSTALL_PREFIX}/${DEFAULT_PYLIB_INSTALL_DIR}") - set (DEFAULT_PYLIB3_INSTALL_DIR "${EXEC_INSTALL_PREFIX}/${DEFAULT_PYLIB3_INSTALL_DIR}") -endif () -# Set up cmake cache variables corresponding to the defaults deduced above, so -# that the user can override them as desired: -set (BIN_INSTALL_DIR ${DEFAULT_BIN_INSTALL_DIR} CACHE STRING - "Install location for binaries (relative to CMAKE_INSTALL_PREFIX or absolute)") -set (LIB_INSTALL_DIR ${DEFAULT_LIB_INSTALL_DIR} CACHE STRING - "Install location for libraries (relative to CMAKE_INSTALL_PREFIX or absolute)") -set (PYLIB_INSTALL_DIR ${DEFAULT_PYLIB_INSTALL_DIR} CACHE STRING - "Install location for python libraries (relative to CMAKE_INSTALL_PREFIX or absolute)") -set (PYLIB3_INSTALL_DIR ${DEFAULT_PYLIB3_INSTALL_DIR} CACHE STRING - "Install location for python3 libraries (relative to CMAKE_INSTALL_PREFIX or absolute)") -set (INCLUDE_INSTALL_DIR ${DEFAULT_INCLUDE_INSTALL_DIR} CACHE STRING - "Install location of header files (relative to CMAKE_INSTALL_PREFIX or absolute)") -set (DOC_INSTALL_DIR ${DEFAULT_DOC_INSTALL_DIR} CACHE STRING - "Install location for documentation (relative to CMAKE_INSTALL_PREFIX or absolute)") -if (UNIX) - set (MAN_INSTALL_DIR ${DEFAULT_MAN_INSTALL_DIR} CACHE STRING - "Install location for manual pages (relative to CMAKE_INSTALL_PREFIX or absolute)") -endif() -set (PLUGIN_SEARCH_PATH "" CACHE STRING "Default plugin search path") -set (INSTALL_DOCS ON CACHE BOOL "Install documentation") - - if (APPLE) set (MACOSX_RPATH ON) endif () @@ -425,7 +383,7 @@ set (CMAKE_SKIP_BUILD_RPATH FALSE) # (but later on when installing) set (CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) # the RPATH to be used when installing -set (CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") +set (CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_FULL_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) @@ -472,7 +430,9 @@ add_subdirectory (src/osl.imageio) endif () add_subdirectory (src/include) +if (INSTALL_DOCS) add_subdirectory (src/doc) +endif () diff --git a/src/cmake/util_macros.cmake b/src/cmake/util_macros.cmake index 5691c925..fdaeb042 100644 --- a/src/cmake/util_macros.cmake +++ b/src/cmake/util_macros.cmake @@ -107,6 +107,8 @@ endmacro () # install_targets (target1 [target2 ...]) # macro (install_targets) - install (TARGETS ${ARGN} RUNTIME DESTINATION bin - LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) + install (TARGETS ${ARGN} + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT user + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT user + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT developer) endmacro() diff --git a/src/doc/CMakeLists.txt b/src/doc/CMakeLists.txt index 9fefa26d..f90c6f00 100644 --- a/src/doc/CMakeLists.txt +++ b/src/doc/CMakeLists.txt @@ -3,15 +3,15 @@ set (public_docs osl-languagespec.pdf markdeep.min.js ) -install (FILES ${public_docs} DESTINATION doc COMPONENT documentation) +install (FILES ${public_docs} DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT documentation) install ( FILES "${PROJECT_SOURCE_DIR}/LICENSE" "${PROJECT_SOURCE_DIR}/INSTALL.md" "${PROJECT_SOURCE_DIR}/CHANGES.md" "${PROJECT_SOURCE_DIR}/README.md" - DESTINATION doc ) + DESTINATION ${CMAKE_INSTALL_DOCDIR} ) file (GLOB testshade_figures "Figures/testshade/*.jpg") install (FILES ${testshade_figures} - DESTINATION doc/Figures/testshade ) + DESTINATION ${CMAKE_INSTALL_DOCDIR}/Figures/testshade ) diff --git a/src/include/CMakeLists.txt b/src/include/CMakeLists.txt index cf3747d1..4656ee78 100644 --- a/src/include/CMakeLists.txt +++ b/src/include/CMakeLists.txt @@ -6,4 +6,4 @@ set (OSL_BUILD_CPP14 ${USE_CPP14}) configure_file (OSL/oslversion.h.in "${CMAKE_BINARY_DIR}/include/OSL/oslversion.h" @ONLY) list (APPEND public_headers "${CMAKE_BINARY_DIR}/include/OSL/oslversion.h") -INSTALL ( FILES ${public_headers} DESTINATION include/OSL ) +INSTALL ( FILES ${public_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/OSL ) diff --git a/src/liboslcomp/CMakeLists.txt b/src/liboslcomp/CMakeLists.txt index b6fa459d..6ad9172f 100644 --- a/src/liboslcomp/CMakeLists.txt +++ b/src/liboslcomp/CMakeLists.txt @@ -25,5 +25,5 @@ TARGET_LINK_LIBRARIES ( oslcomp ${OPENIMAGEIO_LIBRARIES} ${ILMBASE_LIBRARIES} ${CLANG_LIBRARIES} ${LLVM_LIBRARIES} ${LLVM_LDFLAGS} ${LLVM_SYSTEM_LIBRARIES}) -INSTALL ( TARGETS oslcomp RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib ) +install_targets (oslcomp) diff --git a/src/liboslexec/CMakeLists.txt b/src/liboslexec/CMakeLists.txt index a0ffca5c..fa8a8728 100644 --- a/src/liboslexec/CMakeLists.txt +++ b/src/liboslexec/CMakeLists.txt @@ -157,7 +157,7 @@ TARGET_LINK_LIBRARIES ( oslexec ${LLVM_SYSTEM_LIBRARIES}) ADD_DEPENDENCIES (oslexec "${CMAKE_SOURCE_DIR}/src/build-scripts/hidesymbols.map") -INSTALL ( TARGETS oslexec RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib ) +install_targets (oslexec) # Unit tests if (OSL_BUILD_TESTS) diff --git a/src/liboslnoise/CMakeLists.txt b/src/liboslnoise/CMakeLists.txt index bc4c175c..2df16afe 100644 --- a/src/liboslnoise/CMakeLists.txt +++ b/src/liboslnoise/CMakeLists.txt @@ -11,7 +11,7 @@ endif () TARGET_LINK_LIBRARIES ( oslnoise ${OPENIMAGEIO_LIBRARY} ${ILMBASE_LIBRARIES} ${Boost_LIBRARIES} ${CMAKE_DL_LIBS} ) -INSTALL ( TARGETS oslnoise RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib ) +install_targets (oslnoise) if (OSL_BUILD_TESTS) diff --git a/src/liboslquery/CMakeLists.txt b/src/liboslquery/CMakeLists.txt index 328fa4bb..083d0d5a 100644 --- a/src/liboslquery/CMakeLists.txt +++ b/src/liboslquery/CMakeLists.txt @@ -14,4 +14,4 @@ endif () TARGET_LINK_LIBRARIES ( oslquery ${OPENIMAGEIO_LIBRARY} ${ILMBASE_LIBRARIES} ${Boost_LIBRARIES} ) -INSTALL ( TARGETS oslquery RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib ) +install_targets (oslquery) diff --git a/src/osl.imageio/CMakeLists.txt b/src/osl.imageio/CMakeLists.txt index af612544..a8065e72 100644 --- a/src/osl.imageio/CMakeLists.txt +++ b/src/osl.imageio/CMakeLists.txt @@ -1,20 +1,3 @@ -# Macro to install targets to the appropriate locations. Use this instead of -# the install(TARGETS ...) signature. -# -# Note: the original is in OIIO's src/cmake/oiio_macros.cmake -# -# Usage: -# -# oiio_install_targets (target1 [target2 ...]) -# -macro (oiio_install_targets) - install (TARGETS ${ARGN} - RUNTIME DESTINATION "${BIN_INSTALL_DIR}" COMPONENT user - LIBRARY DESTINATION "${LIB_INSTALL_DIR}" COMPONENT user - ARCHIVE DESTINATION "${LIB_INSTALL_DIR}" COMPONENT developer) -endmacro () - - # Macro to add a build target for an IO plugin. # # Note: the original is in OIIO's src/cmake/oiio_macros.cmake @@ -37,7 +20,7 @@ macro (add_oiio_plugin) add_library (${_target_name} SHARED ${_plugin_DEFAULT_ARGS}) target_link_libraries (${_target_name} ${OPENIMAGEIO_LIBRARY} ${_plugin_LINK_LIBRARIES}) set_target_properties (${_target_name} PROPERTIES PREFIX "" FOLDER "Plugins") - oiio_install_targets (${_target_name}) + install_targets (${_target_name}) endmacro () diff --git a/src/oslc/CMakeLists.txt b/src/oslc/CMakeLists.txt index d57fc595..47b73611 100644 --- a/src/oslc/CMakeLists.txt +++ b/src/oslc/CMakeLists.txt @@ -9,5 +9,5 @@ endif () ADD_EXECUTABLE ( oslc ${oslc_srcs} ) TARGET_LINK_LIBRARIES ( oslc oslcomp ${OPENIMAGEIO_LIBRARY} ${Boost_LIBRARIES} ${CMAKE_DL_LIBS}) -INSTALL ( TARGETS oslc RUNTIME DESTINATION bin ) +INSTALL ( TARGETS oslc RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) diff --git a/src/oslinfo/CMakeLists.txt b/src/oslinfo/CMakeLists.txt index e67b4670..d3519033 100644 --- a/src/oslinfo/CMakeLists.txt +++ b/src/oslinfo/CMakeLists.txt @@ -1,4 +1,4 @@ SET ( oslinfo_srcs oslinfo.cpp ) ADD_EXECUTABLE ( oslinfo ${oslinfo_srcs} ) TARGET_LINK_LIBRARIES ( oslinfo oslquery ${OPENIMAGEIO_LIBRARY} ${Boost_LIBRARIES} ${CMAKE_DL_LIBS}) -INSTALL ( TARGETS oslinfo RUNTIME DESTINATION bin ) +INSTALL ( TARGETS oslinfo RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) diff --git a/src/testrender/CMakeLists.txt b/src/testrender/CMakeLists.txt index 6643e1ee..03197346 100644 --- a/src/testrender/CMakeLists.txt +++ b/src/testrender/CMakeLists.txt @@ -2,4 +2,4 @@ FILE(GLOB testrender_src *.cpp) ADD_EXECUTABLE ( testrender ${testrender_src} ) TARGET_LINK_LIBRARIES ( testrender oslexec oslquery ${OPENIMAGEIO_LIBRARY} ${Boost_LIBRARIES} ${CMAKE_DL_LIBS}) -INSTALL ( TARGETS testrender RUNTIME DESTINATION bin ) +INSTALL ( TARGETS testrender RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) diff --git a/src/testshade/CMakeLists.txt b/src/testshade/CMakeLists.txt index ee2f12ce..638097d4 100644 --- a/src/testshade/CMakeLists.txt +++ b/src/testshade/CMakeLists.txt @@ -2,7 +2,7 @@ SET ( testshade_srcs testshade.cpp simplerend.cpp ) ADD_EXECUTABLE ( testshade ${testshade_srcs} testshademain.cpp ) TARGET_LINK_LIBRARIES ( testshade oslexec oslquery ${OPENIMAGEIO_LIBRARY} ${OPENEXR_LIBRARIES} ${Boost_LIBRARIES} ${CMAKE_DL_LIBS}) -INSTALL ( TARGETS testshade RUNTIME DESTINATION bin ) +INSTALL ( TARGETS testshade RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) # The 'libtestshade' library if (BUILDSTATIC) @@ -14,10 +14,10 @@ endif () TARGET_LINK_LIBRARIES (libtestshade oslexec oslquery ${OPENIMAGEIO_LIBRARY} ${OPENEXR_LIBRARIES} ${Boost_LIBRARIES} ${CMAKE_DL_LIBS} ) SET_TARGET_PROPERTIES (libtestshade PROPERTIES PREFIX "") -INSTALL ( TARGETS libtestshade RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) +install_targets (libtestshade) # The 'testshade_dso' executable ADD_EXECUTABLE ( testshade_dso testshade_dso.cpp ) TARGET_LINK_LIBRARIES ( testshade_dso ${OPENIMAGEIO_LIBRARY} ${OPENEXR_LIBRARIES} ${Boost_LIBRARIES} ${CMAKE_DL_LIBS} ) -INSTALL ( TARGETS testshade_dso RUNTIME DESTINATION bin ) +INSTALL ( TARGETS testshade_dso RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) -- 2.14.1