Created
July 19, 2022 03:46
-
-
Save Benitoite/16e65adf6e674173bf2b7ab588629b19 to your computer and use it in GitHub Desktop.
brings ART macos package up-to-date with RT-dev
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/CMakeLists.txt b/CMakeLists.txt | |
index bf204a5d2..194cf2da5 100644 | |
--- a/CMakeLists.txt | |
+++ b/CMakeLists.txt | |
@@ -1,6 +1,7 @@ | |
if(APPLE) | |
- cmake_minimum_required(VERSION 3.5) | |
+ cmake_minimum_required(VERSION 3.7) | |
cmake_policy(SET CMP0025 NEW) | |
+ cmake_policy(SET CMP0037 NEW) | |
else() | |
cmake_minimum_required(VERSION 3.0) | |
endif() | |
@@ -151,22 +152,30 @@ option(ENABLE_LIBRAW "Use libraw for decoding" OFF) | |
# Set installation directories: | |
if(WIN32 OR APPLE) | |
if(BUILD_BUNDLE) | |
- message(STATUS "You have set BUILD_BUNDLE=ON but this is not necessary - the option is forced to ON for Windows and macOS.") | |
+ message( | |
+ STATUS | |
+ "You have set BUILD_BUNDLE=ON but this is not necessary - the option is forced to ON for Windows and macOS." | |
+ ) | |
endif() | |
set(BUILD_BUNDLE ON FORCE) | |
endif() | |
if(NOT DEFINED BUNDLE_BASE_INSTALL_DIR) | |
if(APPLE) | |
- set(BUNDLE_BASE_INSTALL_DIR "${CMAKE_BINARY_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() | |
endif() | |
if(BUILD_BUNDLE) | |
- set(BINDIR .) | |
- set(CMAKE_INSTALL_PREFIX "${BUNDLE_BASE_INSTALL_DIR}") | |
+ if(APPLE) | |
+ set(BINDIR "${BUNDLE_BASE_INSTALL_DIR}") | |
+ set(CMAKE_INSTALL_PREFIX "${PROJECT_SOURCE_DIR}/build") | |
+ else() | |
+ set(BINDIR .) | |
+ set(CMAKE_INSTALL_PREFIX "${BUNDLE_BASE_INSTALL_DIR}") | |
+ endif() | |
endif() | |
if(NOT DEFINED BINDIR) | |
@@ -176,19 +185,19 @@ endif() | |
if(NOT DEFINED DATADIR) | |
if(BUILD_BUNDLE) | |
if(APPLE) | |
- set(DATADIR "../../Resources") | |
+ set(DATADIR "${PROJECT_SOURCE_DIR}/build/${CMAKE_BUILD_TYPE}/Resources/share") | |
else() | |
set(DATADIR .) | |
endif() | |
else() | |
- set(DATADIR "${CMAKE_INSTALL_PREFIX}/share/ART") | |
+ set(DATADIR "${CMAKE_INSTALL_PREFIX}/share/rawtherapee") | |
endif() | |
endif() | |
if(NOT DEFINED LIBDIR) | |
if(BUILD_BUNDLE) | |
if(APPLE) | |
- set(LIBDIR "../../Frameworks") | |
+ set(LIBDIR "${PROJECT_SOURCE_DIR}/build/${CMAKE_BUILD_TYPE}/Frameworks") | |
else() | |
set(LIBDIR .) | |
endif() | |
@@ -208,32 +217,48 @@ endif() | |
if(NOT DEFINED DOCDIR) | |
if(BUILD_BUNDLE) | |
- set(DOCDIR "${DATADIR}/share/doc") | |
+ if(APPLE) | |
+ set(DOCDIR "${DATADIR}/doc") | |
+ else() | |
+ set(DOCDIR "${DATADIR}/share/doc") | |
+ endif() | |
else() | |
- set(DOCDIR "${CMAKE_INSTALL_PREFIX}/share/doc/ART") | |
+ set(DOCDIR "${CMAKE_INSTALL_PREFIX}/share/doc/rawtherapee") | |
endif() | |
endif() | |
if(NOT DEFINED CREDITSDIR) | |
if(BUILD_BUNDLE) | |
- set(CREDITSDIR "${DATADIR}") | |
+ if(APPLE) | |
+ set(CREDITSDIR "${DATADIR}/..") | |
+ else() | |
+ set(CREDITSDIR "${DATADIR}") | |
+ endif() | |
else() | |
- set(CREDITSDIR "${CMAKE_INSTALL_PREFIX}/share/doc/ART") | |
+ set(CREDITSDIR "${CMAKE_INSTALL_PREFIX}/share/doc/rawtherapee") | |
endif() | |
endif() | |
if(NOT DEFINED LICENCEDIR) | |
if(BUILD_BUNDLE) | |
- set(LICENCEDIR "${DATADIR}") | |
+ if(APPLE) | |
+ set(LICENCEDIR "${CREDITSDIR}") | |
+ else() | |
+ set(LICENCEDIR "${DATADIR}") | |
+ endif() | |
else() | |
- set(LICENCEDIR "${CMAKE_INSTALL_PREFIX}/share/doc/ART") | |
+ set(LICENCEDIR "${CMAKE_INSTALL_PREFIX}/share/doc/rawtherapee") | |
endif() | |
endif() | |
if(NOT DEFINED DESKTOPDIR) | |
if(UNIX) | |
if(BUILD_BUNDLE) | |
- set(DESKTOPDIR "${DATADIR}/share/applications") | |
+ if(APPLE) | |
+ set(DESKTOPDIR "${DATADIR}/applications") | |
+ else() | |
+ set(DESKTOPDIR "${DATADIR}/share/applications") | |
+ endif() | |
else() | |
set(DESKTOPDIR "${CMAKE_INSTALL_PREFIX}/share/applications") | |
endif() | |
@@ -243,7 +268,11 @@ endif() | |
if(NOT DEFINED ICONSDIR) | |
if(UNIX) | |
if(BUILD_BUNDLE) | |
- set(ICONSDIR "${DATADIR}/share/icons") | |
+ if(APPLE) | |
+ set(ICONSDIR "${DATADIR}/icons") | |
+ else() | |
+ set(ICONSDIR "${DATADIR}/share/icons") | |
+ endif() | |
else() | |
set(ICONSDIR "${CMAKE_INSTALL_PREFIX}/share/icons") | |
endif() | |
@@ -253,33 +282,54 @@ endif() | |
if(NOT DEFINED APPDATADIR) | |
if(UNIX) | |
if(BUILD_BUNDLE) | |
- set(APPDATADIR "${DATADIR}/share/metainfo") | |
+ if(APPLE) | |
+ set(APPDATADIR "${DATADIR}/metainfo") | |
+ else() | |
+ set(APPDATADIR "${DATADIR}/share/metainfo") | |
+ endif() | |
else() | |
set(APPDATADIR "${CMAKE_INSTALL_PREFIX}/share/metainfo") | |
endif() | |
endif() | |
endif() | |
-if (NOT APPLE) | |
+if(NOT APPLE) | |
if(DEFINED LENSFUNDBDIR AND NOT IS_ABSOLUTE "${LENSFUNDBDIR}") | |
set(LENSFUNDBDIR "${DATADIR}/${LENSFUNDBDIR}") | |
endif() | |
+else() | |
+ set(LENSFUNDBDIR "${LENSFUNDBDIR}") | |
endif() | |
if(APPLE) | |
if("${CODESIGNID}") | |
- set(CODESIGNID "${CODESIGNID}" CACHE STRING "Codesigning Identity") | |
+ set(CODESIGNID | |
+ "${CODESIGNID}" | |
+ CACHE STRING "Codesigning Identity") | |
endif() | |
if("${NOTARY}") | |
- set(NOTARY "${NOTARY}" CACHE STRING "Notarization Identity") | |
+ set(NOTARY | |
+ "${NOTARY}" | |
+ CACHE STRING "Notarization Identity") | |
endif() | |
if("${LOCAL_PREFIX}") | |
- set(LOCAL_PREFIX "${LOCAL_PREFIX}" CACHE STRING "macos/gtk parent directory ie /usr or /opt") | |
- elseif(NOT DEFINED LOCAL_PREFIX) | |
- set(LOCAL_PREFIX "/usr") | |
+ set(LOCAL_PREFIX | |
+ "${LOCAL_PREFIX}" | |
+ CACHE STRING "macos/gtk parent directory ie /usr/local or /opt/local or /opt/homebrew (for arm64)") | |
+ else() | |
+ set(LOCAL_PREFIX | |
+ /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 | |
+ ON | |
+ CACHE BOOL | |
+ "Use the andreyvit/create-dmg script to make a fancy .dmg") | |
endif() | |
endif() | |
+ | |
# Enforce absolute paths for non-bundle builds: | |
if(NOT BUILD_BUNDLE) | |
foreach(path BINDIR DATADIR LIBDIR DOCDIR CREDITSDIR LICENCEDIR) | |
@@ -367,6 +417,10 @@ if(WITH_SYSTEM_KLT) | |
find_package(KLT REQUIRED) | |
endif() | |
+#Set the appropriate FFTW flags on macOS | |
+if(APPLE AND OPTION_OMP) | |
+ set(EXTRA_LIB "-L${LOCAL_PREFIX}/lib -lfftw3f_omp -lfftw3f -lm") | |
+endif() | |
# Check for libcanberra-gtk3 (sound events on Linux): | |
if(UNIX AND(NOT APPLE)) | |
@@ -380,8 +434,8 @@ if(WITH_LTO) | |
string(REGEX REPLACE ".* ([0-9.]+)\n.*" "\\1" BINUTILS_VERSION_DETECTED "${BINUTILS_VERSION_DETECTED}") | |
if("${BINUTILS_VERSION_DETECTED}" VERSION_LESS "${BINUTILS_VERSION_MININUM}") | |
if(APPLE) | |
- set(CMAKE_AR "/opt/local/bin/ar") | |
- set(CMAKE_RANLIB "/opt/local/bin/ranlib") | |
+ set(CMAKE_AR "ar") | |
+ set(CMAKE_RANLIB "ranlib") | |
else() | |
set(CMAKE_AR "/usr/bin/gcc-ar") | |
set(CMAKE_RANLIB "/usr/bin/gcc-ranlib") | |
@@ -590,10 +644,23 @@ 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_COMMAND} | |
+ -DPROJECT_SOURCE_DIR:STRING=${PROJECT_SOURCE_DIR} | |
+ -DCACHE_NAME_SUFFIX:STRING=${CACHE_NAME_SUFFIX} | |
+ -DSYSTEM:STRING=Apple | |
+ -DCXX_FLAGS:STRING=${CXX_FLAGS} | |
+ -DLFLAGS:STRING=${LFLAGS} | |
+ -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="${CMAKE_SYSTEM_NAME}" | |
-DCXX_FLAGS:STRING=${CXX_FLAGS} | |
@@ -625,7 +692,13 @@ install(FILES RELEASE_NOTES.txt DESTINATION "${CREDITSDIR}" OPTIONAL) | |
# The standard location for man pages in Linux is /usr/share/man | |
# Use "manpath" to see the search paths for man pages on your system. | |
if(BUILD_BUNDLE) | |
- install(FILES "${PROJECT_SOURCE_DIR}/doc/manpage/ART.1" DESTINATION "${DATADIR}/share/man/man1") | |
+ if(APPLE) | |
+ install(FILES "${PROJECT_SOURCE_DIR}/doc/manpage/ART.1" | |
+ DESTINATION "${DATADIR}/man/man1") | |
+ else() | |
+ install(FILES "${PROJECT_SOURCE_DIR}/doc/manpage/ART.1" | |
+ DESTINATION "${DATADIR}/share/man/man1") | |
+ endif() | |
else() | |
install(FILES "${PROJECT_SOURCE_DIR}/doc/manpage/ART.1" DESTINATION "${CMAKE_INSTALL_PREFIX}/share/man/man1") | |
endif() | |
diff --git a/rtgui/CMakeLists.txt b/rtgui/CMakeLists.txt | |
index a4ba11f26..e6a20fbc4 100644 | |
--- a/rtgui/CMakeLists.txt | |
+++ b/rtgui/CMakeLists.txt | |
@@ -254,27 +254,27 @@ if(LIBRAW_FOUND) | |
endif() | |
# Create new executables targets | |
-add_executable(rth ${EXTRA_SRC_NONCLI} ${NONCLISOURCEFILES}) | |
-add_executable(rth-cli ${EXTRA_SRC_CLI} ${CLISOURCEFILES}) | |
+add_executable(art ${EXTRA_SRC_NONCLI} ${NONCLISOURCEFILES}) | |
+add_executable(art-cli ${EXTRA_SRC_CLI} ${CLISOURCEFILES}) | |
# Add dependencies to executables targets | |
-add_dependencies(rth UpdateInfo) | |
-add_dependencies(rth-cli UpdateInfo) | |
+add_dependencies(art UpdateInfo) | |
+add_dependencies(art-cli UpdateInfo) | |
#Define a target specific definition to use in code | |
-target_compile_definitions(rth PUBLIC GUIVERSION) | |
-target_compile_definitions(rth-cli PUBLIC CLIVERSION) | |
+target_compile_definitions(art PUBLIC GUIVERSION) | |
+target_compile_definitions(art-cli PUBLIC CLIVERSION) | |
# Set executables targets properties, i.e. output filename and compile flags | |
# for "Debug" builds, open a console in all cases for Windows version | |
if((WIN32) AND NOT(UPPER_CMAKE_BUILD_TYPE STREQUAL "DEBUG")) | |
- set_target_properties(rth PROPERTIES LINK_FLAGS "-mwindows") | |
+ set_target_properties(art PROPERTIES LINK_FLAGS "-mwindows") | |
endif() | |
-set_target_properties(rth PROPERTIES COMPILE_FLAGS "${CMAKE_CXX_FLAGS}" OUTPUT_NAME ART) | |
-set_target_properties(rth-cli PROPERTIES COMPILE_FLAGS "${CMAKE_CXX_FLAGS}" OUTPUT_NAME ART-cli) | |
+set_target_properties(art PROPERTIES COMPILE_FLAGS "${CMAKE_CXX_FLAGS}" OUTPUT_NAME art) | |
+set_target_properties(art-cli PROPERTIES COMPILE_FLAGS "${CMAKE_CXX_FLAGS}" OUTPUT_NAME art-cli) | |
# Add linked libraries dependencies to executables targets | |
-target_link_libraries(rth PUBLIC | |
+target_link_libraries(art PUBLIC | |
rtengine | |
${CANBERRA-GTK_LIBRARIES} | |
${EXPAT_LIBRARIES} | |
@@ -298,7 +298,7 @@ target_link_libraries(rth PUBLIC | |
${EXIV2_LIBRARIES} | |
) | |
-target_link_libraries(rth-cli PUBLIC | |
+target_link_libraries(art-cli PUBLIC | |
rtengine | |
${CAIROMM_LIBRARIES} | |
${EXPAT_LIBRARIES} | |
@@ -321,10 +321,10 @@ target_link_libraries(rth-cli PUBLIC | |
) | |
if(HAS_MIMALLOC) | |
- target_link_libraries(rth PUBLIC mimalloc) | |
- target_link_libraries(rth-cli PUBLIC mimalloc) | |
+ target_link_libraries(art PUBLIC mimalloc) | |
+ target_link_libraries(art-cli PUBLIC mimalloc) | |
endif() | |
# Install executables | |
-install(TARGETS rth DESTINATION ${BINDIR}) | |
-install(TARGETS rth-cli DESTINATION ${BINDIR}) | |
+install(TARGETS art DESTINATION ${BINDIR}) | |
+install(TARGETS art-cli DESTINATION ${BINDIR}) | |
diff --git a/tools/osx/Info.plist-bin.in b/tools/osx/Info.plist-bin.in | |
deleted file mode 100644 | |
index 4511b3ae0..000000000 | |
--- a/tools/osx/Info.plist-bin.in | |
+++ /dev/null | |
@@ -1,10 +0,0 @@ | |
-<?xml version="1.0" encoding="UTF-8"?> | |
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
-<plist version="1.0"> | |
- <dict> | |
- <key>CFBundleName</key> | |
- <string>ART-bin</string> | |
- <key>CFBundleIdentifier</key> | |
- <string>us.pixls.art.ART</string> | |
- </dict> | |
-</plist> | |
diff --git a/tools/osx/Info.plist.in b/tools/osx/Info.plist.in | |
index 28581060f..cff8b9671 100644 | |
--- a/tools/osx/Info.plist.in | |
+++ b/tools/osx/Info.plist.in | |
@@ -1,169 +1,200 @@ | |
<?xml version="1.0" encoding="UTF-8"?> | |
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
<plist version="1.0"> | |
-<dict> | |
- <key>CFBundleDevelopmentRegion</key> | |
- <string>English</string> | |
- <key>CFBundleDisplayName</key> | |
- <string>ART</string> | |
- <key>CFBundleDocumentTypes</key> | |
- <array> | |
- <dict> | |
- <key>CFBundleTypeExtensions</key> | |
- <array> | |
- <string>arp</string> | |
- <string>ARP</string> | |
- </array> | |
- <key>CFBundleTypeIconFile</key> | |
- <string>profile.icns</string> | |
- <key>CFBundleTypeName</key> | |
- <string>ART Profile Data</string> | |
- <key>CFBundleTypeRole</key> | |
- <string>Editor</string> | |
- <key>LSIsAppleDefaultForType</key> | |
- <true/> | |
- <key>LSItemContentTypes</key> | |
- <array> | |
- <string>us.pixls.art.arp</string> | |
- </array> | |
- </dict> | |
- <dict> | |
- <key>CFBundleTypeExtensions</key> | |
- <array> | |
- <string>3FR</string> | |
- <string>3fr</string> | |
- <string>ARW</string> | |
- <string>arw</string> | |
- <string>CR2</string> | |
- <string>cr2</string> | |
- <string>CR3</string> | |
- <string>cr3</string> | |
- <string>CRF</string> | |
- <string>crf</string> | |
- <string>CRW</string> | |
- <string>crw</string> | |
- <string>DCR</string> | |
- <string>dcr</string> | |
- <string>DNG</string> | |
- <string>dng</string> | |
- <string>FFF</string> | |
- <string>fff</string> | |
- <string>IIQ</string> | |
- <string>iiq</string> | |
- <string>KDC</string> | |
- <string>kdc</string> | |
- <string>MEF</string> | |
- <string>mef</string> | |
- <string>MOS</string> | |
- <string>mos</string> | |
- <string>MRW</string> | |
- <string>mrw</string> | |
- <string>NEF</string> | |
- <string>nef</string> | |
- <string>NRW</string> | |
- <string>nrw</string> | |
- <string>ORF</string> | |
- <string>orf</string> | |
- <string>PEF</string> | |
- <string>pef</string> | |
- <string>RAF</string> | |
- <string>raf</string> | |
- <string>RAW</string> | |
- <string>raw</string> | |
- <string>RW2</string> | |
- <string>rw2</string> | |
- <string>RWZ</string> | |
- <string>rwz</string> | |
- <string>SR2</string> | |
- <string>sr2</string> | |
- <string>SRF</string> | |
- <string>srf</string> | |
- <string>SRW</string> | |
- <string>srw</string> | |
- </array> | |
- <key>CFBundleTypeMIMETypes</key> | |
- <array> | |
- <string>image/raw</string> | |
- </array> | |
- <key>CFBundleTypeName</key> | |
- <string>Camera Raw</string> | |
- <key>CFBundleTypeRole</key> | |
- <string>Viewer</string> | |
- </dict> | |
- <dict> | |
- <key>CFBundleTypeExtensions</key> | |
- <array> | |
- <string>JPEG</string> | |
- <string>jpeg</string> | |
- <string>JPG</string> | |
- <string>jpg</string> | |
- <string>PNG</string> | |
- <string>png</string> | |
- <string>TIF</string> | |
- <string>tif</string> | |
- <string>TIFF</string> | |
- <string>tiff</string> | |
- </array> | |
- <key>CFBundleTypeName</key> | |
- <string>Image</string> | |
- <key>CFBundleTypeRole</key> | |
- <string>Viewer</string> | |
- </dict> | |
- </array> | |
- <key>CFBundleExecutable</key> | |
- <string>ART</string> | |
- <key>CFBundleGetInfoString</key> | |
- <string>@version@, ART (c) MMXIX-MMXX Alberto Griggio (c) 2004-2010 Gábor Horváth, 2010-2017 RawTherapee Development Team</string> | |
- <key>CFBundleIconFile</key> | |
- <string>art.icns</string> | |
- <key>CFBundleIdentifier</key> | |
- <string>us.pixls.art.ART</string> | |
- <key>CFBundleInfoDictionaryVersion</key> | |
- <string>6.0</string> | |
- <key>CFBundleName</key> | |
- <string>ART</string> | |
- <key>CFBundlePackageType</key> | |
- <string>APPL</string> | |
- <key>CFBundleShortVersionString</key> | |
- <string>@shortVersion@</string> | |
- <key>CFBundleSignature</key> | |
- <string>????</string> | |
- <key>CFBundleVersion</key> | |
- <string>@shortVersion@</string> | |
- <key>LSExecutableArchitectures</key> | |
- <array> | |
- <string>@arch@</string> | |
- </array> | |
- <key>NSHighResolutionCapable</key> | |
- <true/> | |
- <key>NSHumanReadableCopyright</key> | |
- <string>ART: (c) MMXIX-MMXX Alberto Griggio, RawTherapee: copyright (c) 2004-2010 Gábor Horváth, 2010-2020 RawTherapee Development Team</string> | |
- <key>UTExportedTypeDeclarations</key> | |
- <array> | |
- <dict> | |
- <key>UTTypeConformsTo</key> | |
- <array> | |
- <string>public.data</string> | |
- </array> | |
- <key>UTTypeDescription</key> | |
- <string>ART Profile Data</string> | |
- <key>UTTypeIconFile</key> | |
- <string>Icons.icns</string> | |
- <key>UTTypeIdentifier</key> | |
- <string>us.pixls.art.arp</string> | |
- <key>UTTypeReferenceURL</key> | |
- <string>https://bitbucket.org/agriggio/art/wiki/Home</string> | |
- <key>UTTypeTagSpecification</key> | |
- <dict> | |
- <key>com.apple.ostype</key> | |
- <string>ARP</string> | |
- <key>public.filename-extension</key> | |
- <array> | |
- <string>arp</string> | |
- <string>ARP</string> | |
- </array> | |
- </dict> | |
- </dict> | |
- </array> | |
-</dict> | |
+ <dict> | |
+ <key>LSEnvironment</key> | |
+ <dict> | |
+ <key>XDG_CONFIG_DIRS</key> | |
+ <string>/Applications/ART.app/Contents/Resources/share/gtk-3.0</string> | |
+ <key>XDG_CONFIG_HOME</key> | |
+ <string>/Applications/ART.app/Contents/Resources/share</string> | |
+ <key>XDG_DATA_DIRS</key> | |
+ <string>/Applications/ART.app/Contents/Resources/share/gtk-3.0</string> | |
+ <key>GTK_PATH</key> | |
+ <string>/Applications/ART.app/Contents/Resources/share/gtk-3.0</string> | |
+ <key>GTK_IM_MODULE_FILE</key> | |
+ <string>/Applications/ART.app/Contents/Resources/etc/gtk-3.0/gtk.immodules</string> | |
+ <key>XDG_DATA_HOME</key> | |
+ <string>/Applications/ART.app/Contents/Resources/share</string> | |
+ <key>GSETTINGS_SCHEMA_DIR</key> | |
+ <string>/Applications/ART.app/Contents/Resources/share/glib-2.0/schemas</string> | |
+ <key>GDK_PIXBUF_MODULE_FILE</key> | |
+ <string>/Applications/ART.app/Contents/Resources/etc/gtk-3.0/gdk-pixbuf.loaders</string> | |
+ <key>GDK_PIXBUF_MODULEDIR</key> | |
+ <string>/Applications/ART.app/Contents/Frameworks</string> | |
+ <key>LIBDIR</key> | |
+ <string>/Applications/ART.app/Contents/Frameworks</string> | |
+ <key>DATADIR</key> | |
+ <string>/Applications/ART.app/Contents/Resources</string> | |
+ <key>GDK_RENDERING</key> | |
+ <string>similar</string> | |
+ <key>GTK_OVERLAY_SCROLLING</key> | |
+ <string>0</string> | |
+ </dict> | |
+ <key>LSMultipleInstancesProhibited</key> | |
+ <true /> | |
+ <key>LSMinimumSystemVersion</key> | |
+ <string>@minimum_macos_version@</string> | |
+ <key>CFBundleAllowMixedLocalizations</key> | |
+ <true /> | |
+ <key>CFBundleDisplayName</key> | |
+ <string>ART</string> | |
+ <key>CFBundleDocumentTypes</key> | |
+ <array> | |
+ <dict> | |
+ <key>CFBundleTypeExtensions</key> | |
+ <array> | |
+ <string>arp</string> | |
+ <string>ARP</string> | |
+ </array> | |
+ <key>CFBundleTypeIconFile</key> | |
+ <string>profile.icns</string> | |
+ <key>CFBundleTypeName</key> | |
+ <string>ART Profile Data</string> | |
+ <key>CFBundleTypeRole</key> | |
+ <string>Editor</string> | |
+ <key>LSIsAppleDefaultForType</key> | |
+ <true /> | |
+ <key>LSItemContentTypes</key> | |
+ <array> | |
+ <string>us.pixls.art.ART.arp</string> | |
+ </array> | |
+ </dict> | |
+ <dict> | |
+ <key>CFBundleTypeExtensions</key> | |
+ <array> | |
+ <string>3FR</string> | |
+ <string>3fr</string> | |
+ <string>ARW</string> | |
+ <string>arw</string> | |
+ <string>CR2</string> | |
+ <string>cr2</string> | |
+ <string>CRF</string> | |
+ <string>crf</string> | |
+ <string>CRW</string> | |
+ <string>crw</string> | |
+ <string>DCR</string> | |
+ <string>dcr</string> | |
+ <string>DNG</string> | |
+ <string>dng</string> | |
+ <string>FFF</string> | |
+ <string>fff</string> | |
+ <string>IIQ</string> | |
+ <string>iiq</string> | |
+ <string>KDC</string> | |
+ <string>kdc</string> | |
+ <string>MEF</string> | |
+ <string>mef</string> | |
+ <string>MOS</string> | |
+ <string>mos</string> | |
+ <string>MRW</string> | |
+ <string>mrw</string> | |
+ <string>NEF</string> | |
+ <string>nef</string> | |
+ <string>NRW</string> | |
+ <string>nrw</string> | |
+ <string>ORF</string> | |
+ <string>orf</string> | |
+ <string>PEF</string> | |
+ <string>pef</string> | |
+ <string>RAF</string> | |
+ <string>raf</string> | |
+ <string>RAW</string> | |
+ <string>raw</string> | |
+ <string>RW2</string> | |
+ <string>rw2</string> | |
+ <string>RWZ</string> | |
+ <string>rwz</string> | |
+ <string>SR2</string> | |
+ <string>sr2</string> | |
+ <string>SRF</string> | |
+ <string>srf</string> | |
+ <string>SRW</string> | |
+ <string>srw</string> | |
+ </array> | |
+ <key>CFBundleTypeMIMETypes</key> | |
+ <array> | |
+ <string>image/raw</string> | |
+ </array> | |
+ <key>CFBundleTypeName</key> | |
+ <string>Camera Raw</string> | |
+ <key>CFBundleTypeRole</key> | |
+ <string>Viewer</string> | |
+ </dict> | |
+ <dict> | |
+ <key>CFBundleTypeExtensions</key> | |
+ <array> | |
+ <string>JPEG</string> | |
+ <string>jpeg</string> | |
+ <string>JPG</string> | |
+ <string>jpg</string> | |
+ <string>PNG</string> | |
+ <string>png</string> | |
+ <string>TIF</string> | |
+ <string>tif</string> | |
+ <string>TIFF</string> | |
+ <string>tiff</string> | |
+ </array> | |
+ <key>CFBundleTypeName</key> | |
+ <string>Image</string> | |
+ <key>CFBundleTypeRole</key> | |
+ <string>Viewer</string> | |
+ </dict> | |
+ </array> | |
+ <key>CFBundleExecutable</key> | |
+ <string>art</string> | |
+ <key>CFBundleGetInfoString</key> | |
+ <string>@version@, Copyright © 2004-2010 Gábor Horváth, 2010-2022 A/RT Development Teams</string> | |
+ <key>CFBundleIconFile</key> | |
+ <string>art.icns</string> | |
+ <key>CFBundleIdentifier</key> | |
+ <string>us.pixls.art.ART</string> | |
+ <key>CFBundleInfoDictionaryVersion</key> | |
+ <string>6.0</string> | |
+ <key>CFBundleName</key> | |
+ <string>ART</string> | |
+ <key>CFBundlePackageType</key> | |
+ <string>APPL</string> | |
+ <key>CFBundleShortVersionString</key> | |
+ <string>@shortVersion@</string> | |
+ <key>CFBundleSignature</key> | |
+ <string>????</string> | |
+ <key>CFBundleVersion</key> | |
+ <string>@shortVersion@</string> | |
+ <key>LSArchitecturePriority</key> | |
+ <array> | |
+ <string>arm64</string> | |
+ <string>x86_64</string> | |
+ </array> | |
+ <key>NSHighResolutionCapable</key> | |
+ <true /> | |
+ <key>NSHumanReadableCopyright</key> | |
+ <string>Copyright © 2004-2010 Gábor Horváth, 2010-2022 A/RT Development Teams</string> | |
+ <key>UTExportedTypeDeclarations</key> | |
+ <array> | |
+ <dict> | |
+ <key>UTTypeConformsTo</key> | |
+ <array> | |
+ <string>public.data</string> | |
+ </array> | |
+ <key>UTTypeDescription</key> | |
+ <string>ART Profile Data</string> | |
+ <key>UTTypeIconFile</key> | |
+ <string>profile.icns</string> | |
+ <key>UTTypeIdentifier</key> | |
+ <string>us.pixls.art.ART.arp</string> | |
+ <key>UTTypeReferenceURL</key> | |
+ <string>https://bitbucket.org/agriggio/art</string> | |
+ <key>UTTypeTagSpecification</key> | |
+ <dict> | |
+ <key>com.apple.ostype</key> | |
+ <string>ARP</string> | |
+ <key>public.filename-extension</key> | |
+ <array> | |
+ <string>arp</string> | |
+ <string>ARP</string> | |
+ </array> | |
+ </dict> | |
+ </dict> | |
+ </array> | |
+ </dict> | |
</plist> | |
diff --git a/tools/osx/art-bin.entitlements b/tools/osx/art-bin.entitlements | |
deleted file mode 100644 | |
index 9e5e269cb..000000000 | |
--- a/tools/osx/art-bin.entitlements | |
+++ /dev/null | |
@@ -1,8 +0,0 @@ | |
-<?xml version="1.0" encoding="UTF-8"?> | |
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
-<plist version="1.0"> | |
-<dict> | |
-<key>com.apple.security.inherit</key> | |
-<true/> | |
-</dict> | |
-</plist> | |
\ No newline at end of file | |
diff --git a/tools/osx/art.entitlements b/tools/osx/art.entitlements | |
index 90f5fd5d4..def02eeab 100644 | |
--- a/tools/osx/art.entitlements | |
+++ b/tools/osx/art.entitlements | |
@@ -2,19 +2,15 @@ | |
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
<plist version="1.0"> | |
<dict> | |
- <key>application-identifier</key> | |
+ <key>com.apple.application-identifier</key> | |
<string>us.pixls.art.ART</string> | |
- <key>com.apple.security.temporary-exception.files.absolute-path.read-write</key> | |
- <array> | |
- <string>"/"</string> | |
- </array> | |
- <key>com.apple.security.cs.allow-dyld-environment-variables</key> | |
- <true/> | |
- <key>com.apple.security.files.user-selected.read-write</key> | |
- <true/> | |
<key>com.apple.security.app-sandbox</key> | |
<true/> | |
- <key>com.apple.security.files.downloads.read-write</key> | |
+ <key>com.apple.security.cs.allow-dyld-environment-variables</key> | |
<true/> | |
+ <key>com.apple.security.temporary-exception.files.absolute-path.read-write</key> | |
+ <array> | |
+ <string>/</string> | |
+ </array> | |
</dict> | |
</plist> | |
diff --git a/tools/osx/executable_loader.in b/tools/osx/executable_loader.in | |
deleted file mode 100644 | |
index f90d992b3..000000000 | |
--- a/tools/osx/executable_loader.in | |
+++ /dev/null | |
@@ -1,33 +0,0 @@ | |
-#!/bin/sh | |
- | |
-# GIMP has this next line regarding raising the number-of-open-files limit: | |
-ulimit -n 7000 | |
- | |
-cd "$(dirname "$0")" || exit 1 | |
- | |
-cwd="$(pwd)" | |
-app="/Applications/ART.app" | |
-lib="${app}/Contents/Frameworks" | |
-resources="${app}/Contents/Resources" | |
-etc="${resources}/etc" | |
-export XDG_DATA_DIRS="${resources}/share" | |
-export DYLD_FALLBACK_LIBRARY_PATH="${lib}" | |
-export GTK_PATH="${lib}/gtk-3.0/3.0.0" | |
-export XDG_DATA_HOME="${resources}/share" | |
-export GSETTINGS_SCHEMA_DIR="${resources}/share/glib-2.0/schemas" | |
-export GDK_PIXBUF_MODULE_FILE="${etc}/gtk-3.0/gdk-pixbuf.loaders" | |
-export GDK_PIXBUF_MODULEDIR="${lib}" | |
- | |
-export ART_SETTINGS="${HOME}/Library/Application Support/ART/config" | |
-export ART_CACHE="${HOME}/Library/Application Support/ART/cache" | |
- | |
-# Strip out system argument | |
-case "$1" in | |
- -psn_*) shift ;; | |
-esac | |
- | |
-# Prevent crash when directory name contains special characters | |
-AppleLocale=`defaults read -g AppleLocale` | |
-export LANG=${AppleLocale%@*}.UTF-8 | |
- | |
-exec "${app}/Contents/MacOS/bin/ART-bin" "$@" | |
diff --git a/tools/osx/libiconv_1.14_rt.patch b/tools/osx/libiconv_1.14_rt.patch | |
deleted file mode 100644 | |
index 7a01b1373..000000000 | |
--- a/tools/osx/libiconv_1.14_rt.patch | |
+++ /dev/null | |
@@ -1,30 +0,0 @@ | |
-diff --git a/lib/iconv.c b/lib/iconv.c | |
-index 3785296..24a0f07 100644 | |
---- a/lib/iconv.c | |
-+++ b/lib/iconv.c | |
-@@ -607,4 +607,25 @@ strong_alias (libiconv, iconv) | |
- strong_alias (libiconv_close, iconv_close) | |
- #endif | |
- | |
-+#undef iconv_open | |
-+#undef iconv | |
-+#undef iconv_close | |
-+ | |
-+LIBICONV_DLL_EXPORTED iconv_t iconv_open (const char* tocode, const char* fromcode) | |
-+{ | |
-+ return libiconv_open(tocode, fromcode); | |
-+} | |
-+ | |
-+LIBICONV_DLL_EXPORTED size_t iconv (iconv_t icd, | |
-+ ICONV_CONST char * * inbuf, size_t *inbytesleft, | |
-+ char * * outbuf, size_t *outbytesleft) | |
-+{ | |
-+ return libiconv(icd, inbuf, inbytesleft, outbuf, outbytesleft); | |
-+} | |
-+ | |
-+LIBICONV_DLL_EXPORTED int iconv_close (iconv_t icd) | |
-+{ | |
-+ return libiconv_close(icd); | |
-+} | |
-+ | |
- #endif | |
diff --git a/tools/osx/libiconv_1.15_rt.patch b/tools/osx/libiconv_1.15_rt.patch | |
deleted file mode 100644 | |
index ca434154b..000000000 | |
--- a/tools/osx/libiconv_1.15_rt.patch | |
+++ /dev/null | |
@@ -1,30 +0,0 @@ | |
-diff --git a/lib/iconv.c b/lib/iconv.c | |
-index 31853a7..630a498 100644 | |
---- a/lib/iconv.c | |
-+++ b/lib/iconv.c | |
-@@ -611,4 +611,25 @@ strong_alias (libiconv, iconv) | |
- strong_alias (libiconv_close, iconv_close) | |
- #endif | |
- | |
-+#undef iconv_open | |
-+#undef iconv | |
-+#undef iconv_close | |
-+ | |
-+LIBICONV_DLL_EXPORTED iconv_t iconv_open (const char* tocode, const char* fromcode) | |
-+{ | |
-+ return libiconv_open(tocode, fromcode); | |
-+} | |
-+ | |
-+LIBICONV_DLL_EXPORTED size_t iconv (iconv_t icd, | |
-+ ICONV_CONST char * * inbuf, size_t *inbytesleft, | |
-+ char * * outbuf, size_t *outbytesleft) | |
-+{ | |
-+ return libiconv(icd, inbuf, inbytesleft, outbuf, outbytesleft); | |
-+} | |
-+ | |
-+LIBICONV_DLL_EXPORTED int iconv_close (iconv_t icd) | |
-+{ | |
-+ return libiconv_close(icd); | |
-+} | |
-+ | |
- #endif | |
diff --git a/tools/osx/macosx_bundle.sh b/tools/osx/macosx_bundle.sh | |
index f527e711d..3b78758e0 100644 | |
--- a/tools/osx/macosx_bundle.sh | |
+++ b/tools/osx/macosx_bundle.sh | |
@@ -24,7 +24,7 @@ function msgError { | |
} | |
function GetDependencies { | |
- otool -L "$1" | awk 'NR >= 2 && $1 !~ /^(\/usr\/lib|\/System|@executable_path|@rpath)\// { print $1 }' | |
+ otool -L "$1" | awk 'NR >= 2 && $1 !~ /^(\/usr\/lib|\/System|@executable_path|@rpath)\// { print $1 }' 2>&1 | |
} | |
function CheckLink { | |
@@ -35,42 +35,42 @@ function CheckLink { | |
} | |
function ModifyInstallNames { | |
- find -E "${CONTENTS}" -type f -regex '.*/(ART-cli|ART|.*\.(dylib|so))' | while read -r x; do | |
+ find -E "${CONTENTS}" -type f -regex '.*/(art-cli|art|.*\.(dylib|so))' | while read -r x; do | |
msg "Modifying install names: ${x}" | |
{ | |
# id | |
- if [ ${x:(-6)} == ".dylib" ]; then | |
- echo " install_name_tool -id '@rpath/$(basename "${x}")' '${x}'" | |
+ if [[ ${x:(-6)} == ".dylib" ]] || [[ f${x:(-3)} == ".so" ]]; then | |
+ install_name_tool -id /Applications/"${LIB}"/$(basename ${x}) ${x} 2>/dev/null | |
fi | |
GetDependencies "${x}" | while read -r y | |
- do | |
- echo " install_name_tool -change '${y}' '@rpath/$(basename "${y}")' '${x}'" | |
- done | |
+ do | |
+ install_name_tool -change ${y} /Applications/"${LIB}"/$(basename ${y}) ${x} 2>/dev/null | |
+ done | |
} | bash -v | |
done | |
} | |
# Source check | |
-if [[ ! -d "${CMAKE_BUILD_TYPE}" ]]; then | |
+if [[ ! -d $CMAKE_BUILD_TYPE ]]; then | |
msgError "${PWD}/${CMAKE_BUILD_TYPE} folder does not exist. Please execute 'make install' first." | |
exit 1 | |
fi | |
# Update project version | |
-if [[ -x "$(which git)" && -d "${PROJECT_SOURCE_DIR}/.git" ]]; then | |
+if [[ -x $(which git) && -d $PROJECT_SOURCE_DIR/.git ]]; then | |
### This section is copied from tools/generateReleaseInfo | |
# Get version description. | |
# Depending on whether you checked out a branch (dev) or a tag (release), | |
# "git describe" will return "5.0-gtk2-2-g12345678" or "5.0-gtk2", respectively. | |
gitDescribe="$(git describe --tags --always)" | |
- | |
+ | |
# Apple requires a numeric version of the form n.n.n | |
# https://goo.gl/eWDQv6 | |
- | |
+ | |
# Get number of commits since tagging. This is what gitDescribe uses. | |
# Works when checking out branch, tag or commit. | |
gitCommitsSinceTag="$(git rev-list --count HEAD --not $(git tag --merged HEAD))" | |
- | |
+ | |
# Create numeric version. | |
# This version is nonsense, either don't use it at all or use it only where you have no other choice, e.g. Inno Setup's VersionInfoVersion. | |
# Strip everything after hyphen, e.g. "5.0-gtk2" -> "5.0", "5.1-rc1" -> "5.1" (ergo BS). | |
@@ -81,18 +81,25 @@ if [[ -x "$(which git)" && -d "${PROJECT_SOURCE_DIR}/.git" ]]; then | |
gitVersionNumericBS="${gitVersionNumericBS}.${gitCommitsSinceTag}" # Remove everything until after first hyphen: 5.0 | |
fi | |
### Copy end. | |
- | |
+ | |
PROJECT_FULL_VERSION="$gitDescribe" | |
PROJECT_VERSION="$gitVersionNumericBS" | |
- | |
fi | |
-MINIMUM_SYSTEM_VERSION="$(otool -l "${CMAKE_BUILD_TYPE}"/MacOS/ART | grep -A2 'LC_VERSION_MIN_MACOSX' | awk '$1 ~ /version/ { printf $2 }')" | |
-if [[ -z "${MINIMUM_SYSTEM_VERSION}" ]]; then | |
- MINIMUM_SYSTEM_VERSION="$(sw_vers -productVersion | cut -d. -f-2)" | |
+#In: CMAKE_OSX_DEPLOYMENT_TARGET=11.3 | |
+#Out: 11.3 | |
+CMAKE_OSX_DEPLOYMENT_TARGET="$(cmake .. -L -N | grep CMAKE_OSX_DEPLOYMENT_TARGET)"; CMAKE_OSX_DEPLOYMENT_TARGET="${CMAKE_OSX_DEPLOYMENT_TARGET#*=}" | |
+ | |
+#In: CMAKE_OSX_ARCHITECTURES=x86_64 | |
+#Out: x86_64 | |
+CMAKE_OSX_ARCHITECTURES="$(cmake .. -L -N | grep CMAKE_OSX_ARCHITECTURES)"; CMAKE_OSX_ARCHITECTURES="${CMAKE_OSX_ARCHITECTURES#*=}" | |
+ | |
+MINIMUM_SYSTEM_VERSION="$(otool -l "${CMAKE_BUILD_TYPE}"/MacOS/art | grep -A2 'LC_VERSION_MIN_MACOSX' | awk '$1 ~ /version/ { printf $2 }')" | |
+if [[ -z $MINIMUM_SYSTEM_VERSION ]]; then | |
+ MINIMUM_SYSTEM_VERSION=${CMAKE_OSX_DEPLOYMENT_TARGET} | |
fi | |
-arch=x86_64 | |
+arch=${CMAKE_OSX_ARCHITECTURES} | |
cat <<__EOS__ | |
PROJECT_NAME: ${PROJECT_NAME} | |
@@ -105,211 +112,272 @@ GTK_PREFIX: ${GTK_PREFIX} | |
PWD: ${PWD} | |
__EOS__ | |
-LOCAL_PREFIX="$(cmake .. -LA -N | grep "LOCAL_PREFIX" | cut -d "=" -f2)" | |
-EXPATLIB="$(cmake .. -LA -N | grep "pkgcfg_lib_EXPAT_expat" | cut -d "=" -f2)" | |
- | |
+minimum_macos_version=${MINIMUM_SYSTEM_VERSION} | |
+ | |
+# Retrieve cached values from cmake | |
+ | |
+#In: LOCAL_PREFIX:STRING=/opt | |
+#Out: /opt | |
+LOCAL_PREFIX="$(cmake .. -L -N | grep LOCAL_PREFIX)"; LOCAL_PREFIX="${LOCAL_PREFIX#*=}" | |
+ | |
+#In: OSX_UNIVERSAL_URL=https:// etc. | |
+#Out: https:// etc. | |
+UNIVERSAL_URL="$(cmake .. -L -N | grep OSX_UNIVERSAL_URL)"; UNIVERSAL_URL="${UNIVERSAL_URL#*=}" | |
+if [[ -n $UNIVERSAL_URL ]]; then | |
+ echo "Univeral app is ON. The URL is ${UNIVERSAL_URL}" | |
+fi | |
+ | |
+#In: pkgcfg_lib_EXPAT_expat:FILEPATH=/opt/local/lib/libexpat.dylib | |
+#Out: /opt/local/lib/libexpat.dylib | |
+EXPATLIB="$(cmake .. -LA -N | grep pkgcfg_lib_EXPAT_expat)"; pkgcfg_lib_EXPAT_expat="${pkgcfg_lib_EXPAT_expat#*=}" | |
+ | |
+#In: CODESIGNID:STRING=Developer ID Application: Doctor Who (1234567890) | |
+#Out: Developer ID Application: Doctor Who (1234567890) | |
+CODESIGNID="$(cmake .. -L -N | grep CODESIGNID)"; CODESIGNID="${CODESIGNID#*=}" | |
+ | |
+#In: NOTARY:STRING=--username drwho@bbc.com --password abcd-efgh-hijk-lmno | |
+#Out: --username drwho@bbc.com --password abcd-efgh-hijk-lmno | |
+NOTARY="$(cmake .. -L -N | grep NOTARY)"; NOTARY="${NOTARY#*=}" | |
+ | |
+# In: FANCY_DMG:BOOL=ON | |
+# Out: ON | |
+FANCY_DMG="$(cmake .. -L -N | grep FANCY_DMG)"; FANCY_DMG="${FANCY_DMG#*=}" | |
+if [[ -n $FANCY_DMG ]]; then | |
+ echo "Fancy .dmg build is ON." | |
+fi | |
+ | |
+# In: OSX_NIGHTLY:BOOL=ON | |
+# Out: ON | |
+OSX_NIGHTLY="$(cmake .. -L -N | grep OSX_NIGHTLY)"; NIGHTLY="${OSX_NIGHTLY#*=}" | |
+if [[ -n $NIGHTLY ]]; then | |
+ echo "Nightly/generically-named zip is ON." | |
+fi | |
+ | |
APP="${PROJECT_NAME}.app" | |
CONTENTS="${APP}/Contents" | |
RESOURCES="${CONTENTS}/Resources" | |
MACOS="${CONTENTS}/MacOS" | |
LIB="${CONTENTS}/Frameworks" | |
ETC="${RESOURCES}/etc" | |
-EXECUTABLE="${MACOS}/ART" | |
-GDK_PREFIX="${LOCAL_PREFIX}/local/" | |
+EXECUTABLE="${MACOS}/art" | |
+GDK_PREFIX="${LOCAL_PREFIX}/" | |
msg "Removing old files:" | |
-rm -rf "${APP}" "${PROJECT_NAME}_*.dmg" "*zip" | |
+rm -rf "${APP}" *.dmg *.zip *.app | |
msg "Creating bundle container:" | |
-install -d "${RESOURCES}" \ | |
- "${MACOS}" \ | |
- "${LIB}" \ | |
- "${ETC}" | |
- | |
-echo "\n--------\n" >> Resources/AboutThisBuild.txt | |
-echo "Bundle system: $(sysctl -n machdep.cpu.brand_string)" >> Resources/AboutThisBuild.txt | |
-echo "Bundle OS: $(sw_vers -productName) $(sw_vers -productVersion) $(sw_vers -buildVersion) $(uname -mrs)" >> Resources/AboutThisBuild.txt | |
-echo "Bundle date: $(date -Ru) ZULU" >> Resources/AboutThisBuild.txt | |
-echo "Bundle epoch: $(date +%s)" >> Resources/AboutThisBuild.txt | |
-echo "Bundle UUID: $(uuidgen)" >> Resources/AboutThisBuild.txt | |
- | |
-msg "Copying release files:" | |
+install -d "${RESOURCES}" | |
+install -d "${MACOS}" | |
+install -d "${LIB}" | |
+install -d "${ETC}" | |
+ | |
+msg "Copying binary executable files." | |
ditto "${CMAKE_BUILD_TYPE}/MacOS" "${MACOS}" | |
-ditto "Resources" "${RESOURCES}" | |
-# Copy libexiv2 into the app bundle | |
-ditto ${LOCAL_PREFIX}/local/lib/libexiv2.27.dylib "${CONTENTS}/Frameworks/libexiv2.27.dylib" | |
+msg "Copying Resources directory." | |
+#cp AboutThisBuild.txt "${RESOURCES}" | |
+ditto "${CMAKE_BUILD_TYPE}/Resources" "${RESOURCES}" | |
+ | |
+echo "\n--------\n" >> "${RESOURCES}/AboutThisBuild.txt" | |
+echo "Bundle system: $(sysctl -n machdep.cpu.brand_string)" >> "${RESOURCES}/AboutThisBuild.txt" | |
+echo "Bundle OS: $(sw_vers -productName) $(sw_vers -productVersion) $(sw_vers -buildVersion) $(uname -mrs)" >> "${RESOURCES}/AboutThisBuild.txt" | |
+echo "Bundle date: $(date -Ru) UTC" >> "${RESOURCES}/AboutThisBuild.txt" | |
+echo "Bundle epoch: $(date +%s)" >> "${RESOURCES}/AboutThisBuild.txt" | |
+echo "Bundle UUID: $(uuidgen|tr 'A-Z' 'a-z')" >> "${RESOURCES}/AboutThisBuild.txt" | |
# Copy the Lensfun database into the app bundle | |
mkdir -p "${RESOURCES}/share/lensfun" | |
-ditto ${LOCAL_PREFIX}/local/share/lensfun/version_2/* "${RESOURCES}/share/lensfun" | |
+lensfunversion=$(pkg-config --modversion lensfun | cut -f3 -d'.') | |
+if [ $lensfunversion = 95 ] | |
+then | |
+ ditto ${LOCAL_PREFIX}/share/lensfun/version_2/* "${RESOURCES}/share/lensfun" | |
+else | |
+ ditto ${LOCAL_PREFIX}/share/lensfun/version_1/* "${RESOURCES}/share/lensfun" | |
+fi | |
# Copy liblensfun to Frameworks | |
-ditto ${LOCAL_PREFIX}/local/lib/liblensfun.2.dylib "${CONTENTS}/Frameworks/liblensfun.2.dylib" | |
+ditto ${LOCAL_PREFIX}/lib/liblensfun.2.dylib "${CONTENTS}/Frameworks/liblensfun.2.dylib" | |
# Copy libomp to Frameworks | |
-ditto ${LOCAL_PREFIX}/local/lib/libomp.dylib "${CONTENTS}/Frameworks" | |
+ditto ${LOCAL_PREFIX}/lib/libomp.dylib "${CONTENTS}/Frameworks" | |
-msg "Copying dependencies from ${GTK_PREFIX}:" | |
-CheckLink "${EXECUTABLE}" | |
+msg "Copying dependencies from ${GTK_PREFIX}." | |
+CheckLink "${EXECUTABLE}" 2>&1 | |
# dylib install names | |
-ModifyInstallNames | |
+ModifyInstallNames 2>&1 | |
# Copy libjpeg-turbo ("62") into the app bundle | |
-ditto ${LOCAL_PREFIX}/local/lib/libjpeg.62.dylib "${CONTENTS}/Frameworks/libjpeg.62.dylib" | |
+ditto ${LOCAL_PREFIX}/lib/libjpeg.62.dylib "${CONTENTS}/Frameworks/libjpeg.62.dylib" | |
# Copy libexpat into the app bundle (which is keg-only) | |
if [[ -d /usr/local/Cellar/expat ]]; then ditto /usr/local/Cellar/expat/*/lib/libexpat.1.dylib "${CONTENTS}/Frameworks"; else ditto "${EXPATLIB}" "${CONTENTS}/Frameworks/libexpat.1.dylib"; fi | |
# Copy libz into the app bundle | |
-ditto ${LOCAL_PREFIX}/local/lib/libz.1.dylib "${CONTENTS}/Frameworks" | |
+ditto ${LOCAL_PREFIX}/lib/libz.1.dylib "${CONTENTS}/Frameworks" | |
-# Copy libpng16 to the app bundle | |
-ditto ${LOCAL_PREFIX}/local/lib/libpng16.16.dylib "${CONTENTS}/Frameworks/libpng16.16.dylib" | |
+# Copy libpng12 & 16 to the app bundle | |
+ditto ${LOCAL_PREFIX}/lib/libpng16.16.dylib "${CONTENTS}/Frameworks/libpng16.16.dylib" | |
+ditto ${LOCAL_PREFIX}/lib/libpng12.0.dylib "${CONTENTS}/Frameworks/libpng12.0.dylib" | |
# Copy libtiff 5 into the app bundle | |
-ditto ${LOCAL_PREFIX}/local/lib/libtiff.5.dylib "${CONTENTS}/Frameworks/libtiff.5.dylib" | |
- | |
-# Copy the Lensfun database into the app bundle | |
-mkdir -p "${RESOURCES}/share/lensfun" | |
-ditto ${LOCAL_PREFIX}/local/share/lensfun/version_2/* "${RESOURCES}/share/lensfun" | |
- | |
-# Copy liblensfun to Frameworks | |
-ditto ${LOCAL_PREFIX}/local/lib/liblensfun.2.dylib "${CONTENTS}/Frameworks/liblensfun.2.dylib" | |
+ditto ${LOCAL_PREFIX}/lib/libtiff.5.dylib "${CONTENTS}/Frameworks/libtiff.5.dylib" | |
# Copy libomp to Frameworks | |
-ditto ${LOCAL_PREFIX}/local/lib/libomp.dylib "${CONTENTS}/Frameworks" | |
+ditto ${LOCAL_PREFIX}/lib/libomp.dylib "${CONTENTS}/Frameworks" | |
# Prepare GTK+3 installation | |
msg "Copying configuration files from ${GTK_PREFIX}:" | |
-install -d "${ETC}/gtk-3.0" | |
+cp -RL {"${GDK_PREFIX}/lib","${LIB}"}/gdk-pixbuf-2.0 | |
msg "Copying library modules from ${GTK_PREFIX}:" | |
-ditto --arch "${arch}" {"${GTK_PREFIX}/lib","${LIB}"}/gdk-pixbuf-2.0 | |
+cp -RL {"${GDK_PREFIX}/lib","${LIB}"}/gdk-pixbuf-2.0 | |
ditto --arch "${arch}" {"${GTK_PREFIX}/lib","${LIB}"}/gtk-3.0 | |
msg "Removing static libraries and cache files:" | |
find -E "${LIB}" -type f -regex '.*\.(a|la|cache)$' | while read -r; do rm "${REPLY}"; done | |
# Make Frameworks folder flat | |
msg "Flattening the Frameworks folder" | |
-ditto "${LIB}"/gdk-pixbuf-2.0/2*/loaders/*.so "${LIB}" | |
-ditto "${LIB}"/gtk-3.0/3*/immodules/*.{dylib,so} "${LIB}" | |
+cp -RL "${LIB}"/gdk-pixbuf-2.0/2*/loaders/* "${LIB}" | |
+cp "${LIB}"/gtk-3.0/3*/immodules/*.{dylib,so} "${LIB}" | |
rm -r "${LIB}"/gtk-3.0 | |
rm -r "${LIB}"/gdk-pixbuf-2.0 | |
-msg "Build glib database:" | |
-mkdir -p ${RESOURCES}/share/glib-2.0 | |
-ditto {"${LOCAL_PREFIX}/local","${RESOURCES}"}/share/glib-2.0/schemas | |
-"${LOCAL_PREFIX}/local/bin/glib-compile-schemas" "${RESOURCES}/share/glib-2.0/schemas" | |
- | |
# GTK+3 themes | |
msg "Copy GTK+3 theme and icon resources:" | |
-ditto {"${LOCAL_PREFIX}/local","${RESOURCES}"}/share/themes/Mac/gtk-3.0/gtk-keys.css | |
-ditto {"${LOCAL_PREFIX}/local","${RESOURCES}"}/share/themes/Default/gtk-3.0/gtk-keys.css | |
+ditto {"${LOCAL_PREFIX}","${RESOURCES}"}/share/themes/Mac/gtk-3.0/gtk-keys.css | |
+ditto {"${LOCAL_PREFIX}","${RESOURCES}"}/share/themes/Default/gtk-3.0/gtk-keys.css | |
# Adwaita icons | |
msg "Copy Adwaita icons" | |
-iconfolders=("16x16/actions" "16x16/devices" "16x16/mimetypes" "16x16/places" "16x16/status" "48x48/devices") | |
+iconfolders=("16x16/actions" "16x16/devices" "16x16/mimetypes" "16x16/places" "16x16/status" "16x16/ui" "48x48/devices") | |
for f in "${iconfolders[@]}"; do | |
mkdir -p ${RESOURCES}/share/icons/Adwaita/${f} | |
- ditto ${LOCAL_PREFIX}/local/share/icons/Adwaita/${f}/* "${RESOURCES}"/share/icons/Adwaita/${f} | |
+ cp -RL ${LOCAL_PREFIX}/share/icons/Adwaita/${f}/* "${RESOURCES}"/share/icons/Adwaita/${f} | |
+done | |
+cp -RL {"${LOCAL_PREFIX}","${RESOURCES}"}/share/icons/Adwaita/index.theme | |
+"${LOCAL_PREFIX}/bin/gtk-update-icon-cache" "${RESOURCES}/share/icons/Adwaita" || "${LOCAL_PREFIX}/bin/gtk-update-icon-cache-3.0" "${RESOURCES}/share/icons/Adwaita" | |
+cp -RL "${LOCAL_PREFIX}/share/icons/hicolor" "${RESOURCES}/share/icons/hicolor" | |
+ | |
+# fix libfreetype install name | |
+for lib in "${LIB}"/*; do | |
+ install_name_tool -change libfreetype.6.dylib "${LIB}"/libfreetype.6.dylib "${lib}" 2>/dev/null | |
done | |
-ditto {"${LOCAL_PREFIX}/local","${RESOURCES}"}/share/icons/Adwaita/index.theme | |
-"${LOCAL_PREFIX}/local/bin/gtk-update-icon-cache" "${RESOURCES}/share/icons/Adwaita" | |
-ditto "${LOCAL_PREFIX}/local/share/icons/hicolor" "${RESOURCES}/share/icons/hicolor" | |
-# pixbuf loaders & immodules | |
+# Build GTK3 pixbuf loaders & immodules database | |
msg "Build GTK3 databases:" | |
-"${LOCAL_PREFIX}"/local/bin/gdk-pixbuf-query-loaders "${LIB}"/libpix*.so > "${ETC}"/gtk-3.0/gdk-pixbuf.loaders | |
-"${LOCAL_PREFIX}"/local/bin/gtk-query-immodules-3.0 "${LIB}"/im-* > "${ETC}"/gtk-3.0/gtk.immodules | |
-sed -i "" -e "s|${PWD}/ART.app/Contents/|/Applications/ART.app/Contents/|" "${ETC}/gtk-3.0/gdk-pixbuf.loaders" "${ETC}/gtk-3.0/gtk.immodules" | |
-sed -i "" -e "s|/opt/local/|/usr/|" "${ETC}/gtk-3.0/gtk.immodules" | |
+echo "Creating GTK settings.ini." | |
+mkdir -p "${RESOURCES}"/share/gtk-3.0 | |
+mkdir -p "${ETC}"/gtk-3.0 | |
+echo $'[Settings]\ngtk-primary-button-warps-slider = true\ngtk-overlay-scrolling = true' > "${RESOURCES}/share/gtk-3.0/settings.ini" | |
+"${LOCAL_PREFIX}"/bin/gdk-pixbuf-query-loaders "${LIB}"/libpixbufloader-*.so > "${ETC}"/gtk-3.0/gdk-pixbuf.loaders | |
+"${LOCAL_PREFIX}"/bin/gtk-query-immodules-3.0 "${LIB}"/im-* > "${ETC}"/gtk-3.0/gtk.immodules || "${LOCAL_PREFIX}"/bin/gtk-query-immodules "${LIB}"/im-* > "${ETC}"/gtk-3.0/gtk.immodules | |
+sed -i.bak -e "s|${PWD}/ART.app/Contents/|/Applications/ART.app/Contents/|" "${ETC}"/gtk-3.0/gdk-pixbuf.loaders "${ETC}/gtk-3.0/gtk.immodules" | |
+sed -i.bak -e "s|${LOCAL_PREFIX}/share/|/Applications/ART.app/Contents/Resources/share/|" "${ETC}"/gtk-3.0/gtk.immodules | |
+sed -i.bak -e "s|${LOCAL_PREFIX}/|/Applications/ART.app/Contents/Frameworks/|" "${ETC}"/gtk-3.0/gtk.immodules | |
+rm "${ETC}"/*/*.bak | |
# Install names | |
-ModifyInstallNames | |
- | |
-# fix @rpath in Frameworks | |
-msg "Registering @rpath in Frameworks folder:" | |
-for frameworklibs in ${CONTENTS}/Frameworks/* ; do | |
- echo " install_name_tool -delete_rpath /opt/local/lib '${frameworklibs}'" | bash -v | |
- echo " install_name_tool -add_rpath /Applications/ART.app/Contents/Frameworks '${frameworklibs}'" | bash -v | |
-done | |
+ModifyInstallNames 2>/dev/null | |
# Mime directory | |
msg "Copying shared files from ${GTK_PREFIX}:" | |
-ditto {"${LOCAL_PREFIX}/local","${RESOURCES}"}/share/mime | |
+ditto {"${LOCAL_PREFIX}","${RESOURCES}"}/share/mime | |
msg "Installing required application bundle files:" | |
PROJECT_SOURCE_DATA_DIR="${PROJECT_SOURCE_DIR}/tools/osx" | |
-ditto "${PROJECT_SOURCE_DIR}/build/Resources" "${RESOURCES}" | |
-# Executable loader | |
-# Note: executable is renamed to 'ART-bin'. | |
-mkdir "${MACOS}/bin" | |
-ditto "${MACOS}/ART" "${MACOS}/bin/ART-bin" | |
-rm "${MACOS}/ART" | |
-install -m 0755 "${PROJECT_SOURCE_DATA_DIR}/executable_loader.in" "${MACOS}/ART" | |
+ditto "${PROJECT_SOURCE_DIR}/rtdata/fonts" "${ETC}/fonts" | |
+ | |
# App bundle resources | |
-ditto "${PROJECT_SOURCE_DATA_DIR}/"{art,profile}.icns "${RESOURCES}" | |
+ditto "${PROJECT_SOURCE_DATA_DIR}/"{ART,profile}.icns "${RESOURCES}" | |
ditto "${PROJECT_SOURCE_DATA_DIR}/PkgInfo" "${CONTENTS}" | |
-install -m 0644 "${PROJECT_SOURCE_DATA_DIR}/Info.plist.in" "${CONTENTS}/Info.plist" | |
-install -m 0644 "${PROJECT_SOURCE_DATA_DIR}/Info.plist-bin.in" "${CONTENTS}/MacOS/bin/Info.plist" | |
-sed -i "" -e "s|@version@|${PROJECT_FULL_VERSION}| | |
-s|@shortVersion@|${PROJECT_VERSION}| | |
-s|@arch@|${arch}|" \ | |
- "${CONTENTS}/Info.plist" | |
-plutil -convert xml1 "${CONTENTS}/Info.plist" | |
-plutil -convert xml1 "${CONTENTS}/MacOS/bin/Info.plist" | |
-update-mime-database -V "${CONTENTS}/Resources/share/mime" | |
+cmake -DPROJECT_SOURCE_DATA_DIR=${PROJECT_SOURCE_DATA_DIR} -DCONTENTS=${CONTENTS} -Dversion=${PROJECT_FULL_VERSION} -DshortVersion=${PROJECT_VERSION} -Darch=${arch} -P "${PROJECT_SOURCE_DATA_DIR}/info-plist.cmake" | |
+update-mime-database -V "${RESOURCES}/share/mime" | |
+cp -RL "${LOCAL_PREFIX}/share/locale" "${RESOURCES}/share/locale" | |
+ | |
+msg "Build glib database:" | |
+mkdir -p ${RESOURCES}/share/glib-2.0 | |
+cp -LR {"${LOCAL_PREFIX}","${RESOURCES}"}/share/glib-2.0/schemas | |
+"${LOCAL_PREFIX}/bin/glib-compile-schemas" "${RESOURCES}/share/glib-2.0/schemas" | |
# Append an LC_RPATH | |
-msg "Registering @rpath into the executable:" | |
-echo " install_name_tool -add_rpath /Applications/ART.app/Contents/Frameworks '${MACOS}/bin/ART-bin'" | bash -v | |
-echo " install_name_tool -add_rpath /Applications/ART.app/Contents/Frameworks '${EXECUTABLE}-cli'" | bash -v | |
+msg "Registering @rpath into the main executable." | |
+install_name_tool -add_rpath /Applications/"${LIB}" "${EXECUTABLE}" 2>/dev/null | |
-# Install names | |
-ModifyInstallNames | |
+ModifyInstallNames 2>/dev/null | |
# fix @rpath in Frameworks | |
-msg "Registering @rpath in Frameworks folder:" | |
-for frameworklibs in ${CONTENTS}/Frameworks/* ; do | |
- echo " install_name_tool -delete_rpath /opt/local/lib '${frameworklibs}'" | bash -v | |
- echo " install_name_tool -add_rpath /Applications/ART.app/Contents/Frameworks '${frameworklibs}'" | bash -v | |
+msg "Registering @rpath in Frameworks folder." | |
+for frameworklibs in "${LIB}"/*{dylib,so,cli}; do | |
+ install_name_tool -delete_rpath ${LOCAL_PREFIX}/lib "${frameworklibs}" 2>/dev/null | |
+ install_name_tool -add_rpath /Applications/"${LIB}" "${frameworklibs}" 2>/dev/null | |
done | |
+install_name_tool -delete_rpath ART.app/Contents/Frameworks "${EXECUTABLE}"-cli 2>/dev/null | |
+install_name_tool -add_rpath /Applications/"${LIB}" "${EXECUTABLE}"-cli 2>/dev/null | |
+ditto "${EXECUTABLE}"-cli "${APP}"/.. | |
+ | |
+# Merge the app with the other archictecture to create the Universal app. | |
+if [[ -n $UNIVERSAL_URL ]]; then | |
+ msg "Getting Universal countercomponent." | |
+ curl -L ${UNIVERSAL_URL} -o univ.zip | |
+ msg "Extracting app." | |
+ unzip univ.zip -d univapp | |
+ hdiutil attach -mountpoint ./ARTuniv univapp/*/*dmg | |
+ if [[ $arch = "arm64" ]]; then | |
+ cp -R ART.app ART-arm64.app | |
+ cp -R ARTuniv/ART.app ART-x86_64.app | |
+ cat ART-x86_64.app/Contents/Resources/AboutThisBuild.txt >> ART.app/Contents/Resources/AboutThisBuild.txt | |
+ else | |
+ cp -R ART.app ART-x86_64.app | |
+ cp -R ARTuniv/ART.app ART-arm64.app | |
+ cat ART-arm64.app/Contents/Resources/AboutThisBuild.txt >> ART.app/Contents/Resources/AboutThisBuild.txt | |
+ fi | |
+ hdiutil unmount ./ARTuniv | |
+ rm -r univapp | |
+ # Create the fat main ART binary and move it into the new bundle | |
+ lipo -create -output ART ART-arm64.app/Contents/MacOS/art ART-x86_64.app/Contents/MacOS/art | |
+ mv art ART.app/Contents/MacOS | |
+ # Create all the fat dependencies and move them into the bundle | |
+ for lib in ART-arm64.app/Contents/Frameworks/* ; do | |
+ lipo -create -output $(basename $lib) ART-arm64.app/Contents/Frameworks/$(basename $lib) ART-x86_64.app/Contents/Frameworks/$(basename $lib) | |
+ done | |
+ sudo mv *cli *so *dylib ART.app/Contents/Frameworks | |
+ rm -r ART-arm64.app | |
+ rm -r ART-x86_64.app | |
+fi | |
+ | |
+# Codesign the app | |
+if [[ -n $CODESIGNID ]]; then | |
+ msg "Codesigning Application." | |
+ iconv -f UTF-8 -t ASCII "${PROJECT_SOURCE_DATA_DIR}"/art.entitlements > "${CMAKE_BUILD_TYPE}"/art.entitlements | |
+ | |
+ mv "${EXECUTABLE}"-cli "${LIB}" | |
-# Sign the app | |
-msg "Codesigning:" | |
-CODESIGNID="$(cmake .. -LA -N | grep "CODESIGNID" | cut -d "=" -f2)" | |
-if ! test -z "$CODESIGNID" ; then | |
-install -m 0644 "${PROJECT_SOURCE_DATA_DIR}/art.entitlements" "${CONTENTS}/Entitlements.plist" | |
-plutil -convert xml1 "${CONTENTS}/Entitlements.plist" | |
-install -m 0644 "${PROJECT_SOURCE_DATA_DIR}/art-bin.entitlements" "${CONTENTS}/MacOS/bin/Entitlements.plist" | |
-plutil -convert xml1 "${CONTENTS}/MacOS/bin/Entitlements.plist" | |
-codesign -v -s "${CODESIGNID}" -i "us.pixls.art.ART-bin" -o runtime --timestamp --entitlements "${APP}/Contents/MacOS/bin/Entitlements.plist" "${APP}/Contents/MacOS/bin/ART-bin" | |
for frameworklibs in ${CONTENTS}/Frameworks/* ; do | |
- codesign -v -s "${CODESIGNID}" -i "us.pixls.art.ART-bin" -o runtime --timestamp "${frameworklibs}" | |
+ codesign --verify --verbose -s "${CODESIGNID}" --entitlements "${CMAKE_BUILD_TYPE}"/art.entitlements -f -i "us.pixls.art.ART" -o runtime --timestamp "${frameworklibs}" | |
done | |
-codesign --deep --preserve-metadata=identifier,entitlements,runtime --timestamp --strict -v -s "${CODESIGNID}" -i "us.pixls.art.ART" -o runtime --entitlements "${CONTENTS}/Entitlements.plist" "${APP}" | |
+codesign --deep --preserve-metadata=identifier,entitlements,runtime --timestamp --strict -v -f -s "${CODESIGNID}" -i "us.pixls.art.ART" -o runtime --entitlements "${CMAKE_BUILD_TYPE}"/art.entitlements "${APP}" | |
spctl -a -vvvv "${APP}" | |
+ spctl -a -vvvv "${APP}" | |
fi | |
# Notarize the app | |
-NOTARY="$(cmake .. -LA -N | grep "NOTARY" | cut -d "=" -f2)" | |
-if ! test -z "$NOTARY" ; then | |
+if [[ -n $NOTARY ]]; then | |
msg "Notarizing the application:" | |
ditto -c -k --sequesterRsrc --keepParent "${APP}" "${APP}.zip" | |
+ echo "Uploading..." | |
uuid=`xcrun altool --notarize-app --primary-bundle-id "us.pixls.art.ART" ${NOTARY} --file "${APP}.zip" 2>&1 | grep 'RequestUUID' | awk '{ print $3 }'` | |
echo "Result= $uuid" # Display identifier string | |
sleep 15 | |
while : | |
- do | |
+ do | |
fullstatus=`xcrun altool --notarization-info "$uuid" ${NOTARY} 2>&1` # get the status | |
status1=`echo "$fullstatus" | grep 'Status\:' | awk '{ print $2 }'` | |
- if [ "$status1" = "success" ]; then | |
+ if [[ $status1 = "success" ]]; then | |
xcrun stapler staple *app # staple the ticket | |
xcrun stapler validate -v *app | |
echo "Notarization success" | |
break | |
- elif [ "$status1" = "in" ]; then | |
+ elif [[ $status1 = "in" ]]; then | |
echo "Notarization still in progress, sleeping for 15 seconds and trying again" | |
sleep 15 | |
else | |
@@ -321,73 +389,95 @@ if ! test -z "$NOTARY" ; then | |
fi | |
function CreateDmg { | |
- local srcDir="$(mktemp -dt $$)" | |
- | |
+ local srcDir="$(mktemp -dt $$.XXXXXXXXXXXX)" | |
+ | |
msg "Preparing disk image sources at ${srcDir}:" | |
cp -R "${APP}" "${srcDir}" | |
- ditto Resources/AboutThisBuild.txt "${srcDir}" | |
+ cp "${RESOURCES}"/LICENSE.txt "${srcDir}" | |
ln -s /Applications "${srcDir}" | |
- | |
+ | |
# Web bookmarks | |
function CreateWebloc { | |
defaults write "${srcDir}/$1" URL "$2" | |
mv "${srcDir}/$1".{plist,webloc} | |
} | |
- CreateWebloc 'Website' 'https://bitbucket.org/agriggio/art/wiki/Home' | |
- CreateWebloc 'Manual' 'http://rawpedia.rawtherapee.com/' | |
- CreateWebloc 'Discuss' 'https://discuss.pixls.us/tags/c/software/9/art' | |
- | |
+ CreateWebloc 'Website' 'https://bitbucket.org/agriggio/art' | |
+ CreateWebloc 'Documentation' 'https://bitbucket.org/agriggio/art/wiki/Home' | |
+ CreateWebloc 'Forum' 'https://discuss.pixls.us/c/software/art/36' | |
+ CreateWebloc 'Report Bug' 'https://bitbucket.org/agriggio/art/issues/' | |
+ | |
# Disk image name | |
- dmg_name="${PROJECT_NAME// /_}_OSX_${MINIMUM_SYSTEM_VERSION}_${PROC_BIT_DEPTH}_${PROJECT_FULL_VERSION}" | |
+ if [[ -n $UNIVERSAL_URL ]]; then | |
+ arch="Universal" | |
+ fi | |
+ dmg_name="${PROJECT_NAME}_macOS_${MINIMUM_SYSTEM_VERSION}_${arch}_${PROJECT_FULL_VERSION}" | |
lower_build_type="$(tr '[:upper:]' '[:lower:]' <<< "$CMAKE_BUILD_TYPE")" | |
- if [[ ${lower_build_type} != release ]]; then | |
+ if [[ $lower_build_type != release ]]; then | |
dmg_name="${dmg_name}_${lower_build_type}" | |
fi | |
- | |
+ | |
msg "Creating disk image:" | |
- hdiutil create -format UDBZ -fs HFS+ -srcdir "${srcDir}" -volname "${PROJECT_NAME}_${PROJECT_FULL_VERSION}" "${dmg_name}.dmg" | |
- | |
+ if [[ ! -z $FANCY_DMG ]]; then | |
+ echo "Building Fancy .dmg" | |
+ mkdir "${srcDir}/.background" | |
+ cp -R "${PROJECT_SOURCE_DATA_DIR}/artdmg.icns" "${srcDir}/.VolumeIcon.icns" | |
+ cp -R "${PROJECT_SOURCE_DATA_DIR}/artdmg-bkgd.png" "${srcDir}/.background/background.png" | |
+ SetFile -c incC "${srcDir}/.VolumeIcon.icns" | |
+ create-dmg "${dmg_name}.dmg" "${srcDir}" \ | |
+ --volname "${PROJECT_NAME}_${PROJECT_FULL_VERSION}" \ | |
+ --volicon "${srcDir}/.VolumeIcon.icns" \ | |
+ --sandbox-safe \ | |
+ --no-internet-enable \ | |
+ --eula LICENSE.txt \ | |
+ --hdiutil-verbose \ | |
+ --rez /Library/Developer/CommandLineTools/usr/bin/Rez | |
+ else | |
+ hdiutil create -format UDBZ -fs HFS+ -srcdir "${srcDir}" -volname "${PROJECT_NAME}_${PROJECT_FULL_VERSION}" "${dmg_name}.dmg" | |
+ fi | |
+ | |
# Sign disk image | |
- if ! test -z "$CODESIGNID" ; then | |
- codesign --deep --force -v -s "${CODESIGNID}" --timestamp "${dmg_name}.dmg" | |
- fi | |
- | |
+ if [[ -n $CODESIGNID ]]; then | |
+ msg "Signing disk image" | |
+ codesign --deep --force -v -s "${CODESIGNID}" --timestamp "${dmg_name}.dmg" | |
+ fi | |
+ | |
# Notarize the dmg | |
- | |
- if ! test -z "$NOTARY" ; then | |
+ if ! test -z "$NOTARY"; then | |
msg "Notarizing the dmg:" | |
zip "${dmg_name}.dmg.zip" "${dmg_name}.dmg" | |
- uuid=`xcrun altool --notarize-app --primary-bundle-id "us.pixls.art" ${NOTARY} --file "${dmg_name}.dmg.zip" 2>&1 | grep 'RequestUUID' | awk '{ print $3 }'` | |
- echo "dmg Result= $uuid" # Display identifier string | |
+ echo "Uploading..." | |
+ uuid=$(xcrun altool --notarize-app --primary-bundle-id "us.pixls.art" ${NOTARY} --file "${dmg_name}.dmg.zip" 2>&1 | grep 'RequestUUID' | awk '{ print $3 }') | |
+ echo "dmg Result= ${uuid}" # Display identifier string | |
sleep 15 | |
while : | |
do | |
fullstatus=`xcrun altool --notarization-info "$uuid" ${NOTARY} 2>&1` # get the status | |
status1=`echo "$fullstatus" | grep 'Status\:' | awk '{ print $2 }'` | |
- if [ "$status1" = "success" ]; then | |
+ if [[ $status1 = "success" ]]; then | |
xcrun stapler staple "${dmg_name}.dmg" # staple the ticket | |
xcrun stapler validate -v "${dmg_name}.dmg" | |
echo "dmg Notarization success" | |
+ rm *dmg.zip | |
break | |
- elif [ "$status1" = "in" ]; then | |
+ elif [[ $status1 = "in" ]]; then | |
echo "dmg Notarization still in progress, sleeping for 15 seconds and trying again" | |
sleep 15 | |
else | |
echo "dmg Notarization failed fullstatus below" | |
echo "$fullstatus" | |
- exit 1 | |
+ exit 1 | |
fi | |
done | |
fi | |
-# Zip disk image for redistribution | |
+ # Zip disk image for redistribution | |
msg "Zipping disk image for redistribution:" | |
- | |
- zip "${dmg_name}.zip" "${dmg_name}.dmg" Resources/AboutThisBuild.txt | |
- rm "${dmg_name}.dmg" | |
- | |
- msg "Removing disk image caches:" | |
- rm -rf "${srcDir}" | |
+ mkdir "${PROJECT_NAME}_macOS_${MINIMUM_SYSTEM_VERSION}_${arch}_${PROJECT_FULL_VERSION}_folder" | |
+ ditto {"${PROJECT_NAME}_macOS_${MINIMUM_SYSTEM_VERSION}_${arch}_${PROJECT_FULL_VERSION}.dmg","art-cli","${PROJECT_SOURCE_DATA_DIR}/INSTALL.txt"} "${PROJECT_NAME}_macOS_${MINIMUM_SYSTEM_VERSION}_${arch}_${PROJECT_FULL_VERSION}_folder" | |
+ zip -r "${PROJECT_NAME}_macOS_${MINIMUM_SYSTEM_VERSION}_${arch}_${PROJECT_FULL_VERSION}.zip" "${PROJECT_NAME}_macOS_${MINIMUM_SYSTEM_VERSION}_${arch}_${PROJECT_FULL_VERSION}_folder/" | |
+ if [[ -n $NIGHTLY ]]; then | |
+ cp "${PROJECT_NAME}_macOS_${MINIMUM_SYSTEM_VERSION}_${arch}_${PROJECT_FULL_VERSION}.zip" "${PROJECT_NAME}_macOS_${arch}_latest.zip" | |
+ fi | |
} | |
CreateDmg | |
msg "Finishing build:" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment