ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/CMakeLists.txt
Revision: 1.34
Committed: Sun Sep 28 19:53:23 2025 UTC (2 hours, 38 minutes ago) by greg
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Changes since 1.33: +15 -4 lines
Log Message:
chore: Mingbo fixed libtiff issues under Windows

File Contents

# User Rev Content
1 greg 1.34 # RCSid $Id: CMakeLists.txt,v 1.33 2025/07/24 01:24:01 greg Exp $
2 greg 1.33
3 greg 1.30 cmake_minimum_required(VERSION 3.12)
4 greg 1.19 cmake_policy(SET CMP0020 NEW)
5     cmake_policy(SET CMP0048 NEW)
6 greg 1.30 cmake_policy(SET CMP0054 NEW)
7     cmake_policy(SET CMP0074 NEW)
8    
9     # project-defined modules
10     set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/resources/cmake/modules")
11    
12 greg 1.31 set(SUPPORTED_LANGUAGES C CXX)
13    
14 greg 1.30 # Get the project version.
15     set(VERSIONFILE "${CMAKE_CURRENT_LIST_DIR}/src/rt/VERSION")
16     if(EXISTS ${VERSIONFILE})
17     file(READ ${VERSIONFILE} NAMEVERSION)
18     if(${NAMEVERSION} MATCHES "^([A-Za-z]+) +([0-9]+\\.[0-9]+)")
19     # project name must be lower case, or the CPack module fails
20     string(TOLOWER ${CMAKE_MATCH_1} PROGNAME)
21 greg 1.31 project(${PROGNAME} VERSION ${CMAKE_MATCH_2} LANGUAGES ${SUPPORTED_LANGUAGES})
22 greg 1.30 endif()
23     else()
24 greg 1.31 project(radiance LANGUAGES ${SUPPORTED_LANGUAGES})
25 greg 1.19 endif()
26    
27 greg 1.30 message("Project: " ${CMAKE_PROJECT_NAME} " " ${PROJECT_VERSION})
28 greg 1.19
29     set(PROJECT_VERSION_TWEAK "Unknown" CACHE STRING "Commit Hash")
30     find_package(Git)
31     if(GIT_FOUND)
32     execute_process(COMMAND "${GIT_EXECUTABLE}" "rev-parse" "--short=10" "HEAD"
33     WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
34     TIMEOUT 10
35     RESULT_VARIABLE RESULT
36     OUTPUT_VARIABLE GIT_VERSION
37     ERROR_QUIET
38     OUTPUT_STRIP_TRAILING_WHITESPACE
39     )
40     if(${RESULT} EQUAL 0 AND NOT "${GIT_VERSION}" EQUAL "${PROJECT_VERSION_TWEAK}")
41     set(PROJECT_VERSION_TWEAK ${GIT_VERSION} CACHE STRING "Commit Hash" FORCE)
42 greg 1.15 endif()
43     endif()
44    
45 greg 1.1 enable_testing()
46     include(CTest)
47    
48     option(BUILD_SHARED_LIBS "Build radiance using shared libraries?" OFF)
49 greg 1.9 option(BUILD_HEADLESS "Build radiance without any GUI components?" OFF)
50 greg 1.18 option(BUILD_PABOPTO_UTILS "Build PABOpto Utilities?" OFF)
51 greg 1.19 option(BUILD_LIBTIFF "Build libtiff?" OFF)
52 greg 1.27 option(BUILD_QT "Build Qt related stuff?" OFF)
53 greg 1.1
54     if(NOT WIN32)
55 greg 1.4 set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 1)
56 greg 1.19 install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/doc/man/" DESTINATION man)
57 greg 1.27 if(BUILD_QT)
58     set(qt_plugin_term "PLUGIN")
59     endif()
60 greg 1.1 endif()
61 greg 1.4
62 greg 1.19 if(WIN32)
63 greg 1.23 set(CPACK_NSIS_INSTALL_ROOT "C:")
64 greg 1.10 set(CPACK_NSIS_MODIFY_PATH 1)
65 greg 1.27 if(BUILD_QT)
66     set(qt_plugin_term "LIBRARY")
67     endif()
68 greg 1.4
69 greg 1.10 # Set RAYPATH on install
70     set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS
71 greg 1.11 "WriteRegExpandStr HKLM \\\"SYSTEM\\\\CurrentControlSet\\\\Control\\\\Session Manager\\\\Environment\\\" RAYPATH '\\\$INSTDIR\\\\lib\\\;.'"
72 greg 1.10 )
73 greg 1.4
74 greg 1.10 # Unset RAYPATH on uninstall
75     set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS
76     "DeleteRegValue HKLM \\\"SYSTEM\\\\CurrentControlSet\\\\Control\\\\Session Manager\\\\Environment\\\" RAYPATH"
77     )
78 greg 1.4 endif()
79    
80     if(UNIX)
81     set(CPACK_PACKAGING_INSTALL_PREFIX "/usr/local/radiance")
82     add_definitions(-Dlinux -D_FILE_OFFSET_BITS=64 -DNOSTEREO)
83     else()
84 greg 1.5 set(CPACK_PACKAGING_INSTALL_PREFIX "/")
85 greg 1.4 endif()
86    
87 greg 1.21 set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_TWEAK}-${CMAKE_SYSTEM_NAME}")
88 greg 1.19
89 greg 1.4 if(APPLE)
90 greg 1.19 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c11 -std=c++11 -stdlib=libc++")
91 greg 1.32 add_compile_options(-O2 -DBSD -DNOSTEREO -Dfreebsd)
92 greg 1.4 add_definitions(-DBSD -DNOSTEREO -Dfreebsd)
93 greg 1.30 set(CMAKE_OSX_DEPLOYMENT_TARGET "10.13")
94 greg 1.4 endif()
95    
96 greg 1.19 if(BUILD_LIBTIFF)
97     include(ExternalProject)
98 greg 1.34 set(LIBTIFF_URL http://download.osgeo.org/libtiff/tiff-4.7.0.tar.gz)
99     set(LIBTIFF_MD5 3A0FA4A270A4A192B08913F88D0CFBDD)
100 greg 1.19 if(WIN32)
101     ExternalProject_Add(libtiff
102     URL ${LIBTIFF_URL}
103     URL_MD5 ${LIBTIFF_MD5}
104     CMAKE_GENERATOR "NMake Makefiles"
105     CMAKE_ARGS
106     "-DBUILD_SHARED_LIBS=OFF"
107     "-DCMAKE_BUILD_TYPE=Release"
108 greg 1.34 "-Djpeg=OFF"
109 greg 1.19 "-Dzlib=OFF"
110 greg 1.34 "-Dwebp=OFF"
111     "-Dlzma=OFF"
112     "-Dtiff-tools=OFF"
113     "-Dtiff-tests=OFF"
114     "-Dtiff-docs=OFF"
115 greg 1.19 "../libtiff"
116     INSTALL_COMMAND ""
117     )
118     set(TIFF_LIBRARY ${CMAKE_BINARY_DIR}/libtiff-prefix/src/libtiff-build/libtiff/tiff.lib)
119     else()
120     ExternalProject_Add(libtiff
121     URL ${LIBTIFF_URL}
122     URL_MD5 ${LIBTIFF_MD5}
123     CMAKE_ARGS
124     "-DBUILD_SHARED_LIBS=OFF"
125     "-DCMAKE_BUILD_TYPE=Release"
126 greg 1.34 "-Djpeg=OFF"
127 greg 1.19 "-Dzlib=OFF"
128 greg 1.34 "-Dwebp=OFF"
129     "-Dlzma=OFF"
130     "-Dtiff-tools=OFF"
131     "-Dtiff-tests=OFF"
132     "-Dtiff-docs=OFF"
133 greg 1.19 "../libtiff"
134     INSTALL_COMMAND ""
135     )
136     set(TIFF_LIBRARY ${CMAKE_BINARY_DIR}/libtiff-prefix/src/libtiff-build/libtiff/libtiff.a)
137     endif()
138     set(TIFF_INCLUDE_DIR ${CMAKE_BINARY_DIR}/libtiff/src/libtiff/libtiff)
139     endif()
140 greg 1.7
141 greg 1.19 set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
142     set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
143 greg 1.5 set(CPACK_PACKAGE_INSTALL_DIRECTORY "Radiance")
144 greg 1.19 set(CPACK_RESOURCE_FILE_WELCOME "${radiance_SOURCE_DIR}/Welcome.txt")
145     set(CPACK_RESOURCE_FILE_README "${radiance_SOURCE_DIR}/README.txt")
146     set(CPACK_RESOURCE_FILE_LICENSE "${radiance_SOURCE_DIR}/License.txt")
147 greg 1.4
148 greg 1.19 if(APPLE)
149     set(CPACK_GENERATOR "PackageMaker")
150     elseif(UNIX)
151     set(CPACK_GENERATOR "TGZ")
152     endif()
153 greg 1.4
154 greg 1.1 include(CPack)
155    
156 greg 1.9 if(NOT BUILD_HEADLESS)
157 greg 1.27 if(BUILD_QT)
158 greg 1.26 find_package(Qt5Widgets)
159     get_target_property(QT_LIBRARY_DIR Qt5::Core LOCATION)
160     get_filename_component(QT_LIBRARY_DIR ${QT_LIBRARY_DIR} PATH)
161     get_filename_component(QT_LIBRARY_DIR "${QT_LIBRARY_DIR}/.." ABSOLUTE)
162 greg 1.27 endif()
163 greg 1.30 if(APPLE)
164     set(X11_ROOT "/opt/X11")
165     endif()
166 greg 1.9 find_package(X11)
167 greg 1.20 if(APPLE)
168     include_directories(${X11_INCLUDE_DIR})
169 greg 1.30 endif()
170     if(APPLE AND X11_FOUND)
171     set(CMAKE_FIND_FRAMEWORK NEVER)
172     set(OpenGL_ROOT "/opt/X11")
173     find_package(OpenGL)
174     set(CMAKE_FIND_FRAMEWORK "")
175     else()
176     find_package(OpenGL)
177     endif()
178    
179 greg 1.9 endif()
180 greg 1.1
181 greg 1.19 set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
182 greg 1.1
183 greg 1.19 if(MSVC)
184     add_definitions(/MP)
185 greg 1.24 # Suppress warnings about double-to-float assignments and initializations
186     add_compile_options(/wd"4244" /wd"4305")
187 greg 1.19 endif()
188 greg 1.1 if(WIN32 AND "${CMAKE_C_COMPILER_ID}" MATCHES "^(Intel)$")
189     set(_INTEL_WINDOWS 1)
190     endif()
191     if(MSVC OR _INTEL_WINDOWS)
192     add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)
193     endif()
194     if(WIN32)
195     add_definitions(-DEZXML_NOMMAP -Dfseeko=fseek -Dstrcasecmp=_stricmp)
196     endif()
197    
198     add_subdirectory("src")
199    
200 greg 1.19 set(test_dir "${CMAKE_CURRENT_SOURCE_DIR}/test/test data")
201 greg 1.5
202 greg 1.19 add_subdirectory(resources)
203 greg 1.5
204 greg 1.19 install(DIRECTORY "${CMAKE_BINARY_DIR}/lib/"
205     DESTINATION "lib"
206 greg 1.1 )
207    
208 greg 1.22 # copy make tests to build
209     file(COPY test DESTINATION ${CMAKE_BINARY_DIR})
210    
211    
212 greg 1.1 include(InstallRequiredSystemLibraries)
213     add_subdirectory(InstallRules)