Merge branch 'dev' into metadata-exiv2
This commit is contained in:
@@ -44,11 +44,15 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION
|
||||
"Building RawTherapee requires using GCC version 4.9 or higher!")
|
||||
endif()
|
||||
|
||||
# Warning for GCC 10, which causes problems #5749:
|
||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL "10.1")
|
||||
# Warning for GCC vectorization issues, which causes problems #5749 and #6384:
|
||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "10.0" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "10.2")
|
||||
message(STATUS "WARNING: gcc ${CMAKE_CXX_COMPILER_VERSION} is known to miscompile RawTherapee when using -ftree-loop-vectorize, forcing the option to be off")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-tree-loop-vectorize")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-tree-loop-vectorize")
|
||||
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "11.0")
|
||||
message(STATUS "WARNING: gcc ${CMAKE_CXX_COMPILER_VERSION} is known to miscompile RawTherapee when using --ffp-contract=fast, forcing the option to be off")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ffp-contract=off")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffp-contract=off")
|
||||
endif()
|
||||
|
||||
# We might want to build using the old C++ ABI, even when using a new GCC
|
||||
@@ -80,6 +84,24 @@ set(CACHE_NAME_SUFFIX
|
||||
# being bundled. However, file access can be restricted for some folder.
|
||||
option(OSX_DEV_BUILD "Generate macOS development builds" OFF)
|
||||
|
||||
# On macOS, optionally generate the final zip artifact file without version in the name for nightly upload purposes.
|
||||
option(OSX_NIGHTLY "Generate a generically-named zip" OFF)
|
||||
|
||||
# Generate a universal macOS build
|
||||
option(OSX_UNIVERSAL "Generate a universal app" OFF)
|
||||
|
||||
# On macOS: merge the app via a specific url to generate a universal bundle with both x86_64 and arm64
|
||||
if(OSX_UNIVERSAL)
|
||||
if(NOT "${OSX_UNIVERSAL_URL}")
|
||||
if(CMAKE_OSX_ARCHITECTURES STREQUAL "arm64")
|
||||
set(OSX_UNIVERSAL_URL "https://kd6kxr.keybase.pub/RawTherapee_macOS_x86_64_latest.zip" CACHE STRING "URL of x86_64 app for lipo")
|
||||
else()
|
||||
set(OSX_UNIVERSAL_URL "https://kd6kxr.keybase.pub/RawTherapee_macOS_arm64_latest.zip" CACHE STRING "URL of arm64 app for lipo")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
# By default we don't use a specific processor target, so PROC_TARGET_NUMBER is
|
||||
# set to 0. Specify other values to optimize for specific processor architecture
|
||||
# as listed in ProcessorTargets.cmake:
|
||||
@@ -175,7 +197,7 @@ 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
|
||||
"${CMAKE_EXE_LINKER_FLAGS} /usr/lib/libstdc++.6.dylib -Wl,-headerpad_max_install_names -mtune=generic"
|
||||
"${CMAKE_EXE_LINKER_FLAGS} /usr/lib/libstdc++.6.dylib -Wl,-headerpad_max_install_names -mtune=generic -framework Foundation"
|
||||
)
|
||||
message(
|
||||
STATUS
|
||||
@@ -190,7 +212,7 @@ if(APPLE) # TODO make -mtune generic conditional and/or specifiable.
|
||||
set(CMAKE_C_FLAGS
|
||||
"${CMAKE_C_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}")
|
||||
set(CMAKE_EXE_LINKER_FLAGS
|
||||
"${CMAKE_EXE_LINKER_FLAGS} -Wl,-headerpad_max_install_names -mtune=generic"
|
||||
"${CMAKE_EXE_LINKER_FLAGS} -Wl,-headerpad_max_install_names -mtune=generic -framework Foundation"
|
||||
)
|
||||
endif()
|
||||
|
||||
@@ -304,7 +326,7 @@ endif()
|
||||
if(NOT DEFINED CREDITSDIR)
|
||||
if(BUILD_BUNDLE)
|
||||
if(APPLE)
|
||||
set(CREDITSDIR "${DATADIR}")
|
||||
set(CREDITSDIR "${DATADIR}/..")
|
||||
else()
|
||||
set(CREDITSDIR "${DATADIR}")
|
||||
endif()
|
||||
@@ -371,6 +393,8 @@ if(NOT APPLE)
|
||||
if(DEFINED LENSFUNDBDIR AND NOT IS_ABSOLUTE "${LENSFUNDBDIR}")
|
||||
set(LENSFUNDBDIR "${DATADIR}/${LENSFUNDBDIR}")
|
||||
endif()
|
||||
else()
|
||||
set(LENSFUNDBDIR "${LENSFUNDBDIR}")
|
||||
endif()
|
||||
|
||||
if(APPLE)
|
||||
@@ -387,11 +411,11 @@ if(APPLE)
|
||||
if("${LOCAL_PREFIX}")
|
||||
set(LOCAL_PREFIX
|
||||
"${LOCAL_PREFIX}"
|
||||
CACHE STRING "macos/gtk parent directory ie /usr or /opt")
|
||||
CACHE STRING "macos/gtk parent directory ie /usr/local or /opt/local or /opt/homebrew (for arm64)")
|
||||
else()
|
||||
set(LOCAL_PREFIX
|
||||
/usr
|
||||
CACHE STRING "macos/gtk parent directory ie /usr or /opt")
|
||||
/usr/local
|
||||
CACHE STRING "macos/gtk parent directory ie /usr/local (default) or /opt/local (macports) or /opt/homebrew (for arm64)")
|
||||
endif()
|
||||
if("${FANCY_DMG}")
|
||||
set(FANCY_DMG
|
||||
@@ -511,6 +535,12 @@ endif()
|
||||
pkg_check_modules(LCMS REQUIRED lcms2>=2.6)
|
||||
pkg_check_modules(EXPAT REQUIRED expat>=2.1)
|
||||
pkg_check_modules(FFTW3F REQUIRED fftw3f)
|
||||
|
||||
#Set the appropriate FFTW flags on macOS
|
||||
if(APPLE AND OPTION_OMP)
|
||||
set(EXTRA_LIB "-L${LOCAL_PREFIX}/lib -lfftw3f_omp -lfftw3f -lm")
|
||||
endif()
|
||||
|
||||
pkg_check_modules(IPTCDATA REQUIRED libiptcdata)
|
||||
find_package(TIFF 4.0.4 REQUIRED)
|
||||
find_package(JPEG REQUIRED)
|
||||
@@ -712,11 +742,18 @@ elseif(APPLE)
|
||||
${CMAKE_COMMAND}
|
||||
-DPROJECT_SOURCE_DIR:STRING=${PROJECT_SOURCE_DIR}
|
||||
-DCACHE_NAME_SUFFIX:STRING=${CACHE_NAME_SUFFIX}
|
||||
-P ${PROJECT_SOURCE_DIR}/UpdateInfo.cmake
|
||||
-DSYSTEM:STRING=Apple
|
||||
-DCXX_FLAGS:STRING=${CXX_FLAGS}
|
||||
-DLFLAGS:STRING=${LFLAGS}
|
||||
-DCOMPILER_INFO:STRING=${COMPILER_INFO})
|
||||
-DCOMPILER_INFO:STRING=${COMPILER_INFO}
|
||||
-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}
|
||||
-P ${PROJECT_SOURCE_DIR}/UpdateInfo.cmake)
|
||||
else()
|
||||
list(APPEND ABOUT_COMMAND_WITH_ARGS -DSYSTEM:STRING=Linux
|
||||
-DCXX_FLAGS:STRING=${CXX_FLAGS} -DLFLAGS:STRING=${LFLAGS}
|
||||
@@ -736,7 +773,7 @@ add_custom_target(
|
||||
# End generating AboutThisBuild.txt
|
||||
|
||||
install(FILES AUTHORS.txt DESTINATION "${CREDITSDIR}")
|
||||
install(FILES LICENSE.txt DESTINATION "${LICENCEDIR}")
|
||||
install(FILES LICENSE DESTINATION "${LICENCEDIR}")
|
||||
install(FILES "${CMAKE_BINARY_DIR}/AboutThisBuild.txt"
|
||||
DESTINATION "${CREDITSDIR}")
|
||||
install(
|
||||
@@ -807,7 +844,14 @@ if(ENABLE_TCMALLOC)
|
||||
find_library(TCMALLOC_LIBRARIES tcmalloc PATHS ${TCMALLOC_LIB_DIR}
|
||||
NO_DEFAULT_PATH)
|
||||
else()
|
||||
find_library(TCMALLOC_LIBRARIES tcmalloc)
|
||||
# On Debian libtcmalloc-minimal4 has no .so symlink, so let's adjust for that
|
||||
set(OLD_CMAKE_FIND_LIBRARY_SUFFIXES "${CMAKE_FIND_LIBRARY_SUFFIXES}")
|
||||
list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES ".so.4")
|
||||
|
||||
find_library(TCMALLOC_LIBRARIES NAMES tcmalloc tcmalloc_minimal)
|
||||
|
||||
set(CMAKE_FIND_LIBRARY_SUFFIXES "${OLD_CMAKE_FIND_LIBRARY_SUFFIXES}")
|
||||
unset(OLD_CMAKE_FIND_LIBRARY_SUFFIXES)
|
||||
endif()
|
||||
if(TCMALLOC_LIBRARIES)
|
||||
message(STATUS "using tcmalloc library in ${TCMALLOC_LIBRARIES}")
|
||||
|
||||
Reference in New Issue
Block a user