203 lines
6.8 KiB
Diff
203 lines
6.8 KiB
Diff
diff --git a/gmic-qt/CMakeLists.txt b/gmic-qt/CMakeLists.txt
|
|
index fe92d48..8bba11e 100644
|
|
--- a/gmic-qt/CMakeLists.txt
|
|
+++ b/gmic-qt/CMakeLists.txt
|
|
@@ -29,17 +29,24 @@ else()
|
|
message("Building for target host application: " ${GMIC_QT_HOST})
|
|
endif()
|
|
|
|
-if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/../src/gmic.cpp")
|
|
- set (GMIC_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../src" CACHE STRING "Define the path to the gmic headers")
|
|
+option(ENABLE_SYSTEM_GMIC "Find GMIC shared library installed on the system" ON)
|
|
+
|
|
+if (ENABLE_SYSTEM_GMIC)
|
|
+ option(ENABLE_DYNAMIC_LINKING "Dynamically link the binaries to the GMIC shared library" ON)
|
|
else()
|
|
+ option(ENABLE_DYNAMIC_LINKING "Dynamically link the binaries to the GMIC shared library" OFF)
|
|
+
|
|
+ set (GMIC_LIB_PATH "${GMIC_PATH}" CACHE STRING "Define the path to the GMIC shared library")
|
|
+ if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/../src/gmic.cpp")
|
|
+ set (GMIC_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../src" CACHE STRING "Define the path to the gmic headers")
|
|
+ else()
|
|
set (GMIC_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../gmic/src" CACHE STRING "Define the path to the gmic headers")
|
|
-endif()
|
|
+ endif()
|
|
|
|
-message("G'MIC path: " ${GMIC_PATH})
|
|
+ message("G'MIC path: " ${GMIC_PATH})
|
|
+endif()
|
|
|
|
-option(ENABLE_DYNAMIC_LINKING "Dynamically link the binaries to the GMIC shared library" OFF)
|
|
option(ENABLE_CURL "Add support for curl" ON)
|
|
-set (GMIC_LIB_PATH "${GMIC_PATH}" CACHE STRING "Define the path to the GMIC shared library")
|
|
|
|
option(ENABLE_ASAN "Enable -fsanitize=address (if debug build)" ON)
|
|
option(ENABLE_FFTW3 "Enable FFTW3 library support" ON)
|
|
@@ -61,55 +68,57 @@ if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
endif()
|
|
|
|
|
|
-#
|
|
-# Look for G'MIC repository
|
|
-#
|
|
-get_filename_component(GMIC_ABSOLUTE_PATH ${GMIC_PATH} ABSOLUTE BASEDIR ${CMAKE_SOURCE_DIR})
|
|
-if (EXISTS ${GMIC_ABSOLUTE_PATH}/gmic.cpp)
|
|
- message("Found G'MIC repository")
|
|
-else()
|
|
- get_filename_component(TARGET_CLONE_DIR ${GMIC_ABSOLUTE_PATH}/.. ABSOLUTE)
|
|
- message("")
|
|
- message("Cannot find G'MIC repository in " ${GMIC_ABSOLUTE_PATH} )
|
|
- message("")
|
|
- message("You should try:")
|
|
- message("")
|
|
- message(" git clone https://github.com/dtschump/gmic.git " ${TARGET_CLONE_DIR}/gmic )
|
|
- message("")
|
|
- message(FATAL_ERROR "\nG'MIC repository not found")
|
|
-endif()
|
|
+if (NOT ENABLE_SYSTEM_GMIC)
|
|
+ #
|
|
+ # Look for G'MIC repository
|
|
+ #
|
|
+ get_filename_component(GMIC_ABSOLUTE_PATH ${GMIC_PATH} ABSOLUTE BASEDIR ${CMAKE_SOURCE_DIR})
|
|
+ if (EXISTS ${GMIC_ABSOLUTE_PATH}/gmic.cpp)
|
|
+ message("Found G'MIC repository")
|
|
+ else()
|
|
+ get_filename_component(TARGET_CLONE_DIR ${GMIC_ABSOLUTE_PATH}/.. ABSOLUTE)
|
|
+ message("")
|
|
+ message("Cannot find G'MIC repository in " ${GMIC_ABSOLUTE_PATH} )
|
|
+ message("")
|
|
+ message("You should try:")
|
|
+ message("")
|
|
+ message(" git clone https://github.com/dtschump/gmic.git " ${TARGET_CLONE_DIR}/gmic )
|
|
+ message("")
|
|
+ message(FATAL_ERROR "\nG'MIC repository not found")
|
|
+ endif()
|
|
|
|
-#
|
|
-# Look for CImg.h and gmic_stdlib_community.h
|
|
-#
|
|
-set(GMIC_FILES CImg.h gmic_stdlib_community.h)
|
|
-foreach(F ${GMIC_FILES})
|
|
+ #
|
|
+ # Look for CImg.h and gmic_stdlib_community.h
|
|
+ #
|
|
+ set(GMIC_FILES CImg.h gmic_stdlib_community.h)
|
|
+ foreach(F ${GMIC_FILES})
|
|
if(EXISTS ${GMIC_ABSOLUTE_PATH}/${F})
|
|
- message("Found " ${GMIC_PATH}/${F})
|
|
+ message("Found " ${GMIC_PATH}/${F})
|
|
else()
|
|
- message(${F} " not found")
|
|
- execute_process(COMMAND make -C ${GMIC_ABSOLUTE_PATH} ${F})
|
|
- if(EXISTS ${GMIC_ABSOLUTE_PATH}/${F})
|
|
+ message(${F} " not found")
|
|
+ execute_process(COMMAND make -C ${GMIC_ABSOLUTE_PATH} ${F})
|
|
+ if(EXISTS ${GMIC_ABSOLUTE_PATH}/${F})
|
|
message("Found " ${GMIC_PATH}/${F})
|
|
- else()
|
|
+ else()
|
|
message(FATAL_ERROR "\nCannot obtain " ${GMIC_PATH}/${F})
|
|
- endif()
|
|
+ endif()
|
|
endif()
|
|
-endforeach()
|
|
+ endforeach()
|
|
|
|
-#
|
|
-# Ensure that gmic and CImg are the same version
|
|
-#
|
|
-file(STRINGS ${GMIC_ABSOLUTE_PATH}/CImg.h CIMG_VERSION REGEX "cimg_version ")
|
|
-string(REGEX REPLACE ".*cimg_version " "" CIMG_VERSION ${CIMG_VERSION})
|
|
-message("CImg version is [" ${CIMG_VERSION} "]")
|
|
+ #
|
|
+ # Ensure that gmic and CImg are the same version
|
|
+ #
|
|
+ file(STRINGS ${GMIC_ABSOLUTE_PATH}/CImg.h CIMG_VERSION REGEX "cimg_version ")
|
|
+ string(REGEX REPLACE ".*cimg_version " "" CIMG_VERSION ${CIMG_VERSION})
|
|
+ message("CImg version is [" ${CIMG_VERSION} "]")
|
|
|
|
-file(STRINGS ${GMIC_ABSOLUTE_PATH}/gmic.h GMIC_VERSION REGEX "gmic_version ")
|
|
-string(REGEX REPLACE ".*gmic_version " "" GMIC_VERSION ${GMIC_VERSION})
|
|
-message("G'MIC version is [" ${GMIC_VERSION} "]")
|
|
+ file(STRINGS ${GMIC_ABSOLUTE_PATH}/gmic.h GMIC_VERSION REGEX "gmic_version ")
|
|
+ string(REGEX REPLACE ".*gmic_version " "" GMIC_VERSION ${GMIC_VERSION})
|
|
+ message("G'MIC version is [" ${GMIC_VERSION} "]")
|
|
|
|
-if (NOT(${GMIC_VERSION} EQUAL ${CIMG_VERSION}))
|
|
+ if (NOT(${GMIC_VERSION} EQUAL ${CIMG_VERSION}))
|
|
message(FATAL_ERROR "\nVersion numbers of files 'gmic.h' (" ${GMIC_VERSION} ") and 'CImg.h' (" ${CIMG_VERSION} ") mismatch")
|
|
+ endif()
|
|
endif()
|
|
|
|
|
|
@@ -128,6 +137,13 @@ endif()
|
|
|
|
# Required packages
|
|
|
|
+#
|
|
+# Gmic
|
|
+#
|
|
+if (ENABLE_SYSTEM_GMIC)
|
|
+ find_package(Gmic REQUIRED CONFIG)
|
|
+endif (ENABLE_SYSTEM_GMIC)
|
|
+
|
|
#
|
|
# Threads
|
|
#
|
|
@@ -360,14 +376,19 @@ elseif (CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
|
|
else()
|
|
string(REPLACE "-O2" "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
|
|
string(REPLACE "-O3" "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
|
|
- set_source_files_properties(${GMIC_PATH}/gmic.cpp PROPERTIES COMPILE_FLAGS "-Ofast")
|
|
+ if (NOT ENABLE_SYSTEM_GMIC)
|
|
+ set_source_files_properties(${GMIC_PATH}/gmic.cpp PROPERTIES COMPILE_FLAGS "-Ofast")
|
|
+ endif (NOT ENABLE_SYSTEM_GMIC)
|
|
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2")
|
|
endif()
|
|
else()
|
|
message(FATAL_ERROR "Build type not recognized (${CMAKE_BUILD_TYPE})")
|
|
endif()
|
|
|
|
-include_directories(${CMAKE_SOURCE_DIR}/src ${GMIC_PATH})
|
|
+if (NOT ENABLE_SYSTEM_GMIC)
|
|
+ include_directories(${GMIC_PATH})
|
|
+endif (NOT ENABLE_SYSTEM_GMIC)
|
|
+include_directories(${CMAKE_SOURCE_DIR}/src)
|
|
|
|
set (gmic_qt_SRCS
|
|
|
|
@@ -443,11 +464,19 @@ set (gmic_qt_SRCS
|
|
src/Widgets/ProgressInfoWindow.h
|
|
src/Widgets/VisibleTagSelector.h
|
|
src/ZoomConstraint.h
|
|
+)
|
|
|
|
- ${GMIC_PATH}/gmic.h
|
|
- ${GMIC_PATH}/CImg.h
|
|
- ${GMIC_PATH}/gmic_stdlib_community.h
|
|
+if (NOT ENABLE_SYSTEM_GMIC)
|
|
+ set(gmic_qt_SRCS
|
|
+ ${gmic_qt_SRCS}
|
|
+ ${GMIC_PATH}/gmic.h
|
|
+ ${GMIC_PATH}/CImg.h
|
|
+ ${GMIC_PATH}/gmic_stdlib_community.h
|
|
+ )
|
|
+endif()
|
|
|
|
+set(gmic_qt_SRCS
|
|
+ ${gmic_qt_SRCS}
|
|
src/ClickableLabel.cpp
|
|
src/Common.cpp
|
|
src/OverrideCursor.cpp
|
|
@@ -540,7 +569,9 @@ if(ENABLE_DYNAMIC_LINKING)
|
|
${gmic_qt_LIBRARIES}
|
|
"gmic"
|
|
)
|
|
- link_directories(${GMIC_LIB_PATH})
|
|
+ if (NOT ENABLE_SYSTEM_GMIC)
|
|
+ link_directories(${GMIC_LIB_PATH})
|
|
+ endif()
|
|
else(ENABLE_DYNAMIC_LINKING)
|
|
set(gmic_qt_SRCS
|
|
${gmic_qt_SRCS}
|