Skip to content

Commit 170dae5

Browse files
authored
Merge pull request #42 from a17r/gnuinstalldirs
Fully embrace GNUInstallDirs
2 parents 747fba9 + ff1a094 commit 170dae5

26 files changed

+89
-101
lines changed

CMakeLists.txt

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,15 @@ IF(NOT CMAKE_BUILD_TYPE)
141141
SET(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." FORCE)
142142
ENDIF()
143143

144+
include(GNUInstallDirs)
145+
146+
if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.20.0")
147+
cmake_path(RELATIVE_PATH CMAKE_INSTALL_FULL_LIBDIR BASE_DIRECTORY "${CMAKE_INSTALL_PREFIX}" OUTPUT_VARIABLE RELATIVE_LIBDIR)
148+
cmake_path(RELATIVE_PATH CMAKE_INSTALL_FULL_INCLUDEDIR BASE_DIRECTORY "${CMAKE_INSTALL_PREFIX}" OUTPUT_VARIABLE RELATIVE_INCLUDEDIR)
149+
else()
150+
file(RELATIVE_PATH RELATIVE_LIBDIR ${CMAKE_INSTALL_PREFIX} ${CMAKE_INSTALL_FULL_LIBDIR})
151+
file(RELATIVE_PATH RELATIVE_INCLUDEDIR ${CMAKE_INSTALL_PREFIX} ${CMAKE_INSTALL_FULL_INCLUDEDIR})
152+
endif()
144153

145154
IF(ANDROID)
146155
INCLUDE(OsgAndroidMacroUtils)
@@ -883,18 +892,6 @@ IF(CYGWIN)
883892
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG")
884893
ENDIF()
885894

886-
# Set OSG_INSTALL_LIBDIR to specify the installation directories of object code libraries
887-
IF(DEFINED LIB_POSTFIX)
888-
# Use LIB_POSTFIX if defined
889-
SET(OSG_INSTALL_LIBDIR lib${LIB_POSTFIX})
890-
ELSE()
891-
INCLUDE(GNUInstallDirs)
892-
SET(OSG_INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR})
893-
ENDIF()
894-
IF(NOT DEFINED LIB_POSTFIX)
895-
SET(LIB_POSTFIX "")
896-
ENDIF()
897-
898895
# Here we apparently do some funky stuff with making the bin/ and lib/
899896
# folders which is probably needed to work around a very old CMake bug?
900897

@@ -936,11 +933,6 @@ FOREACH(CONF ${CMAKE_CONFIGURATION_TYPES}) # For each configuration (Debu
936933
ENDIF()
937934
ENDFOREACH()
938935

939-
#SET(INSTALL_BINDIR OpenSceneGraph/bin)
940-
#SET(INSTALL_INCDIR OpenSceneGraph/include)
941-
#SET(INSTALL_LIBDIR OpenSceneGraph/lib)
942-
#SET(INSTALL_DOCDIR OpenSceneGraph/doc)
943-
944936
################################################################################
945937
# User Options
946938

@@ -1190,7 +1182,7 @@ IF(BUILD_DOCUMENTATION)
11901182
CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/PlatformSpecifics/Windows/icons/src/osg32-32.png
11911183
${PROJECT_BINARY_DIR}/doc/OpenSceneGraphReferenceDocs/osg32-32.png COPYONLY
11921184
)
1193-
#INSTALL(FILES ${PROJECT_BINARY_DIR}/doc/${PROJECT_NAME}ReferenceDocs-${OPENSCENEGRAPH_VERSION}.chm DESTINATION doc OPTIONAL COMPONENT openscenegraph-doc)
1185+
11941186
INSTALL(DIRECTORY ${PROJECT_BINARY_DIR}/doc/OpenSceneGraphReferenceDocs DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT openscenegraph-doc)
11951187

11961188
# now set up openthreads documentation generation
@@ -1206,7 +1198,7 @@ IF(BUILD_DOCUMENTATION)
12061198
CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/PlatformSpecifics/Windows/icons/src/osg32-32.png
12071199
${PROJECT_BINARY_DIR}/doc/OpenThreadsReferenceDocs/osg32-32.png COPYONLY
12081200
)
1209-
#INSTALL(FILES ${PROJECT_BINARY_DIR}/doc/${PROJECT_NAME}ReferenceDocs-${OPENSCENEGRAPH_VERSION}.chm DESTINATION doc OPTIONAL COMPONENT openscenegraph-doc)
1201+
12101202
INSTALL(DIRECTORY ${PROJECT_BINARY_DIR}/doc/OpenThreadsReferenceDocs DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT openthreads-doc)
12111203

12121204
# Process our other doxyfiles but don't create targets for these
@@ -1275,7 +1267,7 @@ FOREACH(PKGCONFIG_FILE ${PKGCONFIG_FILES})
12751267
${PROJECT_BINARY_DIR}/packaging/pkgconfig/${PKGCONFIG_FILE}.pc
12761268
@ONLY
12771269
)
1278-
INSTALL(FILES ${PROJECT_BINARY_DIR}/packaging/pkgconfig/${PKGCONFIG_FILE}.pc DESTINATION lib${LIB_POSTFIX}/pkgconfig COMPONENT libopenscenegraph-dev)
1270+
INSTALL(FILES ${PROJECT_BINARY_DIR}/packaging/pkgconfig/${PKGCONFIG_FILE}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig COMPONENT libopenscenegraph-dev)
12791271
ENDFOREACH(PKGCONFIG_FILE)
12801272

12811273

@@ -1288,7 +1280,7 @@ IF(REQUIRES_LIBPATH_MESSAGE)
12881280
IF (NOT OSG_LIBPATH_MESSAGE_HAS_BEEN_RUN_BEFORE)
12891281
SET(OSG_LIBPATH_MESSAGE_HAS_BEEN_RUN_BEFORE 1 CACHE INTERNAL "Flag to track whether the libpath message has been reported before")
12901282

1291-
MESSAGE("\nThe build system is configured to install libraries to ${CMAKE_INSTALL_PREFIX}/lib${LIB_POSTFIX}\n"
1283+
MESSAGE("\nThe build system is configured to install libraries to ${CMAKE_INSTALL_FULL_LIBDIR}\n"
12921284
"Your applications may not be able to find your installed libraries unless you:\n"
12931285
" set your LD_LIBRARY_PATH (user specific) or\n"
12941286
" update your ld.so configuration (system wide)")
@@ -1310,12 +1302,12 @@ IF(REQUIRES_LIBPATH_MESSAGE)
13101302
IF(EXISTS /etc/ld.so.conf)
13111303
MESSAGE("You have an ld.so.conf file in /etc, if you wish to ensure \n"
13121304
"that applications find the installed osg libraries, system wide, you\n"
1313-
"could add ${CMAKE_INSTALL_PREFIX}/lib${LIB_POSTFIX} to it.")
1305+
"could add ${CMAKE_INSTALL_FULL_LIBDIR} to it.")
13141306
ENDIF()
13151307
ENDIF()
13161308

13171309
# emit a message during installation.
1318-
INSTALL(CODE "MESSAGE(\"Libraries were installed to ${CMAKE_INSTALL_PREFIX}lib${LIB_POSTFIX}.\\nYou may need to update your ld.so configuration. \")")
1310+
INSTALL(CODE "MESSAGE(\"Libraries were installed to ${CMAKE_INSTALL_FULL_LIBDIR}.\\nYou may need to update your ld.so configuration. \")")
13191311

13201312
ENDIF()
13211313

CMakeModules/ModuleInstall.cmake

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,6 @@
44
# ${LIB_NAME}
55
# ${TARGET_H}
66

7-
SET(INSTALL_INCDIR include)
8-
SET(INSTALL_BINDIR bin)
9-
IF(WIN32)
10-
SET(INSTALL_LIBDIR bin)
11-
SET(INSTALL_ARCHIVEDIR lib)
12-
ELSE()
13-
SET(INSTALL_LIBDIR lib${LIB_POSTFIX})
14-
SET(INSTALL_ARCHIVEDIR lib${LIB_POSTFIX})
15-
ENDIF()
16-
177
SET(HEADERS_GROUP "Header Files")
188

199
SOURCE_GROUP(
@@ -25,21 +15,29 @@ IF(MSVC AND OSG_MSVC_VERSIONED_DLL)
2515
HANDLE_MSVC_DLL()
2616
ENDIF()
2717

28-
INSTALL(
29-
TARGETS ${LIB_NAME}
30-
RUNTIME DESTINATION ${INSTALL_BINDIR} COMPONENT libopenscenegraph
31-
LIBRARY DESTINATION ${INSTALL_LIBDIR} COMPONENT libopenscenegraph
32-
ARCHIVE DESTINATION ${INSTALL_ARCHIVEDIR} COMPONENT libopenscenegraph-dev
33-
)
18+
# Keep pre-existing WIN32 INSTALL_LIBDIR=bin setting
19+
IF(WIN32)
20+
INSTALL(TARGETS ${LIB_NAME}
21+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libopenscenegraph
22+
LIBRARY DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libopenscenegraph
23+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libopenscenegraph-dev
24+
)
25+
ELSE()
26+
INSTALL(TARGETS ${LIB_NAME}
27+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libopenscenegraph
28+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libopenscenegraph
29+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libopenscenegraph-dev
30+
)
31+
ENDIF()
3432

3533
IF(MSVC AND DYNAMIC_OPENSCENEGRAPH)
36-
INSTALL(FILES $<TARGET_PDB_FILE:${LIB_NAME}> DESTINATION ${INSTALL_BINDIR} COMPONENT libopenthreads)
34+
INSTALL(FILES $<TARGET_PDB_FILE:${LIB_NAME}> DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libopenthreads)
3735
ENDIF(MSVC AND DYNAMIC_OPENSCENEGRAPH)
3836

3937
IF(NOT OSG_COMPILE_FRAMEWORKS)
4038
INSTALL (
4139
FILES ${TARGET_H}
42-
DESTINATION ${INSTALL_INCDIR}/${LIB_NAME}
40+
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${LIB_NAME}
4341
COMPONENT libopenscenegraph-dev
4442
)
4543
ELSE()

CMakeModules/OsgMacroUtils.cmake

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -264,21 +264,21 @@ MACRO(SETUP_PLUGIN PLUGIN_NAME)
264264
ENDIF()
265265
SETUP_LINK_LIBRARIES()
266266

267-
#the installation path are differentiated for win32 that install in bin versus other architecture that install in lib${LIB_POSTFIX}/${OSG_PLUGINS}
267+
# installation paths are differentiated for win32 installing in bin versus other architectures that install in ${CMAKE_INSTALL_LIBDIR}/${OSG_PLUGINS}
268268
IF(WIN32)
269269
INSTALL(TARGETS ${TARGET_TARGETNAME}
270-
RUNTIME DESTINATION bin COMPONENT ${PACKAGE_COMPONENT}
271-
ARCHIVE DESTINATION lib/${OSG_PLUGINS} COMPONENT libopenscenegraph-dev
272-
LIBRARY DESTINATION bin/${OSG_PLUGINS} COMPONENT ${PACKAGE_COMPONENT})
270+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT ${PACKAGE_COMPONENT}
271+
LIBRARY DESTINATION ${CMAKE_INSTALL_BINDIR}/${OSG_PLUGINS} COMPONENT ${PACKAGE_COMPONENT}
272+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/${OSG_PLUGINS} COMPONENT libopenscenegraph-dev)
273273
IF(MSVC AND DYNAMIC_OPENSCENEGRAPH)
274274
INSTALL(FILES $<TARGET_PDB_FILE:${TARGET_TARGETNAME}> DESTINATION bin/${OSG_PLUGINS} COMPONENT ${PACKAGE_COMPONENT})
275-
ENDIF(MSVC AND DYNAMIC_OPENSCENEGRAPH)
276-
ELSE(WIN32)
275+
ENDIF()
276+
ELSE()
277277
INSTALL(TARGETS ${TARGET_TARGETNAME}
278-
RUNTIME DESTINATION bin COMPONENT ${PACKAGE_COMPONENT}
279-
ARCHIVE DESTINATION lib${LIB_POSTFIX}/${OSG_PLUGINS} COMPONENT libopenscenegraph-dev
280-
LIBRARY DESTINATION lib${LIB_POSTFIX}/${OSG_PLUGINS} COMPONENT ${PACKAGE_COMPONENT})
281-
ENDIF(WIN32)
278+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT ${PACKAGE_COMPONENT}
279+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/${OSG_PLUGINS} COMPONENT ${PACKAGE_COMPONENT}
280+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/${OSG_PLUGINS} COMPONENT libopenscenegraph-dev)
281+
ENDIF()
282282
ENDMACRO(SETUP_PLUGIN)
283283

284284

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
# openscenegraph library configuration
2-
${CMAKE_INSTALL_PREFIX}/lib${LIB_POSTFIX}
2+
${CMAKE_INSTALL_FULL_LIBDIR}

packaging/pkgconfig/openscenegraph-osg.pc.in

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
prefix=@CMAKE_INSTALL_PREFIX@
44
exec_prefix=${prefix}
5-
libdir=${exec_prefix}/lib@LIB_POSTFIX@
6-
includedir=${prefix}/include
5+
libdir=${exec_prefix}/@RELATIVE_LIBDIR@
6+
includedir=${prefix}/@RELATIVE_INCLUDEDIR@
77

88
Name: openscenegraph-osg
99
Description: 3D scenegraph

packaging/pkgconfig/openscenegraph-osgAnimation.pc.in

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
prefix=@CMAKE_INSTALL_PREFIX@
44
exec_prefix=${prefix}
5-
libdir=${exec_prefix}/lib@LIB_POSTFIX@
6-
includedir=${prefix}/include
5+
libdir=${exec_prefix}/@RELATIVE_LIBDIR@
6+
includedir=${prefix}/@RELATIVE_INCLUDEDIR@
77

88
Name: openscenegraph-osgAnimation
99
Description: Skinning and morphing library for Openscenegraph

packaging/pkgconfig/openscenegraph-osgDB.pc.in

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
prefix=@CMAKE_INSTALL_PREFIX@
44
exec_prefix=${prefix}
5-
libdir=${exec_prefix}/lib@LIB_POSTFIX@
6-
includedir=${prefix}/include
5+
libdir=${exec_prefix}/@RELATIVE_LIBDIR@
6+
includedir=${prefix}/@RELATIVE_INCLUDEDIR@
77

88
Name: openscenegraph-osgDB
99
Description: File format reading library for Openscenegraph

packaging/pkgconfig/openscenegraph-osgFX.pc.in

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
prefix=@CMAKE_INSTALL_PREFIX@
44
exec_prefix=${prefix}
5-
libdir=${exec_prefix}/lib@LIB_POSTFIX@
6-
includedir=${prefix}/include
5+
libdir=${exec_prefix}/@RELATIVE_LIBDIR@
6+
includedir=${prefix}/@RELATIVE_INCLUDEDIR@
77

88
Name: openscenegraph-osgFX
99
Description: Special effects library for Openscenegraph

packaging/pkgconfig/openscenegraph-osgGA.pc.in

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
prefix=@CMAKE_INSTALL_PREFIX@
44
exec_prefix=${prefix}
5-
libdir=${exec_prefix}/lib@LIB_POSTFIX@
6-
includedir=${prefix}/include
5+
libdir=${exec_prefix}/@RELATIVE_LIBDIR@
6+
includedir=${prefix}/@RELATIVE_INCLUDEDIR@
77

88
Name: openscenegraph-osgGA
99
Description: GUI event library for Openscenegraph

packaging/pkgconfig/openscenegraph-osgManipulator.pc.in

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
prefix=@CMAKE_INSTALL_PREFIX@
44
exec_prefix=${prefix}
5-
libdir=${exec_prefix}/lib@LIB_POSTFIX@
6-
includedir=${prefix}/include
5+
libdir=${exec_prefix}/@RELATIVE_LIBDIR@
6+
includedir=${prefix}/@RELATIVE_INCLUDEDIR@
77

88
Name: openscenegraph-osgManipulator
99
Description: Manipulator library for Openscenegraph

0 commit comments

Comments
 (0)