From fbe718b64f0fac722ec665b74c7b1434abae8818 Mon Sep 17 00:00:00 2001 From: Benitoite Date: Fri, 28 Feb 2020 10:20:40 -0800 Subject: [PATCH] fixes macOS autobuild (#5674) * update macOS autobuild yaml * updates */CMakeLists* for macOS autobuild compatibility * "" a dir for cmake * Un empty an empty EXTRA_INCDIR * use a cmake operator * Use the . dir to un-empty a string * fix minutes timer in macos yaml * test & skip instead of load & include * disregard fractional part of minutes in mac yaml * add another cmake test * fix typo in mac yaml * fix other part of same typo * correct a filename in mac yaml * test all include dirs * fix of mac yaml * mac:fix a path in yaml * mac:and its antecedent * options.h include a dir * test __has_include (gcc 5.* & up & clang) * remove a printf() in mac yaml * mac:change a "" and an elseif() to else() * fix a whitespace error * fix 2 whitespace errors * ZULU>UTC * add a "UTC * on the other side of the " * mac:properly set default LOCAL_PREFIX in CACHE * use of zsh subshells in macos yaml * mac:remove some && * mac:remove some " * mac:floating point divisors * mac:use double paren (()) * mac:add a dir * mac:floatize with decimal point * mac:zsh -c certain lines * remove a marker --- .github/workflows/main.yml | 107 +++++++++++++++++++++---------------- AboutThisBuild.txt.in | 2 +- CMakeLists.txt | 64 +++++++++++++--------- UpdateInfo.cmake | 27 +++++----- rtdata/CMakeLists.txt | 18 +++---- rtengine/CMakeLists.txt | 81 ++++++++++++++++++---------- rtexif/CMakeLists.txt | 6 +-- rtgui/CMakeLists.txt | 18 +++---- rtgui/options.h | 5 ++ tools/osx/macosx_bundle.sh | 1 + 10 files changed, 193 insertions(+), 136 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 13aa6677a..e483ace01 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,81 +1,96 @@ name: macOS build on: push: - branches-ignore: - - '**' + branches: + - dev + - patch** + - newlocallab + pull_request: + branches: + - dev + - newlocallab + release: + types: + - created jobs: build: - runs-on: macos-latest + runs-on: macos-10.15 steps: - uses: actions/checkout@v1 - name: Install dependencies - run: > - brew install gtk+3 gtkmm3 gtk-mac-integration adwaita-icon-theme - libsigc++ little-cms2 libiptcdata fftw lensfun llvm expat pkgconfig - libomp shared-mime-info - - name: patch libiconv run: | - mkdir libiconv && cd libiconv - wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.16.tar.gz - tar xf libiconv-1.16.tar.gz - cd libiconv-1.16 - patch -p1 < "${GITHUB_WORKSPACE}/tools/osx/libiconv_1.16_rt.patch" - mkdir build && cd build - destDir="$(pwd)" - ../configure --prefix=/opt/local --disable-static \ - CFLAGS='-arch x86_64 -mmacosx-version-min=10.9' \ - LDFLAGS='-arch x86_64 -mmacosx-version-min=10.9' \ - CXXFLAGS='-arch x86_64 -mmacosx-version-min=10.9' - make --jobs - make DESTDIR="${destDir}" install - sudo mv opt/local /usr/local/opt/libiconv - - name: cmake + date -u + mkdir build + date +%s > build/stamp + brew uninstall --ignore-dependencies libtiff + brew install libtiff gtk+3 gtkmm3 gtk-mac-integration adwaita-icon-theme libsigc++ little-cms2 libiptcdata fftw lensfun expat pkgconfig libomp shared-mime-info | tee -a depslog + date -u + echo "----====Pourage====----" + cat depslog | grep Pouring + zsh -c 'echo "Completed installation of dependencies in $(printf "%0.2f" $(($[$(date +%s)-$(cat build/stamp)]/$((60.))))) minutes"' + - name: Configure build system env: CMAKE_CXX_STANDARD: 11 - PKG_CONFIG_PATH: /usr/local/opt/libffi/lib/pkgconfig:/usr/local/opt/expat/lib/pkgconfig + PKG_CONFIG_PATH: /usr/local/opt/libtiff/lib/pkgconfig:/usr/local/opt/libffi/lib/pkgconfig:/usr/local/opt/expat/lib/pkgconfig RAW_THERAPEE_MAJOR: '5' RAW_THERAPEE_MINOR: '8' C_FLAGS: > - -Xpreprocessor -fopenmp /usr/local/lib/libomp.dylib - -I/usr/local/include -I/usr/local/opt/gdk-pixbuf/include - -I/usr/local/opt/libiconv/include -I/usr/local/opt/libxml2/include - -I/usr/local/opt/expat/include -I/usr/local/opt/llvm/include + -arch x86_64 -mtune=generic -Xpreprocessor -fopenmp /usr/local/lib/libomp.dylib -I/usr/local/include -I/usr/local/opt/gdk-pixbuf/include -I/usr/local/opt/libiconv/include -I/usr/local/opt/libxml2/include -I/usr/local/opt/expat/include -I/usr/local/opt/libtiff/include run: | # GITHUB_REF is the ref that triggered the build, like # refs/heads/new-feature - the next line parses that to REF: the branch # name only (new-feature) - REF=${GITHUB_REF##*/} - mkdir build && cd build + export REF=${GITHUB_REF##*/} + export C_FLAGS=$(echo -e $C_FLAGS | tr -d '\n') + cd build && date -u && date +%s > configstamp cmake \ - -DCMAKE_BUILD_TYPE="release" \ + -DCMAKE_BUILD_TYPE="Release" \ -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \ - -DCMAKE_EXE_LINKER_FLAGS="-L/usr/local/lib -L/usr/local/opt/llvm/lib -Wl,-rpath,/usr/local/opt/llvm/lib -L/usr/local/opt/gdk-pixbuf/lib -L/usr/local/opt/libiconv/lib -L/usr/local/opt/libffi/lib -L/usr/local/opt/libffi/lib -L/usr/local/opt/libxml2/lib -L/usr/local/opt/expat/lib" \ + -DCMAKE_EXE_LINKER_FLAGS="-L. -L/usr/local/lib -Wl,-rpath -Wl,/usr/local/lib -L/usr/local/opt/gdk-pixbuf/lib -L/usr/local/opt/libiconv/lib -L/usr/local/opt/libffi/lib -L/usr/local/opt/libffi/lib -L/usr/local/opt/libxml2/lib -L/usr/local/opt/expat/lib" \ -DCACHE_NAME_SUFFIX="${RAW_THERAPEE_MAJOR}.${RAW_THERAPEE_MINOR}-${REF}" \ - -DPROC_TARGET_NUMBER="2" \ + -DPROC_TARGET_NUMBER="1" \ -DPROC_LABEL="generic processor" \ -DWITH_LTO="OFF" \ - -DLENSFUNDBDIR="./share/lensfun" \ - -DOpenMP_C_FLAGS=-fopenmp=libomp \ - -DOpenMP_CXX_FLAGS=-fopenmp=libomp \ - -DOpenMP_C_LIB_NAMES="libomp" \ - -DOpenMP_CXX_LIB_NAMES="libomp" \ - -DOpenMP_libomp_LIBRARY="/usr/local/lib/libomp.dylib" \ + -DLENSFUNDBDIR="/Applications/RawTherapee.app/Contents/Resources/share/lensfun" \ + -DCMAKE_C_COMPILER=/usr/local/opt/llvm/bin/clang \ + -DCMAKE_CXX_COMPILER=/usr/local/opt/llvm/bin/clang++ \ + -DCMAKE_C_FLAGS="-arch x86_64 -Wno-pass-failed -Wno-deprecated-register -Wno-unused-command-line-argument" \ + -DCMAKE_CXX_FLAGS="-arch x86_64 -Wno-pass-failed -Wno-deprecated-register -Wno-unused-command-line-argument" \ -DOpenMP_C_FLAGS="${C_FLAGS}" \ -DOpenMP_CXX_FLAGS="${C_FLAGS}" \ - -DCMAKE_AR="/usr/local/opt/llvm/bin/llvm-ar" \ - -DCMAKE_RANLIB="/usr/local/opt/llvm/bin/llvm-ranlib" \ - -DCMAKE_OSX_DEPLOYMENT_TARGET="10.11" \ + -DOpenMP_C_LIB_NAMES=libomp \ + -DOpenMP_CXX_LIB_NAMES=libomp \ + -DOpenMP_libomp_LIBRARY=/usr/local/lib/libomp.dylib \ + -DCMAKE_AR=/usr/bin/ar \ + -DCMAKE_RANLIB=/usr/bin/ranlib \ + -DCMAKE_OSX_DEPLOYMENT_TARGET=10.15 \ .. - make --jobs - make install - sudo make macosx_bundle - ARTIFACT=(RawTherapee*.zip) + zsh -c 'echo "Configured in $(printf "%0.2f" $(($[$(date +%s)-$(cat configstamp)]/$((60.))))) minutes"' + - name: Compile RawTherapee + run: | + date -u && date +%s > build/compilestamp + cd build + export REF=${GITHUB_REF##*/} + make -j$(sysctl -a | grep machdep.cpu.thread_count | tail -c 2) install + zsh -c 'echo "Compiled in $(printf "%0.2f" $(($[$(date +%s)-$(cat compilestamp)]/$((60.))))) minutes"' + - name: Create application bundle + run: | + zsh + date +%s > build/bundlestamp && date -u && cd build + export REF=${GITHUB_REF##*/} && export LOCAL_PREFIX=/usr && sudo make macosx_bundle + export ARTIFACT=(RawTherapee*.zip) echo "=== artifact: ${ARTIFACT}" # defining environment variables for next step as per # https://github.com/actions/starter-workflows/issues/68 echo "::set-env name=ARTIFACT_PATH::${GITHUB_WORKSPACE}/build/${ARTIFACT}" echo "::set-env name=ARTIFACT_FILE::${ARTIFACT}" + zsh -c 'echo "Bundled in $(printf "%0.2f" $(($[$(date +%s)-$(cat bundlestamp)]/$((60.))))) minutes"' + exit - uses: actions/upload-artifact@v1 with: name: ${{env.ARTIFACT_FILE}} path: ${{env.ARTIFACT_PATH}} + - name: Finish build + run: | + date -u + zsh -c 'echo "Build completed in $(printf "%0.2f" $(($[$(date +%s)-$(cat build/stamp)]/$((60.))))) minutes"' diff --git a/AboutThisBuild.txt.in b/AboutThisBuild.txt.in index 06f628187..4d8f4f3fe 100644 --- a/AboutThisBuild.txt.in +++ b/AboutThisBuild.txt.in @@ -14,6 +14,6 @@ Link flags: ${LFLAGS} OpenMP support: ${OPTION_OMP} MMAP support: ${WITH_MYFILE_MMAP} Build OS: ${BUILDINFO_OS} -Build date: ${BUILDINFO_DATE} ZULU +Build date: ${BUILDINFO_DATE} UTC Build epoch: ${BUILDINFO_EPOCH} Build UUID: ${BUILDINFO_UUID} diff --git a/CMakeLists.txt b/CMakeLists.txt index 5998ccb50..e3ae3b7ff 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,8 +1,14 @@ -cmake_minimum_required(VERSION 3.5) +# Use of SOURCE_DIR target property begins at cmake 3.7 +if(APPLE) + cmake_minimum_required(VERSION 3.7) +else() + cmake_minimum_required(VERSION 3.5) +endif() # Compiler id for Apple Clang if(APPLE) cmake_policy(SET CMP0025 NEW) + cmake_policy(SET CMP0037 NEW) endif() # Must stay before the project() command: @@ -145,7 +151,7 @@ if(WIN32) CACHE STRING "Additional search paths") endif() -if(APPLE) +if(APPLE) # TODO make -mtune generic conditional and/or specifiable. if(CMAKE_CXX_COMPILER MATCHES "g\\+\\+-mp-4.[5-8]" OR CMAKE_CXX_COMPILER_ARG1 MATCHES "g\\+\\+-mp-4.[5-8]") set(CMAKE_EXE_LINKER_FLAGS @@ -210,7 +216,7 @@ endif() if(NOT DEFINED BUNDLE_BASE_INSTALL_DIR) if(APPLE) - set(BUNDLE_BASE_INSTALL_DIR "${CMAKE_BUILD_TYPE}/MacOS") + set(BUNDLE_BASE_INSTALL_DIR "${PROJECT_SOURCE_DIR}/build/${CMAKE_BUILD_TYPE}/MacOS") else() set(BUNDLE_BASE_INSTALL_DIR "${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}") endif() @@ -219,7 +225,7 @@ endif() if(BUILD_BUNDLE) if(APPLE) set(BINDIR "${BUNDLE_BASE_INSTALL_DIR}") - set(CMAKE_INSTALL_PREFIX ".") + set(CMAKE_INSTALL_PREFIX "${PROJECT_SOURCE_DIR}/build") else() set(BINDIR .) set(CMAKE_INSTALL_PREFIX "${BUNDLE_BASE_INSTALL_DIR}") @@ -233,7 +239,7 @@ endif() if(NOT DEFINED DATADIR) if(BUILD_BUNDLE) if(APPLE) - set(DATADIR "${CMAKE_BUILD_TYPE}/Resources/share") + set(DATADIR "${PROJECT_SOURCE_DIR}/build/${CMAKE_BUILD_TYPE}/Resources/share") else() set(DATADIR .) endif() @@ -245,7 +251,7 @@ endif() if(NOT DEFINED LIBDIR) if(BUILD_BUNDLE) if(APPLE) - set(LIBDIR "${CMAKE_BUILD_TYPE}/Frameworks") + set(LIBDIR "${PROJECT_SOURCE_DIR}/build/${CMAKE_BUILD_TYPE}/Frameworks") else() set(LIBDIR .) endif() @@ -362,8 +368,10 @@ if(APPLE) set(LOCAL_PREFIX "${LOCAL_PREFIX}" CACHE STRING "macos/gtk parent directory ie /usr or /opt") - elseif(NOT DEFINED LOCAL_PREFIX) - set(LOCAL_PREFIX "/usr") + else() + set(LOCAL_PREFIX + /usr + CACHE STRING "macos/gtk parent directory ie /usr or /opt") endif() if("${FANCY_DMG}") set(FANCY_DMG @@ -612,12 +620,10 @@ else() set(PROC_BIT_DEPTH 64 bits) endif() -# Get compiler name and version. Only CMake > 2.8.7 knows -# CMAKE_*_COMPILER_VERSION -if(CMAKE_VERSION VERSION_GREATER 2.8.7) +# Get compiler name and version. get_filename_component(COMPILER_INFO ${CMAKE_C_COMPILER} NAME_WE) set(COMPILER_INFO "${COMPILER_INFO} ${CMAKE_C_COMPILER_VERSION}") -else() +if(NOT APPLE) execute_process( COMMAND gcc -dumpversion OUTPUT_VARIABLE GCC_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE) @@ -633,15 +639,18 @@ set(LFLAGS "${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_${UPPER_CMAKE_BUILD_TYPE}}" ) -set(ABOUT_COMMAND_WITH_ARGS - ${CMAKE_COMMAND} -DPROJECT_SOURCE_DIR:STRING=${PROJECT_SOURCE_DIR} - -DCACHE_NAME_SUFFIX:STRING=${CACHE_NAME_SUFFIX} - -DPROC_LABEL:STRING="${PROC_LABEL}" - -DPROC_BIT_DEPTH:STRING="${PROC_BIT_DEPTH}" - -DBUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} - -DGTKMM_VERSION:STRING=${GTKMM_VERSION} -DOPTION_OMP:STRING=${OPTION_OMP} - -DWITH_MYFILE_MMAP:STRING=${WITH_MYFILE_MMAP} - -DLENSFUN_VERSION:STRING=${LENSFUN_VERSION}) +if(NOT APPLE) + set(ABOUT_COMMAND_WITH_ARGS + ${CMAKE_COMMAND} -DPROJECT_SOURCE_DIR:STRING=${PROJECT_SOURCE_DIR} + -DCACHE_NAME_SUFFIX:STRING=${CACHE_NAME_SUFFIX} + -DPROC_LABEL:STRING="${PROC_LABEL}" + -DPROC_BIT_DEPTH:STRING="${PROC_BIT_DEPTH}" + -DBUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} + -DGTKMM_VERSION:STRING=${GTKMM_VERSION} + -DOPTION_OMP:STRING=${OPTION_OMP} + -DWITH_MYFILE_MMAP:STRING=${WITH_MYFILE_MMAP} + -DLENSFUN_VERSION:STRING=${LENSFUN_VERSION}) +endif() if(WIN32) list( @@ -654,16 +663,19 @@ if(WIN32) -DCMAKE_INSTALL_PREFIX:STRING="${CMAKE_INSTALL_PREFIX}" -DBIT_DEPTH:STRING="${CMAKE_SIZEOF_VOID_P}") elseif(APPLE) - list(APPEND ABOUT_COMMAND_WITH_ARGS -DSYSTEM:STRING=Apple - -DCXX_FLAGS:STRING=${CXX_FLAGS} -DLFLAGS:STRING=${LFLAGS} - -DCOMPILER_INFO:STRING=${COMPILER_INFO}) + set( + ABOUT_COMMAND_WITH_ARGS + cmake -DPROJECT_SOURCE_DIR:STRING=${PROJECT_SOURCE_DIR} -P ${PROJECT_SOURCE_DIR}/UpdateInfo.cmake -DSYSTEM:STRING=Apple -DCXX_FLAGS:STRING=${CXX_FLAGS} -DLFLAGS:STRING=${LFLAGS} -DCOMPILER_INFO:STRING=${COMPILER_INFO} -DCACHE_NAME_SUFFIX:STRING=${CACHE_NAME_SUFFIX}) else() list(APPEND ABOUT_COMMAND_WITH_ARGS -DSYSTEM:STRING=Linux -DCXX_FLAGS:STRING=${CXX_FLAGS} -DLFLAGS:STRING=${LFLAGS} -DCOMPILER_INFO:STRING=${COMPILER_INFO}) endif() - -list(APPEND ABOUT_COMMAND_WITH_ARGS -P "${PROJECT_SOURCE_DIR}/UpdateInfo.cmake") +if(NOT APPLE) + list(APPEND + ABOUT_COMMAND_WITH_ARGS + -P "${PROJECT_SOURCE_DIR}/UpdateInfo.cmake") +endif() add_custom_target( UpdateInfo ALL diff --git a/UpdateInfo.cmake b/UpdateInfo.cmake index 6fa8e289c..473c68364 100644 --- a/UpdateInfo.cmake +++ b/UpdateInfo.cmake @@ -1,5 +1,9 @@ # cmakefile executed within a makefile target +if(APPLE) + set(PROJECT_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/..") +endif() + # If we find ReleaseInfo.cmake we use the info from there and don't need Git to be installed find_file(REL_INFO_FILE ReleaseInfo.cmake PATHS "${PROJECT_SOURCE_DIR}" NO_DEFAULT_PATH) if(REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) @@ -68,20 +72,19 @@ if(REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) execute_process(COMMAND date -Ru OUTPUT_VARIABLE BUILDINFO_DATE OUTPUT_STRIP_TRAILING_WHITESPACE) execute_process(COMMAND date +%s OUTPUT_VARIABLE BUILDINFO_EPOCH OUTPUT_STRIP_TRAILING_WHITESPACE) execute_process(COMMAND uuidgen COMMAND tr "A-Z" "a-z" OUTPUT_VARIABLE BUILDINFO_UUID OUTPUT_STRIP_TRAILING_WHITESPACE) - message(STATUS "Git checkout information:") - message(STATUS " Commit description: ${GIT_DESCRIBE}") - message(STATUS " Branch: ${GIT_BRANCH}") - message(STATUS " Commit: ${GIT_COMMIT}") - message(STATUS " Commit date: ${GIT_COMMIT_DATE}") - message(STATUS " Commits since tag: ${GIT_COMMITS_SINCE_TAG}") - message(STATUS " Commits since branch: ${GIT_COMMITS_SINCE_BRANCH}") - message(STATUS " Version (unreliable): ${GIT_NUMERIC_VERSION_BS}") + message(STATUS " Commit description: ${GIT_DESCRIBE}") + message(STATUS " Branch: ${GIT_BRANCH}") + message(STATUS " Commit: ${GIT_COMMIT}") + message(STATUS " Commit date: ${GIT_COMMIT_DATE}") + message(STATUS " Commits since tag: ${GIT_COMMITS_SINCE_TAG}") + message(STATUS " Commits since branch: ${GIT_COMMITS_SINCE_BRANCH}") + message(STATUS " Version (unreliable): ${GIT_NUMERIC_VERSION_BS}") message(STATUS "Build information:") - message(STATUS " Build OS: ${BUILDINFO_OS}") - message(STATUS " Build date: ${BUILDINFO_DATE}") - message(STATUS " Epoch: ${BUILDINFO_EPOCH}") - message(STATUS " UUID: ${BUILDINFO_UUID}") + message(STATUS " Build OS: ${BUILDINFO_OS}") + message(STATUS " Build date: ${BUILDINFO_DATE} UTC") + message(STATUS " Epoch: ${BUILDINFO_EPOCH}") + message(STATUS " UUID: ${BUILDINFO_UUID}") if(NOT DEFINED CACHE_NAME_SUFFIX) set(CACHE_NAME_SUFFIX "${GIT_DESCRIBE}") diff --git a/rtdata/CMakeLists.txt b/rtdata/CMakeLists.txt index 76804c0f0..00a32c0cc 100644 --- a/rtdata/CMakeLists.txt +++ b/rtdata/CMakeLists.txt @@ -47,8 +47,8 @@ if(WIN32) install(FILES ${FONTS} DESTINATION "${DATADIR}/fonts") endif() -install(DIRECTORY ${PROFILESDIR} DESTINATION "${DATADIR}" FILES_MATCHING PATTERN "*.pp3") -install(DIRECTORY ${THEMEDIR} DESTINATION "${DATADIR}") +install(DIRECTORY "${PROFILESDIR}" DESTINATION "${DATADIR}" FILES_MATCHING PATTERN "*.pp3") +install(DIRECTORY "${THEMEDIR}" DESTINATION "${DATADIR}") install(FILES ${IMG_SVG} DESTINATION "${DATADIR}/images") install(FILES ${IMG_PNG} DESTINATION "${DATADIR}/images") @@ -57,19 +57,15 @@ install(FILES ${IMG_ICO} DESTINATION "${DATADIR}/images") if(APPLE) # CMake escapes first item quote character. Do not remove 'DUMMY_VARIABLE=' set(MACOSX_BUNDLE_COMMAND DUMMY_VARIABLE= - PROJECT_NAME="${PROJECT_NAME}" + PROJECT_NAME=${PROJECT_NAME} PROJECT_SOURCE_DIR="${PROJECT_SOURCE_DIR}" - CMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" + CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} GTK_PREFIX="${GTK_PREFIX}") - if(PROC_BIT_DEPTH MATCHES 32) - list(APPEND MACOSX_BUNDLE_COMMAND PROC_BIT_DEPTH=32) - else() - list(APPEND MACOSX_BUNDLE_COMMAND PROC_BIT_DEPTH=64) - endif() - list(APPEND MACOSX_BUNDLE_COMMAND sh "${PROJECT_SOURCE_DIR}/tools/osx/macosx_bundle.sh") + list(APPEND MACOSX_BUNDLE_COMMAND PROC_BIT_DEPTH=64) + list(APPEND MACOSX_BUNDLE_COMMAND sh ${PROJECT_SOURCE_DIR}/tools/osx/macosx_bundle.sh) add_custom_target(macosx_bundle COMMAND ${MACOSX_BUNDLE_COMMAND} - WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/build COMMENT "Creating macOS bundle") endif() diff --git a/rtengine/CMakeLists.txt b/rtengine/CMakeLists.txt index 5f59da371..3813c5708 100644 --- a/rtengine/CMakeLists.txt +++ b/rtengine/CMakeLists.txt @@ -1,35 +1,60 @@ -include_directories(${EXTRA_INCDIR} - ${EXPAT_INCLUDE_DIRS} - ${FFTW3F_INCLUDE_DIRS} - ${GLIB2_INCLUDE_DIRS} - ${GLIBMM_INCLUDE_DIRS} - ${GOBJECT_INCLUDE_DIRS} - ${GTHREAD_INCLUDE_DIRS} - ${GTKMM_INCLUDE_DIRS} - ${GTK_INCLUDE_DIRS} - ${IPTCDATA_INCLUDE_DIRS} - ${LCMS_INCLUDE_DIRS} - ${LENSFUN_INCLUDE_DIRS} - ${RSVG_INCLUDE_DIRS} -) +if(EXTRA_INCDIR) + include_directories("${EXTRA_INCDIR}") +endif() +if(EXPAT_INCLUDE_DIRS) + include_directories("${EXPAT_INCLUDE_DIRS}") +endif() +if(FFTW3F_INCLUDE_DIRS) + include_directories("${FFTW3F_INCLUDE_DIRS}") +endif() +if(GLIB2_INCLUDE_DIRS) + include_directories("${GLIB2_INCLUDE_DIRS}") +endif() +if(GLIBMM_INCLUDE_DIRS) + include_directories("${GLIBMM_INCLUDE_DIRS}") +endif() +if(GOBJECT_INCLUDE_DIRS) + include_directories("${GOBJECT_INCLUDE_DIRS}") +endif() +if(GTHREAD_INCLUDE_DIRS) + include_directories("${GTHREAD_INCLUDE_DIRS}") +endif() +if(GTKMM_INCLUDE_DIRS) + include_directories("${GTKMM_INCLUDE_DIRS}") +endif() +if(GTK_INCLUDE_DIRS) + include_directories("${GTK_INCLUDE_DIRS}") +endif() +if(IPTCDATA_INCLUDE_DIRS) + include_directories("${IPTCDATA_INCLUDE_DIRS}") +endif() +if(LCMS_INCLUDE_DIRS) + include_directories("${LCMS_INCLUDE_DIRS}") +endif() +if(LENSFUN_INCLUDE_DIRS) + include_directories("${LENSFUN_INCLUDE_DIRS}") +endif() +if(RSVG_INCLUDE_DIRS) + include_directories("${RSVG_INCLUDE_DIRS}") +endif() if(NOT WITH_SYSTEM_KLT) include_directories("${CMAKE_SOURCE_DIR}/rtengine/klt") else() - include_directories(${KLT_INCLUDE_DIRS}) + include_directories("${KLT_INCLUDE_DIRS}") endif() link_directories("${PROJECT_SOURCE_DIR}/rtexif" - ${EXPAT_LIBRARY_DIRS} - ${EXTRA_LIBDIR} - ${FFTW3F_LIBRARY_DIRS} - ${GLIB2_LIBRARY_DIRS} - ${GLIBMM_LIBRARY_DIRS} - ${GOBJECT_LIBRARY_DIRS} - ${GTHREAD_LIBRARY_DIRS} - ${IPTCDATA_LIBRARY_DIRS} - ${LCMS_LIBRARY_DIRS} - ${LENSFUN_LIBRARY_DIRS} - ${RSVG_LIBRARY_DIRS} + "${EXPAT_LIBRARY_DIRS}" + "${EXTRA_LIBDIR}" + "${FFTW3F_LIBRARY_DIRS}" + "${GLIB2_LIBRARY_DIRS}" + "${GLIBMM_LIBRARY_DIRS}" + "${GOBJECT_LIBRARY_DIRS}" + "${GTHREAD_LIBRARY_DIRS}" + "${IPTCDATA_LIBRARY_DIRS}" + "${LCMS_LIBRARY_DIRS}" + "${LENSFUN_LIBRARY_DIRS}" + "${RSVG_LIBRARY_DIRS}" ) set(CAMCONSTSFILE "camconst.json") @@ -165,13 +190,13 @@ endif() include_directories(BEFORE "${CMAKE_CURRENT_BINARY_DIR}") -add_library(rtengine STATIC ${RTENGINESOURCEFILES}) +add_library(rtengine STATIC "${RTENGINESOURCEFILES}") add_dependencies(rtengine UpdateInfo) # It may be nice to store library version too if(BUILD_SHARED_LIBS) - install(TARGETS rtengine DESTINATION ${LIBDIR}) + install(TARGETS rtengine DESTINATION "${LIBDIR}") endif() set_target_properties(rtengine PROPERTIES COMPILE_FLAGS "${RTENGINE_CXX_FLAGS}") diff --git a/rtexif/CMakeLists.txt b/rtexif/CMakeLists.txt index 5a3831455..836f832e2 100644 --- a/rtexif/CMakeLists.txt +++ b/rtexif/CMakeLists.txt @@ -18,12 +18,12 @@ if(WIN32) link_directories(. "${PROJECT_SOURCE_DIR}/rtexif" ${EXTRA_LIBDIR} ${GLIB2_LIBRARY_DIRS} ${GLIBMM_LIBRARY_DIRS} ${GTK_LIBRARY_DIRS} ${GTKMM_LIBRARY_DIRS} ${LENSFUN_LIBRARY_DIRS}) else() set_target_properties(rtexif PROPERTIES COMPILE_FLAGS " -fPIC") - include_directories(${EXTRA_INCDIR} ${GLIB2_INCLUDE_DIRS} ${GLIBMM_INCLUDE_DIRS} ${GTK_INCLUDE_DIRS} ${GTKMM_INCLUDE_DIRS}) - link_directories(${EXTRA_LIBDIR} ${GLIB2_LIBRARY_DIRS} ${GLIBMM_LIBRARY_DIRS} ${GTK_LIBRARY_DIRS} ${GTKMM_LIBRARY_DIRS} ${LENSFUN_LIBRARY_DIRS}) + include_directories("${EXTRA_INCDIR} ${GLIB2_INCLUDE_DIRS} ${GLIBMM_INCLUDE_DIRS} ${GTK_INCLUDE_DIRS} ${GTKMM_INCLUDE_DIRS}") + link_directories("${EXTRA_LIBDIR} ${GLIB2_LIBRARY_DIRS} ${GLIBMM_LIBRARY_DIRS} ${GTK_LIBRARY_DIRS} ${GTKMM_LIBRARY_DIRS} ${LENSFUN_LIBRARY_DIRS}") endif() include_directories(BEFORE "${CMAKE_CURRENT_BINARY_DIR}") if(BUILD_SHARED_LIBS) - install(TARGETS rtexif DESTINATION ${LIBDIR}) + install(TARGETS rtexif DESTINATION "${LIBDIR}") endif() diff --git a/rtgui/CMakeLists.txt b/rtgui/CMakeLists.txt index 4b21ce421..828151338 100644 --- a/rtgui/CMakeLists.txt +++ b/rtgui/CMakeLists.txt @@ -164,13 +164,13 @@ set(NONCLISOURCEFILES zoompanel.cc ) -include_directories(BEFORE "${CMAKE_CURRENT_BINARY_DIR}") +include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR}) if(APPLE) find_package(MacIntegration REQUIRED) # At the time of writing CMake has no module finder for gtkmacintegration so here we have it hard-coded, if installed via macports it should be in /opt/local/... - set(EXTRA_LIB_RTGUI ${MacIntegration_LIBRARIES}) - set(EXTRA_INCDIR ${EXTRA_INCDIR} ${MacIntegration_INCLUDE_DIRS}) + set(EXTRA_LIB_RTGUI "${MacIntegration_LIBRARIES}") + set(EXTRA_INCDIR "${EXTRA_INCDIR}" "${MacIntegration_INCLUDE_DIRS}") endif() if(WIN32) @@ -236,16 +236,16 @@ else() endif() # Excluding libatomic needed by Clang/FreeBSD, #3636 -if(OPENMP_FOUND AND NOT APPLE AND NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD") - set(EXTRA_LIB_RTGUI ${EXTRA_LIB_RTGUI} "atomic") +if(OPENMP_FOUND AND NOT APPLE AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD") + set(EXTRA_LIB_RTGUI "${EXTRA_LIB_RTGUI}" "atomic") endif() # Create config.h which defines where data are stored configure_file("${CMAKE_CURRENT_SOURCE_DIR}/config.h.in" "${CMAKE_CURRENT_BINARY_DIR}/config.h") # Create new executables targets -add_executable(rth ${EXTRA_SRC_NONCLI} ${NONCLISOURCEFILES}) -add_executable(rth-cli ${EXTRA_SRC_CLI} ${CLISOURCEFILES}) +add_executable(rth "${EXTRA_SRC_NONCLI}" "${NONCLISOURCEFILES}") +add_executable(rth-cli "${EXTRA_SRC_CLI}" "${CLISOURCEFILES}") # Add dependencies to executables targets add_dependencies(rth UpdateInfo) @@ -311,5 +311,5 @@ target_link_libraries(rth-cli rtengine ) # Install executables -install(TARGETS rth DESTINATION ${BINDIR}) -install(TARGETS rth-cli DESTINATION ${BINDIR}) +install(TARGETS rth DESTINATION "${BINDIR}") +install(TARGETS rth-cli DESTINATION "${BINDIR}") diff --git a/rtgui/options.h b/rtgui/options.h index c0ed2138b..0bc421300 100644 --- a/rtgui/options.h +++ b/rtgui/options.h @@ -20,7 +20,12 @@ #include #include +#if __has_include() #include +#else +#include +#endif + #include "../rtengine/settings.h" #include diff --git a/tools/osx/macosx_bundle.sh b/tools/osx/macosx_bundle.sh index 2352133a9..9258810c0 100644 --- a/tools/osx/macosx_bundle.sh +++ b/tools/osx/macosx_bundle.sh @@ -404,6 +404,7 @@ function CreateDmg { # Zip disk image for redistribution msg "Zipping disk image for redistribution:" + zip "${dmg_name}.zip" "${dmg_name}.dmg" rm "${dmg_name}.dmg" msg "Removing disk image caches:" rm -rf "${srcDir}"