1
- CMAKE_MINIMUM_REQUIRED (VERSION 3.10 .0)
1
+ CMAKE_MINIMUM_REQUIRED (VERSION 3.21 .0)
2
2
3
3
IF (NOT DEFINED ST_ARCH)
4
4
SET (ST_ARCH "X86" )
@@ -120,7 +120,6 @@ INCLUDE(CheckIncludeFile)
120
120
INCLUDE (CheckIncludeFileCXX)
121
121
INCLUDE (TestCXXAcceptsFlag)
122
122
INCLUDE (CMakeDependentOption)
123
- INCLUDE (cmake/FindPthreads.cmake)
124
123
INCLUDE (cmake/SetDefaultBuildType.cmake)
125
124
INCLUDE (cmake/SetDefaultGccFlags.cmake)
126
125
INCLUDE (cmake/ToNativePath.cmake)
@@ -179,7 +178,11 @@ IF(ST_USE_QT6 STREQUAL "ON")
179
178
IF (ENABLE_OPENGL)
180
179
FIND_PACKAGE (Qt6OpenGL ${qt_min_version} REQUIRED)
181
180
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 ()
183
186
SET (qt_min_version 5.3)
184
187
FIND_PACKAGE (Qt5Core ${qt_min_version} REQUIRED)
185
188
FIND_PACKAGE (Qt5Gui ${qt_min_version} REQUIRED)
@@ -190,6 +193,10 @@ ELSE()
190
193
IF (ENABLE_OPENGL)
191
194
FIND_PACKAGE (Qt5OpenGL ${qt_min_version} REQUIRED)
192
195
ENDIF ()
196
+ IF (APPLE )
197
+ # Not used but required for loading cocoa plugin
198
+ FIND_PACKAGE (Qt5PrintSupport ${qt_min_version} REQUIRED)
199
+ ENDIF (APPLE )
193
200
IF (NOT DEFINED QT_DEFAULT_MAJOR_VERSION)
194
201
SET (QT_DEFAULT_MAJOR_VERSION 5)
195
202
ENDIF ()
@@ -201,6 +208,10 @@ INCLUDE_DIRECTORIES("${ZLIB_INCLUDE_DIR}")
201
208
FIND_PACKAGE (TIFF REQUIRED)
202
209
INCLUDE_DIRECTORIES ("${TIFF_INCLUDE_DIR} " )
203
210
211
+ IF (APPLE )
212
+ FIND_PACKAGE (JPEG REQUIRED)
213
+ ENDIF ()
214
+
204
215
IF (WIN32 )
205
216
ADD_DEFINITIONS (-DUSE_LIBTIFF_DLL)
206
217
ENDIF ()
@@ -236,17 +247,8 @@ ENDIF()
236
247
SET (EXTRA_LIBS "" )
237
248
238
249
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)
250
252
ELSEIF (WIN32 )
251
253
ADD_DEFINITIONS (-DNOMINMAX)
252
254
ENDIF (UNIX )
@@ -294,6 +296,15 @@ IF(NOT TIFF_LIBRARY)
294
296
ELSE ()
295
297
LIST (APPEND EXTRA_LIBS ${TIFF_LIBRARY} )
296
298
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
+
297
308
IF (NOT ZLIB_LIBRARY)
298
309
LIST (APPEND EXTRA_LIBS ${ZLIB_LIBRARIES} )
299
310
ELSE ()
@@ -311,7 +322,11 @@ IF(ENABLE_OPENGL)
311
322
ENDIF ()
312
323
313
324
# 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 )
315
330
SET (TRANSLATION_DIRS ".:translations" )
316
331
SET (STYLESHEETS_DIR "stylesheets" )
317
332
SET (PLUGIN_DIRS "." )
@@ -326,7 +341,12 @@ CONFIGURE_FILE(src/config.h.in ${CMAKE_BINARY_DIR}/src/config.h @ONLY)
326
341
ADD_SUBDIRECTORY (src)
327
342
INCLUDE_DIRECTORIES ("${toplevel_ui_sources_BINARY_DIR} " )
328
343
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 ()
330
350
331
351
# Translations
332
352
TRANSLATION_SOURCES(
@@ -356,17 +376,46 @@ ELSE()
356
376
ENDIF ()
357
377
ADD_CUSTOM_TARGET (compile_translations ALL DEPENDS ${QM_FILES} )
358
378
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 )
362
392
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" )
363
394
ENDIF ()
364
- INSTALL (DIRECTORY "${CMAKE_SOURCE_DIR} /src/share/" DESTINATION "share" )
365
395
366
396
# 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
+
370
419
SET (
371
420
CPACK_SOURCE_IGNORE_FILES
372
421
"/\\\\ .svn/"
@@ -380,7 +429,52 @@ SET(
380
429
)
381
430
INCLUDE (CPack)
382
431
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 )
384
478
# Copy some DLLs to the staging dir.
385
479
386
480
find_file (LIBJPEG_DLL
@@ -529,4 +623,4 @@ ENDIF()
529
623
530
624
# Installer for Windows. Must go last.
531
625
ADD_SUBDIRECTORY (packaging/windows)
532
- ENDIF (WIN32 )
626
+ ENDIF ()
0 commit comments