summaryrefslogtreecommitdiff
blob: 6ad5d94ac93aa58ee9c927b12e3eb96d39b9d898 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
From cb34603cce0a8814dc66f76ecc5ceeb04a8d3791 Mon Sep 17 00:00:00 2001
From: Jonathan Scruggs <j.scruggs@gmail.com>
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 <j.scruggs@gmail.com>
---
 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