Skip to content

Commit 7c2c633

Browse files
committed
CTL: Use GNUInstallDirs and fix PkgConfig files
* GNUInstallDirs are variables set by each distro and OS, so we don't need to define them manually. They can also be set manually during the configure phase. The code to define custom directories can be removed and replaced with the equivalent GNUInstallDirs variable. * Pkg-Config is used to find IlmBase and OpenEXR, but isn't fully utilized everywhere. This makes Pkg-Config a hard dependency so that the libraries and directories can be found easily. This will use the correct libraries no matter how they are named, so this is compatible with both pre-2.0 and post 2.0 naming schemes. * The Pkg-Config files had several errors that are now fixed.
1 parent 57b48a2 commit 7c2c633

File tree

15 files changed

+69
-91
lines changed

15 files changed

+69
-91
lines changed

CMakeLists.txt

Lines changed: 9 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,14 @@
11
cmake_minimum_required(VERSION 2.8)
22
project( CTL )
33

4+
INCLUDE ( GNUInstallDirs )
5+
46
set( CTL_MAJOR_VERSION 1 )
57
set( CTL_MINOR_VERSION 5 )
6-
set( CTL_PATCH_VERSION 0 )
8+
set( CTL_PATCH_VERSION 2 )
79
set( CTL_VERSION ${CTL_MAJOR_VERSION}.${CTL_MINOR_VERSION}.${CTL_PATCH_VERSION} )
810

9-
## Make install directories overrideable
10-
set( INSTALL_LIB_DIR lib CACHE PATH "Install directory for libraries" )
11-
set( INSTALL_BIN_DIR bin CACHE PATH "Install directory for executable binaries" )
12-
set( INSTALL_INCLUDE_DIR include CACHE PATH "Install directory for public header files" )
13-
set( INSTALL_DOC_DIR doc CACHE PATH "Install directory for documentation" )
14-
if( WIN32 AND NOT CYGWIN )
15-
set(DEF_INSTALL_CMAKE_DIR CMake)
16-
else()
17-
set(DEF_INSTALL_CMAKE_DIR lib/CMake/CTL)
18-
endif()
19-
set(INSTALL_CMAKE_DIR ${DEF_INSTALL_CMAKE_DIR} CACHE PATH "Install directory for project CMake files" )
11+
set(INSTALL_CMAKE_DIR ${CMAKE_INSTALL_FULL_LIBDIR}/cmake/CTL CACHE PATH "Install directory for project CMake files" )
2012

2113
# use, i.e. don't skip the full RPATH for the build tree
2214
SET(CMAKE_SKIP_BUILD_RPATH FALSE)
@@ -28,20 +20,11 @@ SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
2820
# which point to directories outside the build tree to the install RPATH
2921
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
3022
# the RPATH to be used when installing, but only if it's not a system directory
31-
LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib" isSystemDir)
23+
LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_FULL_LIBDIR}" isSystemDir)
3224
IF("${isSystemDir}" STREQUAL "-1")
33-
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
25+
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_FULL_LIBDIR}")
3426
ENDIF("${isSystemDir}" STREQUAL "-1")
3527

36-
37-
## convert install paths to absolute
38-
foreach( p LIB BIN INCLUDE CMAKE DOC)
39-
set( var INSTALL_${p}_DIR )
40-
if( NOT IS_ABSOLUTE "${${var}}" )
41-
set( ${var} "${CMAKE_INSTALL_PREFIX}/${${var}}" )
42-
endif()
43-
endforeach()
44-
4528
option(ENABLE_SHARED "Enable Shared Libraries" ON)
4629

4730
if ( ENABLE_SHARED )
@@ -70,20 +53,19 @@ export( TARGETS IlmCtl IlmCtlMath IlmCtlSimd FILE "${PROJECT_BINARY_DIR}/CTLLibr
7053
export(PACKAGE CTL)
7154

7255
# Create a CTLBuildTreeSettings.cmake file for the use from the build tree
73-
file(RELATIVE_PATH CONF_REL_INCLUDE_DIR "${INSTALL_CMAKE_DIR}" "${INSTALL_INCLUDE_DIR}")
56+
file(RELATIVE_PATH CONF_REL_INCLUDE_DIR "${INSTALL_CMAKE_DIR}" "${CMAKE_INSTALL_FULL_INCLUDEDIR}")
7457
configure_file(config/CTLBuildTreeSettings.cmake.in "${PROJECT_BINARY_DIR}/CTLBuildTreeSettings.cmake" @ONLY)
7558
configure_file(config/CTLConfig.cmake.in "${PROJECT_BINARY_DIR}/CTLConfig.cmake" @ONLY)
7659
configure_file(config/CTLConfigVersion.cmake.in "${PROJECT_BINARY_DIR}/CTLConfigVersion.cmake" @ONLY)
7760

7861
if ( PKG_CONFIG_FOUND )
7962
configure_file(config/CTL.pc.in "${PROJECT_BINARY_DIR}/CTL.pc" @ONLY)
80-
install( FILES "${PROJECT_BINARY_DIR}/CTL.pc" DESTINATION lib/pkgconfig COMPONENT dev )
63+
install( FILES "${PROJECT_BINARY_DIR}/CTL.pc" DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig COMPONENT dev )
8164
endif()
8265

8366
install( FILES
8467
"${PROJECT_BINARY_DIR}/CTLConfig.cmake"
8568
"${PROJECT_BINARY_DIR}/CTLConfigVersion.cmake"
69+
"${PROJECT_BINARY_DIR}/CTLLibraryDepends.cmake"
8670
DESTINATION "${INSTALL_CMAKE_DIR}" COMPONENT dev)
87-
install(FILES "${PROJECT_BINARY_DIR}/CTLLibraryDepends.cmake" DESTINATION
88-
"${INSTALL_CMAKE_DIR}" COMPONENT dev)
8971

OpenEXR_CTL/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ add_custom_target( OpenEXR_CTL DEPENDS CtlModules exrdpx exr_ctl_exr )
1313

1414
if ( PKG_CONFIG_FOUND )
1515
configure_file(../config/OpenEXR_CTL.pc.in "${PROJECT_BINARY_DIR}/OpenEXR_CTL.pc" @ONLY)
16-
install( FILES "${PROJECT_BINARY_DIR}/OpenEXR_CTL.pc" DESTINATION lib/pkgconfig COMPONENT dev )
16+
install( FILES "${PROJECT_BINARY_DIR}/OpenEXR_CTL.pc" DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig COMPONENT dev )
1717
endif()
1818

1919
# TODO CMake config

OpenEXR_CTL/CtlModules/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@ install(
22
FILES
33
utilities.ctl
44
DESTINATION
5-
${INSTALL_LIB_DIR}/CTL
5+
${CMAKE_INSTALL_LIBDIR}/CTL
66
)
77

OpenEXR_CTL/exr_ctl_exr/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,6 @@ target_link_libraries( exr_ctl_exr IlmCtlSimd IlmCtlMath IlmCtl IlmImfCtl )
2020
target_link_libraries( exr_ctl_exr ${IlmBase_LIBRARIES} ${IlmBase_LDFLAGS_OTHER} )
2121
target_link_libraries( exr_ctl_exr ${OpenEXR_LIBRARIES} ${OpenEXR_LDFLAGS_OTHER} )
2222

23-
install( TARGETS exr_ctl_exr DESTINATION ${INSTALL_BIN_DIR} )
23+
install( TARGETS exr_ctl_exr DESTINATION ${CMAKE_INSTALL_BINDIR} )
2424

25-
install( FILES change_saturation.ctl DESTINATION ${INSTALL_LIB_DIR}/CTL )
25+
install( FILES change_saturation.ctl DESTINATION ${CMAKE_INSTALL_LIBDIR}/CTL )

OpenEXR_CTL/exrdpx/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ target_link_libraries( exrdpx IlmCtlSimd IlmCtlMath IlmCtl IlmImfCtl )
2020
target_link_libraries( exrdpx ${IlmBase_LIBRARIES} ${IlmBase_LDFLAGS_OTHER} )
2121
target_link_libraries( exrdpx ${OpenEXR_LIBRARIES} ${OpenEXR_LDFLAGS_OTHER} )
2222

23-
install( TARGETS exrdpx DESTINATION ${INSTALL_BIN_DIR} )
23+
install( TARGETS exrdpx DESTINATION ${CMAKE_INSTALL_BINDIR} )
2424

25-
install( FILES transform_DPX_EXR.ctl transform_EXR_DPX.ctl DESTINATION ${INSTALL_LIB_DIR}/CTL )
25+
install( FILES transform_DPX_EXR.ctl transform_EXR_DPX.ctl DESTINATION ${CMAKE_INSTALL_LIBDIR}/CTL )
2626

2727

config/CTL.pc.in

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
prefix=@CMAKE_INSTALL_PREFIX@
2-
exec_prefix=@INSTALL_BIN_DIR@
3-
libdir=@INSTALL_LIB_DIR@
4-
includedir=@INSTALL_INCLUDE_DIR@
5-
CTL_includedir=@INSTALL_INCLUDE_DIR@/CTL
1+
libdir=@CMAKE_INSTALL_FULL_LIBDIR@
2+
includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
3+
CTL_includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@/CTL
64

75
Name: CTL
86
Description: CTL interpreter library
97
Version: @CTL_VERSION@
10-
Libs: -L${libdir} -lIlmCtlSimd -lIlmCtlMath -lIlmCtl @IlmBase_LDFLAGS@
11-
Cflags: @IlmBase_CFLAGS@ -I${CTL_includedir}
8+
Libs: -L${libdir} -lIlmCtlSimd -lIlmCtlMath -lIlmCtl
9+
Cflags: -I${CTL_includedir}
10+
Requires: IlmBase

config/OpenEXR_CTL.pc.in

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
prefix=@prefix@
2-
exec_prefix=@exec_prefix@
3-
libdir=@libdir@
4-
includedir=@includedir@
5-
OpenEXR_includedir=@includedir@/OpenEXR
1+
libdir=@CMAKE_INSTALL_FULL_LIBDIR@
2+
includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
3+
OpenEXR_includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@/OpenEXR
64

75
Name: OpenEXR_CTL
86
Description: Simplified OpenEXR interface to CTL
9-
Version: @OPENEXR_CTL_VERSION@
10-
Libs: -L${libdir} -lIlmImfCtl @OPENEXR_LDFLAGS@ @CTL_LDFLAGS@
11-
Cflags: @CTL_CXXFLAGS_PC@ @OPENEXR_CXXFLAGS@ -I${OpenEXR_includedir}
7+
Version: @CTL_VERSION@
8+
Libs: -L${libdir} -lIlmImfCtl
9+
Cflags: -I${OpenEXR_includedir}
10+
Requires: CTL,OpenEXR

configure.cmake

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
1-
# Until we get some of these modules into the upstream packages, put them here
2-
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules/")
3-
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_INSTALL_PREFIX}/share/CMake")
1+
# Make Pkg-Config required.
2+
find_package( PkgConfig )
43

5-
find_package( PkgConfig QUIET )
6-
7-
find_package( IlmBase QUIET )
4+
PKG_CHECK_MODULES ( IlmBase REQUIRED IlmBase )
85
if(IlmBase_FOUND)
96
message( STATUS "found IlmBase, version ${IlmBase_VERSION}" )
107
###
@@ -13,11 +10,11 @@ if(IlmBase_FOUND)
1310
###
1411
include_directories( ${IlmBase_INCLUDE_DIRS} )
1512
link_directories( ${IlmBase_LIBRARY_DIRS} )
16-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${IlmBase_CFLAGS}" )
17-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${IlmBase_CFLAGS}" )
18-
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${IlmBase_LDFLAGS}" )
19-
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${IlmBase_LDFLAGS}" )
20-
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${IlmBase_LDFLAGS}" )
13+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${IlmBase_CFLAGS_OTHER}" )
14+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${IlmBase_CFLAGS_OTHER}" )
15+
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${IlmBase_LDFLAGS_OTHER}" )
16+
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${IlmBase_LDFLAGS_OTHER}" )
17+
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${IlmBase_LDFLAGS_OTHER}" )
2118
else()
2219
message( SEND_ERROR "IlmBase not found, please set the include and library paths manually" )
2320
endif()
@@ -39,20 +36,20 @@ else()
3936
endif()
4037
endif()
4138

42-
find_package( OpenEXR QUIET )
39+
PKG_CHECK_MODULES ( OpenEXR REQUIRED OpenEXR )
4340
if (OpenEXR_FOUND)
4441
message( STATUS "Found OpenEXR, version ${OpenEXR_VERSION}" )
4542
else()
4643
message( WARNING "Unable to find OpenEXR libraries, disabling" )
4744
endif()
4845

49-
find_package( AcesContainer )
50-
if (AcesContainer_FOUND)
51-
message( STATUS "Found AcesContainer, version ${AcesContainer_VERSION}" )
52-
else()
53-
if ( PKG_CONFIG_FOUND )
54-
pkg_check_modules( AcesContainer AcesContainer )
55-
else()
56-
message( WARNING "Unable to find AcesContainer libraries, disabling" )
57-
endif()
58-
endif()
46+
find_package( AcesContainer )
47+
if (AcesContainer_FOUND)
48+
message( STATUS "Found AcesContainer, version ${AcesContainer_VERSION}" )
49+
else()
50+
if ( PKG_CONFIG_FOUND )
51+
pkg_check_modules( AcesContainer AcesContainer )
52+
else()
53+
message( WARNING "Unable to find AcesContainer libraries, disabling" )
54+
endif()
55+
endif()

ctlrender/CMakeLists.txt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ include_directories( ${OpenEXR_INCLUDE_DIRS} )
1111
link_directories( ${OpenEXR_LIBRARY_DIRS} )
1212
endif()
1313

14-
if ( AcesContainer_FOUND )
15-
add_definitions( -DHAVE_ACESFILE=1 )
16-
include_directories( ${AcesContainer_INCLUDE_DIRS} )
17-
link_directories( ${AcesContainer_LIBRARY_DIRS} )
18-
endif()
19-
14+
if ( AcesContainer_FOUND )
15+
add_definitions( -DHAVE_ACESFILE=1 )
16+
include_directories( ${AcesContainer_INCLUDE_DIRS} )
17+
link_directories( ${AcesContainer_LIBRARY_DIRS} )
18+
endif()
19+
2020
include_directories( "${CMAKE_CURRENT_SOURCE_DIR}" "${PROJECT_SOURCE_DIR}/lib/IlmCtl" "${PROJECT_SOURCE_DIR}/lib/IlmCtlMath" "${PROJECT_SOURCE_DIR}/lib/IlmCtlSimd" "${PROJECT_SOURCE_DIR}/lib/dpx" )
2121

2222
add_executable( ctlrender
@@ -41,9 +41,9 @@ if (OpenEXR_FOUND)
4141
target_link_libraries( ctlrender ${OpenEXR_LIBRARIES} )
4242
target_link_libraries( ctlrender ${OpenEXR_LDFLAGS_OTHER} )
4343
endif()
44-
if (AcesContainer_FOUND)
45-
target_link_libraries( ctlrender ${AcesContainer_LIBRARIES} )
46-
target_link_libraries( ctlrender ${AcesContainer_LDFLAGS_OTHER} )
44+
if (AcesContainer_FOUND)
45+
target_link_libraries( ctlrender ${AcesContainer_LIBRARIES} )
46+
target_link_libraries( ctlrender ${AcesContainer_LDFLAGS_OTHER} )
4747
endif()
4848

49-
install( TARGETS ctlrender DESTINATION bin )
49+
install( TARGETS ctlrender DESTINATION ${CMAKE_INSTALL_BINDIR} )

doc/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
install( FILES CtlManual.pdf CtlManual.doc DESTINATION doc/CTL )
1+
install( FILES CtlManual.pdf CtlManual.doc DESTINATION ${CMAKE_INSTALL_DOCDIR} )

0 commit comments

Comments
 (0)