--- ray/CMakeLists.txt 2011/10/26 16:48:01 1.3 +++ ray/CMakeLists.txt 2018/06/20 20:51:24 1.21 @@ -1,28 +1,136 @@ -cmake_minimum_required(VERSION 2.8.4) -project("radiance") +cmake_minimum_required(VERSION 3.0) +cmake_policy(SET CMP0020 NEW) +cmake_policy(SET CMP0048 NEW) +if(NOT ${CMAKE_VERSION} VERSION_LESS "3.1") + cmake_policy(SET CMP0054 NEW) +endif() +project(radiance VERSION 5.2.0) + +set(PROJECT_VERSION_TWEAK "Unknown" CACHE STRING "Commit Hash") +find_package(Git) +if(GIT_FOUND) + execute_process(COMMAND "${GIT_EXECUTABLE}" "rev-parse" "--short=10" "HEAD" + WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" + TIMEOUT 10 + RESULT_VARIABLE RESULT + OUTPUT_VARIABLE GIT_VERSION + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + if(${RESULT} EQUAL 0 AND NOT "${GIT_VERSION}" EQUAL "${PROJECT_VERSION_TWEAK}") + set(PROJECT_VERSION_TWEAK ${GIT_VERSION} CACHE STRING "Commit Hash" FORCE) + endif() +endif() + enable_testing() include(CTest) option(BUILD_SHARED_LIBS "Build radiance using shared libraries?" OFF) +option(BUILD_HEADLESS "Build radiance without any GUI components?" OFF) +option(BUILD_PABOPTO_UTILS "Build PABOpto Utilities?" OFF) +option(BUILD_LIBTIFF "Build libtiff?" OFF) if(NOT WIN32) - set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 1) + set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 1) + install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/doc/man/" DESTINATION man) + set(qt_plugin_term "PLUGIN") endif() -set(CPACK_PACKAGING_INSTALL_PREFIX "/") -set(CPACK_PACKAGE_VERSION_MAJOR 4) -set(CPACK_PACKAGE_VERSION_MINOR 1) -set(CPACK_PACKAGE_VERSION_PATCH 0) -set(CPACK_PACKAGE_INSTALL_DIRECTORY "Radiance ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") -SET(CPACK_RESOURCE_FILE_WELCOME "${radiance_SOURCE_DIR}/Welcome.txt") -SET(CPACK_RESOURCE_FILE_README "${radiance_SOURCE_DIR}/README") -SET(CPACK_RESOURCE_FILE_LICENSE "${radiance_SOURCE_DIR}/License.txt") + +if(WIN32) + set(CPACK_NSIS_MODIFY_PATH 1) + set(qt_plugin_term "LIBRARY") + + # Set RAYPATH on install + set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS + "WriteRegExpandStr HKLM \\\"SYSTEM\\\\CurrentControlSet\\\\Control\\\\Session Manager\\\\Environment\\\" RAYPATH '\\\$INSTDIR\\\\lib\\\;.'" + ) + + # Unset RAYPATH on uninstall + set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS + "DeleteRegValue HKLM \\\"SYSTEM\\\\CurrentControlSet\\\\Control\\\\Session Manager\\\\Environment\\\" RAYPATH" + ) +endif() + +if(UNIX) + set(CPACK_PACKAGING_INSTALL_PREFIX "/usr/local/radiance") + add_definitions(-Dlinux -D_FILE_OFFSET_BITS=64 -DNOSTEREO) +else() + set(CPACK_PACKAGING_INSTALL_PREFIX "/") +endif() + +set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_TWEAK}-${CMAKE_SYSTEM_NAME}") + +if(APPLE) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c11 -std=c++11 -stdlib=libc++") + add_definitions(-DBSD -DNOSTEREO -Dfreebsd) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mmacosx-version-min=10.7") +endif() + +if(BUILD_LIBTIFF) + include(ExternalProject) + set(LIBTIFF_URL http://download.osgeo.org/libtiff/tiff-4.0.9.tar.gz) + set(LIBTIFF_MD5 54BAD211279CC93EB4FCA31BA9BFDC79) + if(WIN32) + ExternalProject_Add(libtiff + URL ${LIBTIFF_URL} + URL_MD5 ${LIBTIFF_MD5} + CMAKE_GENERATOR "NMake Makefiles" + CMAKE_ARGS + "-DBUILD_SHARED_LIBS=OFF" + "-DCMAKE_BUILD_TYPE=Release" + "-Dzlib=OFF" + "../libtiff" + INSTALL_COMMAND "" + ) + set(TIFF_LIBRARY ${CMAKE_BINARY_DIR}/libtiff-prefix/src/libtiff-build/libtiff/tiff.lib) + else() + ExternalProject_Add(libtiff + URL ${LIBTIFF_URL} + URL_MD5 ${LIBTIFF_MD5} + CMAKE_ARGS + "-DBUILD_SHARED_LIBS=OFF" + "-DCMAKE_BUILD_TYPE=Release" + "-Dzlib=OFF" + "../libtiff" + INSTALL_COMMAND "" + ) + set(TIFF_LIBRARY ${CMAKE_BINARY_DIR}/libtiff-prefix/src/libtiff-build/libtiff/libtiff.a) + endif() + set(TIFF_INCLUDE_DIR ${CMAKE_BINARY_DIR}/libtiff/src/libtiff/libtiff) +endif() + +set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}) +set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR}) +set(CPACK_PACKAGE_INSTALL_DIRECTORY "Radiance") +set(CPACK_RESOURCE_FILE_WELCOME "${radiance_SOURCE_DIR}/Welcome.txt") +set(CPACK_RESOURCE_FILE_README "${radiance_SOURCE_DIR}/README.txt") +set(CPACK_RESOURCE_FILE_LICENSE "${radiance_SOURCE_DIR}/License.txt") + +if(APPLE) + set(CPACK_GENERATOR "PackageMaker") +elseif(UNIX) + set(CPACK_GENERATOR "TGZ") +endif() + include(CPack) -find_package(Qt4 COMPONENTS QtCore QtGui) +if(NOT BUILD_HEADLESS) + find_package(Qt5Widgets) + get_target_property(QT_LIBRARY_DIR Qt5::Core LOCATION) + get_filename_component(QT_LIBRARY_DIR ${QT_LIBRARY_DIR} PATH) + get_filename_component(QT_LIBRARY_DIR "${QT_LIBRARY_DIR}/.." ABSOLUTE) + find_package(X11) + if(APPLE) + include_directories(${X11_INCLUDE_DIR}) + endif() +endif() -SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) +set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) +if(MSVC) + add_definitions(/MP) +endif() if(WIN32 AND "${CMAKE_C_COMPILER_ID}" MATCHES "^(Intel)$") set(_INTEL_WINDOWS 1) endif() @@ -35,67 +143,13 @@ endif() add_subdirectory("src") -#download and extract radiance support files -include(ExternalProject) -set(base "${CMAKE_BINARY_DIR}/Downloads") -set_property(DIRECTORY PROPERTY EP_BASE ${base}) -ExternalProject_Add(radiance_support - URL http://www.radiance-online.org/software/non-cvs/rad4R0supp.tar.gz - URL_MD5 123e3e40af59c8b246e1fdbf0661e877 - CONFIGURE_COMMAND "" - BUILD_COMMAND "" - INSTALL_COMMAND "" -) +set(test_dir "${CMAKE_CURRENT_SOURCE_DIR}/test/test data") -#install support files. -set(lib_dir ${base}/Source/radiance_support/lib) -set(test_dir ${CMAKE_CURRENT_SOURCE_DIR}/test/test\ data) -install( - FILES - ${lib_dir}/Earth.cal ${lib_dir}/He.cal ${lib_dir}/He3.cal - ${lib_dir}/adobe.cal ${lib_dir}/ball.cal ${lib_dir}/brick.cal - ${lib_dir}/brickweave.cal ${lib_dir}/carpet.cal ${lib_dir}/climit.cal - ${lib_dir}/corrug.cal ${lib_dir}/covelight.cal ${lib_dir}/cyl.cal - ${lib_dir}/dichroic.cal ${lib_dir}/dirt.cal ${lib_dir}/fisheye.cal - ${lib_dir}/fishgeom.cal ${lib_dir}/fprism.cal ${lib_dir}/globe.cal - ${lib_dir}/gloss.cal ${lib_dir}/grating.cal ${lib_dir}/jigglepic.cal - ${lib_dir}/lcp0.cal ${lib_dir}/limit.cal ${lib_dir}/marble.cal - ${lib_dir}/orange.cal ${lib_dir}/picture.cal ${lib_dir}/plink.cal - ${lib_dir}/prism.cal ${lib_dir}/retrorefl.cal ${lib_dir}/serraglaze.cal - ${lib_dir}/slate.cal ${lib_dir}/surf.cal ${lib_dir}/tim1.cal - ${lib_dir}/weave.cal ${lib_dir}/winxmit.cal ${lib_dir}/woodpat.cal - ${lib_dir}/woodtex.cal ${lib_dir}/wrinkle.cal - ${lib_dir}/page1.txt ${lib_dir}/page2.txt - ${lib_dir}/Pix.fnt - ${lib_dir}/PixOblique.fnt - ${lib_dir}/Veerdana.fnt - ${lib_dir}/VeerdanaBold.fnt - ${lib_dir}/VeerdanaBoldItalic.fnt - ${lib_dir}/VeerdanaItalic.fnt - ${lib_dir}/helvet.fnt - ${lib_dir}/hexbit4x1.fnt - ${test_dir}/model.oct - ${test_dir}/model.vp - DESTINATION bin -) +add_subdirectory(resources) -install(FILES ${lib_dir}/Earth.hdr DESTINATION bin RENAME Earth.pic) -install(FILES ${lib_dir}/EarthBig.hdr DESTINATION bin RENAME EarthBig.pic) -install(FILES ${lib_dir}/alberta.hdr DESTINATION bin RENAME alberta.pic) -install(FILES ${lib_dir}/brick.hdr DESTINATION bin RENAME brick.pic) -install(FILES ${lib_dir}/brickweave.hdr DESTINATION bin RENAME brickweave.pic) -install(FILES ${lib_dir}/cabin.hdr DESTINATION bin RENAME cabin.pic) -install(FILES ${lib_dir}/forestfl.hdr DESTINATION bin RENAME forestfl.pic) -install(FILES ${lib_dir}/oakfloor.hdr DESTINATION bin RENAME oakfloor.pic) -install(FILES ${lib_dir}/pine.hdr DESTINATION bin RENAME pine.pic) -install(FILES ${lib_dir}/pinebark.hdr DESTINATION bin RENAME pinebark.pic) -install(FILES ${lib_dir}/podlife.hdr DESTINATION bin RENAME podlife.pic) -install(FILES ${lib_dir}/richgrove.hdr DESTINATION bin RENAME richgrove.pic) -install(FILES ${lib_dir}/shingle.hdr DESTINATION bin RENAME shingle.pic) -install(FILES ${lib_dir}/summercab.hdr DESTINATION bin RENAME summercab.pic) -install(FILES ${lib_dir}/tulips.hdr DESTINATION bin RENAME tulips.pic) - -add_subdirectory(cmake_tests) +install(DIRECTORY "${CMAKE_BINARY_DIR}/lib/" + DESTINATION "lib" +) include(InstallRequiredSystemLibraries) add_subdirectory(InstallRules)