Skip to content

Commit 84d80e2

Browse files
committed
Merge branch 'macos_build'
* OpenCL plugin is still broken
2 parents 8e5694d + 1d5461b commit 84d80e2

File tree

9 files changed

+169
-384
lines changed

9 files changed

+169
-384
lines changed

CMakeLists.txt

Lines changed: 119 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
CMAKE_MINIMUM_REQUIRED(VERSION 3.10.0)
1+
CMAKE_MINIMUM_REQUIRED(VERSION 3.21.0)
22

33
IF(NOT DEFINED ST_ARCH)
44
SET(ST_ARCH "X86")
@@ -120,7 +120,6 @@ INCLUDE(CheckIncludeFile)
120120
INCLUDE(CheckIncludeFileCXX)
121121
INCLUDE(TestCXXAcceptsFlag)
122122
INCLUDE(CMakeDependentOption)
123-
INCLUDE(cmake/FindPthreads.cmake)
124123
INCLUDE(cmake/SetDefaultBuildType.cmake)
125124
INCLUDE(cmake/SetDefaultGccFlags.cmake)
126125
INCLUDE(cmake/ToNativePath.cmake)
@@ -179,7 +178,11 @@ IF(ST_USE_QT6 STREQUAL "ON")
179178
IF(ENABLE_OPENGL)
180179
FIND_PACKAGE(Qt6OpenGL ${qt_min_version} REQUIRED)
181180
ENDIF()
182-
ELSE()
181+
IF(APPLE)
182+
# Not used but required for loading cocoa plugin
183+
FIND_PACKAGE(Qt6PrintSupport ${qt_min_version} REQUIRED)
184+
ENDIF(APPLE)
185+
ELSE()
183186
SET(qt_min_version 5.3)
184187
FIND_PACKAGE(Qt5Core ${qt_min_version} REQUIRED)
185188
FIND_PACKAGE(Qt5Gui ${qt_min_version} REQUIRED)
@@ -190,6 +193,10 @@ ELSE()
190193
IF(ENABLE_OPENGL)
191194
FIND_PACKAGE(Qt5OpenGL ${qt_min_version} REQUIRED)
192195
ENDIF()
196+
IF(APPLE)
197+
# Not used but required for loading cocoa plugin
198+
FIND_PACKAGE(Qt5PrintSupport ${qt_min_version} REQUIRED)
199+
ENDIF(APPLE)
193200
IF(NOT DEFINED QT_DEFAULT_MAJOR_VERSION)
194201
SET(QT_DEFAULT_MAJOR_VERSION 5)
195202
ENDIF()
@@ -201,6 +208,10 @@ INCLUDE_DIRECTORIES("${ZLIB_INCLUDE_DIR}")
201208
FIND_PACKAGE(TIFF REQUIRED)
202209
INCLUDE_DIRECTORIES("${TIFF_INCLUDE_DIR}")
203210

211+
IF(APPLE)
212+
FIND_PACKAGE(JPEG REQUIRED)
213+
ENDIF()
214+
204215
IF(WIN32)
205216
ADD_DEFINITIONS(-DUSE_LIBTIFF_DLL)
206217
ENDIF()
@@ -236,17 +247,8 @@ ENDIF()
236247
SET(EXTRA_LIBS "")
237248

238249
IF(UNIX)
239-
FindPthreads()
240-
IF(PTHREADS_FOUND)
241-
ADD_DEFINITIONS(${PTHREADS_CFLAGS})
242-
LINK_LIBRARIES(${PTHREADS_LIBS})
243-
ELSE(PTHREADS_FOUND)
244-
MESSAGE(
245-
FATAL_ERROR
246-
"Could not detect threading flags.\n"
247-
"Try specifying them manually in PTHREADS_CFLAGS and PTHREADS_LIBS."
248-
)
249-
ENDIF(PTHREADS_FOUND)
250+
FIND_PACKAGE(Threads REQUIRED)
251+
LINK_LIBRARIES(Threads::Threads)
250252
ELSEIF(WIN32)
251253
ADD_DEFINITIONS(-DNOMINMAX)
252254
ENDIF(UNIX)
@@ -294,6 +296,15 @@ IF(NOT TIFF_LIBRARY)
294296
ELSE()
295297
LIST(APPEND EXTRA_LIBS ${TIFF_LIBRARY})
296298
ENDIF()
299+
300+
IF(APPLE)
301+
IF(NOT JPEG_LIBRARY)
302+
LIST(APPEND EXTRA_LIBS ${JPEG_LIBRARIES})
303+
ELSE()
304+
LIST(APPEND EXTRA_LIBS ${JPEG_LIBRARY})
305+
ENDIF()
306+
ENDIF()
307+
297308
IF(NOT ZLIB_LIBRARY)
298309
LIST(APPEND EXTRA_LIBS ${ZLIB_LIBRARIES})
299310
ELSE()
@@ -311,7 +322,11 @@ IF(ENABLE_OPENGL)
311322
ENDIF()
312323

313324
# Prepare config.h
314-
IF(WIN32)
325+
IF(APPLE)
326+
SET(TRANSLATION_DIRS "../Resources/translations")
327+
SET(STYLESHEETS_DIR "../Resources/stylesheets")
328+
SET(PLUGIN_DIRS "../PlugIns")
329+
ELSEIF(WIN32)
315330
SET(TRANSLATION_DIRS ".:translations")
316331
SET(STYLESHEETS_DIR "stylesheets")
317332
SET(PLUGIN_DIRS ".")
@@ -326,7 +341,12 @@ CONFIGURE_FILE(src/config.h.in ${CMAKE_BINARY_DIR}/src/config.h @ONLY)
326341
ADD_SUBDIRECTORY(src)
327342
INCLUDE_DIRECTORIES("${toplevel_ui_sources_BINARY_DIR}")
328343

329-
INSTALL(TARGETS scantailor-experimental scantailor-experimental-cli RUNTIME DESTINATION bin)
344+
IF(APPLE)
345+
INSTALL(TARGETS scantailor-experimental BUNDLE DESTINATION .)
346+
INSTALL(TARGETS scantailor-experimental-cli RUNTIME DESTINATION scantailor-experimental.app/Contents/Library)
347+
ELSE()
348+
INSTALL(TARGETS scantailor-experimental scantailor-experimental-cli RUNTIME DESTINATION bin)
349+
ENDIF()
330350

331351
# Translations
332352
TRANSLATION_SOURCES(
@@ -356,17 +376,46 @@ ELSE()
356376
ENDIF()
357377
ADD_CUSTOM_TARGET(compile_translations ALL DEPENDS ${QM_FILES})
358378

359-
INSTALL(FILES ${QM_FILES} DESTINATION "share/scantailor-experimental/translations")
360-
INSTALL(DIRECTORY "${CMAKE_SOURCE_DIR}/src/stylesheets" DESTINATION "share/scantailor-experimental")
361-
IF(UNIX)
379+
IF(APPLE)
380+
INSTALL(FILES ${QM_FILES} DESTINATION "scantailor-experimental.app/Contents/Resources/translations")
381+
ELSE()
382+
INSTALL(FILES ${QM_FILES} DESTINATION "share/scantailor-experimental/translations")
383+
ENDIF()
384+
385+
IF(APPLE)
386+
INSTALL(DIRECTORY "${CMAKE_SOURCE_DIR}/src/stylesheets" DESTINATION scantailor-experimental.app/Contents/Resources)
387+
ELSE()
388+
INSTALL(DIRECTORY "${CMAKE_SOURCE_DIR}/src/stylesheets" DESTINATION "share/scantailor-experimental")
389+
ENDIF()
390+
391+
IF(UNIX AND NOT APPLE)
362392
CONFIGURE_FILE("src/io.github.ImageProcessing_ElectronicPublications.scantailor-experimental.metainfo.xml.in" "src/share/metainfo/io.github.ImageProcessing_ElectronicPublications.scantailor-experimental.metainfo.xml")
393+
INSTALL(DIRECTORY "${CMAKE_SOURCE_DIR}/src/share/" DESTINATION "share")
363394
ENDIF()
364-
INSTALL(DIRECTORY "${CMAKE_SOURCE_DIR}/src/share/" DESTINATION "share")
365395

366396
# Source code packaging
367-
SET(CPACK_CMAKE_GENERATOR "")
368-
SET(CPACK_SOURCE_GENERATOR "TGZ")
369-
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "scantailor-experimental-${ST_VERSION}")
397+
IF(APPLE)
398+
SET(CPACK_PACKAGE_NAME "scantailor-experimental")
399+
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "scantailor-experimental")
400+
401+
SET(CPACK_PACKAGE_VERSION_MAJOR ${ST_RELEASE_YEAR})
402+
SET(CPACK_PACKAGE_VERSION_MINOR ${ST_RELEASE_MONTH})
403+
SET(CPACK_PACKAGE_VERSION_PATCH ${ST_RELEASE_DAY})
404+
405+
SET(CPACK_SOURCE_GENERATOR TGZ)
406+
SET(CPACK_GENERATOR DragNDrop)
407+
408+
SET(CPACK_BINARY_BUNDLE OFF)
409+
SET(CPACK_BINARY_DRAGNDROP ON)
410+
SET(CPACK_BINARY_PRODUCTBUILD OFF)
411+
SET(CPACK_BINARY_TGZ ON)
412+
SET(CPACK_BINARY_STGZ OFF)
413+
ELSE()
414+
SET(CPACK_CMAKE_GENERATOR "")
415+
SET(CPACK_SOURCE_GENERATOR "TGZ")
416+
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "scantailor-experimental-${ST_VERSION}")
417+
ENDIF()
418+
370419
SET(
371420
CPACK_SOURCE_IGNORE_FILES
372421
"/\\\\.svn/"
@@ -380,7 +429,52 @@ SET(
380429
)
381430
INCLUDE(CPack)
382431

383-
IF(WIN32)
432+
IF(APPLE)
433+
INSTALL(IMPORTED_RUNTIME_ARTIFACTS scantailor-experimental
434+
RUNTIME_DEPENDENCY_SET runtime
435+
BUNDLE DESTINATION .
436+
)
437+
438+
INSTALL(RUNTIME_DEPENDENCY_SET runtime
439+
DESTINATION scantailor-experimental.app/Contents/Frameworks
440+
PRE_EXCLUDE_REGEXES "^/System" "^/Library" "^/usr/lib"
441+
POST_EXCLUDE_REGEXES ""
442+
)
443+
444+
IF(QT_DEFAULT_MAJOR_VERSION EQUAL 5)
445+
CMAKE_PATH(SET QT_PLUGINS_DIR NORMALIZE ${Qt5Core_DIR}/../../../plugins)
446+
ELSE()
447+
CMAKE_PATH(SET QT_PLUGINS_DIR NORMALIZE ${Qt6Core_DIR}/../../../plugins)
448+
ENDIF()
449+
450+
set(PLUGINS_DESTINATION scantailor-experimental.app/Contents/PlugIns)
451+
452+
INSTALL(FILES ${QT_PLUGINS_DIR}/platforms/libqcocoa.dylib DESTINATION ${PLUGINS_DESTINATION}/platforms)
453+
454+
INSTALL(FILES ${QT_PLUGINS_DIR}/styles/libqmacstyle.dylib DESTINATION ${PLUGINS_DESTINATION}/styles)
455+
456+
INSTALL(FILES ${QT_PLUGINS_DIR}/imageformats/libqico.dylib DESTINATION ${PLUGINS_DESTINATION}/imageformats)
457+
INSTALL(FILES ${QT_PLUGINS_DIR}/imageformats/libqjpeg.dylib DESTINATION ${PLUGINS_DESTINATION}/imageformats)
458+
INSTALL(FILES ${QT_PLUGINS_DIR}/imageformats/libqsvg.dylib DESTINATION ${PLUGINS_DESTINATION}/imageformats)
459+
INSTALL(FILES ${QT_PLUGINS_DIR}/imageformats/libqtiff.dylib DESTINATION ${PLUGINS_DESTINATION}/imageformats)
460+
461+
IF(QT_DEFAULT_MAJOR_VERSION EQUAL 5)
462+
SET(QtCore_DIR "${Qt5Core_DIR}")
463+
ELSE()
464+
SET(QtCore_DIR "${Qt6Core_DIR}")
465+
ENDIF()
466+
467+
CMAKE_PATH(SET Qt_DIR NORMALIZE "${QtCore_DIR}/../../..")
468+
469+
FOREACH(qm_file ${QM_FILES})
470+
STRING(REGEX REPLACE "^.*scantailor-experimental_" "${Qt_DIR}translations/qtbase_" qtbase_qm_file "${qm_file}")
471+
IF(EXISTS "${qtbase_qm_file}")
472+
INSTALL(FILES "${qtbase_qm_file}" DESTINATION "scantailor-experimental.app/Contents/Resources/translations")
473+
ENDIF()
474+
STRING(REGEX REPLACE "^.*scantailor-experimental_(.*)\.qm" "\\1" qtbase_qm_name "${qm_file}")
475+
INSTALL(DIRECTORY DESTINATION "scantailor-experimental.app/Contents/Resources/${qtbase_qm_name}.lproj")
476+
ENDFOREACH()
477+
ELSEIF(WIN32)
384478
# Copy some DLLs to the staging dir.
385479

386480
find_file(LIBJPEG_DLL
@@ -529,4 +623,4 @@ ENDIF()
529623

530624
# Installer for Windows. Must go last.
531625
ADD_SUBDIRECTORY(packaging/windows)
532-
ENDIF(WIN32)
626+
ENDIF()

cmake/FindPthreads.cmake

Lines changed: 0 additions & 98 deletions
This file was deleted.

packaging/osx/Info.plist.in

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,21 @@
77
<key>CFBundleInfoDictionaryVersion</key>
88
<string>6.0</string>
99
<key>CFBundleExecutable</key>
10-
<string>ScanTailor</string>
10+
<string>scantailor-experimental</string>
1111
<key>CFBundleName</key>
12-
<string>ScanTailor</string>
12+
<string>ScanTailor-Experimental</string>
1313
<key>CFBundlePackageType</key>
1414
<string>APPL</string>
1515
<key>CFBundleIdentifier</key>
16-
<string>net.sourceforge.Scantailor</string>
16+
<string>com.github.Scantailor-Experimental</string>
1717
<key>CFBundleSignature</key>
18-
<string>sctl</string>
18+
<string>stex</string>
1919
<key>CSResourcesFileMapped</key>
2020
<true/>
2121
<key>CFBundleIconFile</key>
22-
<string>ScanTailor.icns</string>
22+
<string>ScanTailor-Experimental.icns</string>
2323
<key>CFBundleShortVersionString</key>
24-
<string>ScanTailor-@VERSION@</string>
24+
<string>ScanTailor-Experimental-@VERSION@</string>
2525
<key>LSMinimumSystemVersion</key>
2626
<string>10.4.0</string>
2727
</dict>

0 commit comments

Comments
 (0)