Make RT buildable again on Mac OS X. Courtesy of mattintosh4, issue 1628
This commit is contained in:
@@ -63,10 +63,11 @@ if (WIN32)
|
|||||||
endif (WIN32)
|
endif (WIN32)
|
||||||
|
|
||||||
if (APPLE)
|
if (APPLE)
|
||||||
# SET (CMAKE_OSX_ARCHITECTURES "i386;x86_64;" )
|
if (CMAKE_CXX_COMPILER MATCHES "g\\+\\+-mp-4.[5-8]" OR
|
||||||
# SET (CMAKE_TRY_COMPILE_OSX_ARCHITECTURES "i386;x86_64;" )
|
CMAKE_CXX_COMPILER_ARG1 MATCHES "g\\+\\+-mp-4.[5-8]")
|
||||||
SET (CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX10.5.sdk")
|
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-weak_library,/usr/lib/libstdc++.6.dylib")
|
||||||
SET (CMAKE_OSX_DEPLOYMENT_TARGET "10.5")
|
message (STATUS "CMAKE_CXX_COMPILER is MacPorts GCC.\n CMAKE_EXE_LINKER_FLAGS: ${CMAKE_EXE_LINKER_FLAGS}")
|
||||||
|
endif ()
|
||||||
endif (APPLE)
|
endif (APPLE)
|
||||||
|
|
||||||
option(USE_EXPERIMENTAL_LANG_VERSIONS "Build RT with -std=c++0x" OFF)
|
option(USE_EXPERIMENTAL_LANG_VERSIONS "Build RT with -std=c++0x" OFF)
|
||||||
|
34
COMPILE.txt
34
COMPILE.txt
@@ -508,30 +508,22 @@ OS X
|
|||||||
- XCode Development Tools (you only need a subset of these, but it is
|
- XCode Development Tools (you only need a subset of these, but it is
|
||||||
probably easier to just install all of them)
|
probably easier to just install all of them)
|
||||||
- MacPorts
|
- MacPorts
|
||||||
- Set /opt/local/etc/macports/variants.conf to include "+no_x11 +quartz"
|
- To install the dependencies, run:
|
||||||
- If you want to build for multiple architectures, add +universal to
|
sudo port install cairo +quartz -x11 pango +quartz -x11 gdk-pixbuf2 -x11 gtk2 +quartz libsigcxx2
|
||||||
variants.conf. Note that this will increase the size of the final
|
- gtkmm port will fail to install. Use `-s’ option.
|
||||||
application substantially.
|
sudo port -s install gtkmm
|
||||||
- Set /opt/local/etc/macports/macports.conf key 'universal_archs' to the
|
- To install other dependencies and tools.
|
||||||
architectures you wish to build for. Possible values include "i386
|
sudo port install gtk-engines2 lcms2 libiptcdata fftw-3-single cmake gcc47
|
||||||
x86_64 ppc ppc64"
|
|
||||||
- Edit the beginning of CMakeLists.txt to enable the same architectures
|
|
||||||
as you added to variants.conf
|
|
||||||
- To install all the tools and dependencies, run:
|
|
||||||
sudo port install cairomm cmake fftw-3 glibmm gtk2 gtkmm lcms \
|
|
||||||
libiptcdata pango-devel
|
|
||||||
- If you don't already have Mercurial installed, run:
|
- If you don't already have Mercurial installed, run:
|
||||||
sudo port install mercurial
|
sudo port install mercurial
|
||||||
- If you want to try OpenMP builds, run:
|
|
||||||
sudo port install gcc45
|
|
||||||
|
|
||||||
COMPILE:
|
COMPILE:
|
||||||
- Enter the root directory of the RawTherapee source tree
|
- Make build directory.
|
||||||
- To enable OpenMP, assuming you have installed gcc45), type:
|
mkdir build
|
||||||
cmake -D CMAKE_C_COMPILER=gcc-mp-4.5 -D CMAKE_CXX_COMPILER=g++-mp-4.5 \
|
cd build
|
||||||
|
- To enable OpenMP, assuming you have installed gcc47), type:
|
||||||
|
cmake -D CMAKE_C_COMPILER=gcc-mp-4.7 -D CMAKE_CXX_COMPILER=g++-mp-4.7 \
|
||||||
<path to source directory>
|
<path to source directory>
|
||||||
OR to disable OpenMP and use the default compiler, type:
|
|
||||||
cmake -D OPTION_OMP=false <path to source directory>
|
|
||||||
|
|
||||||
If you want to upload a build, you should set some additional information
|
If you want to upload a build, you should set some additional information
|
||||||
about your processor. There are two possibilities:
|
about your processor. There are two possibilities:
|
||||||
@@ -549,7 +541,7 @@ OS X
|
|||||||
- Type:
|
- Type:
|
||||||
make install
|
make install
|
||||||
- Type:
|
- Type:
|
||||||
./tools/osx/make-app-bundle
|
make macosx_bundle
|
||||||
- You will find a RawTherapee.dmg file in the release/ folder; this is the
|
- You will find a disk image in the build directory; this is the
|
||||||
distribution release and can be run on any machine which meets the
|
distribution release and can be run on any machine which meets the
|
||||||
architecture requirements you specified in variants.conf earlier.
|
architecture requirements you specified in variants.conf earlier.
|
@@ -39,3 +39,23 @@ install (DIRECTORY ${THEMEDIR} DESTINATION "${DATADIR}")
|
|||||||
install (DIRECTORY ${IMAGESDIR} DESTINATION "${DATADIR}" FILES_MATCHING PATTERN "index.theme")
|
install (DIRECTORY ${IMAGESDIR} DESTINATION "${DATADIR}" FILES_MATCHING PATTERN "index.theme")
|
||||||
install (DIRECTORY ${IMAGESDIR} DESTINATION "${DATADIR}" FILES_MATCHING PATTERN "*.png")
|
install (DIRECTORY ${IMAGESDIR} DESTINATION "${DATADIR}" FILES_MATCHING PATTERN "*.png")
|
||||||
install (FILES ${OPTIONSFILE} DESTINATION "${DATADIR}" PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ RENAME options)
|
install (FILES ${OPTIONSFILE} DESTINATION "${DATADIR}" PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ RENAME options)
|
||||||
|
|
||||||
|
if (APPLE)
|
||||||
|
# CMake escapes first item quote character. Do not remove 'DUMMY_VARIABLE='.
|
||||||
|
set (MACOSX_BUNDLE_COMMAND DUMMY_VARIABLE=
|
||||||
|
PROJECT_NAME="${PROJECT_NAME}"
|
||||||
|
PROJECT_SOURCE_DIR="${PROJECT_SOURCE_DIR}"
|
||||||
|
CMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}"
|
||||||
|
GTK_PREFIX="${GTK_PREFIX}")
|
||||||
|
if (PROC_BIT_DEPTH MATCHES 32)
|
||||||
|
list (APPEND MACOSX_BUNDLE_COMMAND PROC_BIT_DEPTH=32)
|
||||||
|
elseif (PROC_BIT_DEPTH MATCHES 64)
|
||||||
|
list (APPEND MACOSX_BUNDLE_COMMAND PROC_BIT_DEPTH=64)
|
||||||
|
endif (PROC_BIT_DEPTH MATCHES 32)
|
||||||
|
list (APPEND MACOSX_BUNDLE_COMMAND sh "${PROJECT_SOURCE_DIR}/rtdata/osx/macosx_bundle.sh")
|
||||||
|
|
||||||
|
add_custom_target(macosx_bundle
|
||||||
|
COMMAND ${MACOSX_BUNDLE_COMMAND}
|
||||||
|
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
|
||||||
|
COMMENT "Creating Mac OS X bundle")
|
||||||
|
endif (APPLE)
|
138
rtdata/osx/Info.plist.in
Normal file
138
rtdata/osx/Info.plist.in
Normal file
@@ -0,0 +1,138 @@
|
|||||||
|
<?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>RawTherapee</string>
|
||||||
|
<key>CFBundleDocumentTypes</key>
|
||||||
|
<array>
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleTypeExtensions</key>
|
||||||
|
<array>
|
||||||
|
<string>pp3</string>
|
||||||
|
<string>PP3</string>
|
||||||
|
</array>
|
||||||
|
<key>CFBundleTypeIconFile</key>
|
||||||
|
<string>profile.icns</string>
|
||||||
|
<key>CFBundleTypeName</key>
|
||||||
|
<string>RawTherapee Profile Data</string>
|
||||||
|
<key>CFBundleTypeOSTypes</key>
|
||||||
|
<array>
|
||||||
|
<string>PP3</string>
|
||||||
|
</array>
|
||||||
|
<key>CFBundleTypeRole</key>
|
||||||
|
<string>None</string>
|
||||||
|
<key>LSIsAppleDefaultForType</key>
|
||||||
|
<true/>
|
||||||
|
<key>LSItemContentTypes</key>
|
||||||
|
<array>
|
||||||
|
<string>com.rawtherapee.pp3</string>
|
||||||
|
</array>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleTypeExtensions</key>
|
||||||
|
<array>
|
||||||
|
<string>CRW</string>
|
||||||
|
<string>crw</string>
|
||||||
|
<string>CR2</string>
|
||||||
|
<string>cr2</string>
|
||||||
|
<string>NEF</string>
|
||||||
|
<string>nef</string>
|
||||||
|
<string>RAF</string>
|
||||||
|
<string>raf</string>
|
||||||
|
<string>ORF</string>
|
||||||
|
<string>orf</string>
|
||||||
|
<string>MRW</string>
|
||||||
|
<string>mrw</string>
|
||||||
|
<string>SRF</string>
|
||||||
|
<string>srf</string>
|
||||||
|
<string>DCR</string>
|
||||||
|
<string>dcr</string>
|
||||||
|
<string>ARW</string>
|
||||||
|
<string>arw</string>
|
||||||
|
<string>PEF</string>
|
||||||
|
<string>pef</string>
|
||||||
|
<string>RAW</string>
|
||||||
|
<string>raw</string>
|
||||||
|
<string>MOS</string>
|
||||||
|
<string>mos</string>
|
||||||
|
</array>
|
||||||
|
<key>CFBundleTypeMIMETypes</key>
|
||||||
|
<array>
|
||||||
|
<string>image/raw</string>
|
||||||
|
</array>
|
||||||
|
<key>CFBundleTypeName</key>
|
||||||
|
<string>Camera Raw</string>
|
||||||
|
<key>CFBundleTypeOSTypes</key>
|
||||||
|
<array>
|
||||||
|
<string>CRW</string>
|
||||||
|
<string>CR2</string>
|
||||||
|
<string>NEF</string>
|
||||||
|
</array>
|
||||||
|
<key>CFBundleTypeRole</key>
|
||||||
|
<string>None</string>
|
||||||
|
<key>LSIsAppleDefaultForType</key>
|
||||||
|
<true/>
|
||||||
|
<key>NSDocumentClass</key>
|
||||||
|
<string>PVDocument</string>
|
||||||
|
</dict>
|
||||||
|
</array>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>rawtherapee</string>
|
||||||
|
<key>CFBundleGetInfoString</key>
|
||||||
|
<string>@version@, Copyright © 2004-2013 Gábor Horváth</string>
|
||||||
|
<key>CFBundleIconFile</key>
|
||||||
|
<string>rawtherapee.icns</string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>com.rawtherapee.rawtherapee</string>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundleName</key>
|
||||||
|
<string>RawTherapee</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>APPL</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string>@shortVersion@</string>
|
||||||
|
<key>CFBundleSignature</key>
|
||||||
|
<string>????</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>@version@</string>
|
||||||
|
<key>LSExecutableArchitectures</key>
|
||||||
|
<array>
|
||||||
|
<string>@arch@</string>
|
||||||
|
</array>
|
||||||
|
<key>NSHighResolutionCapable</key>
|
||||||
|
<true/>
|
||||||
|
<key>NSHumanReadableCopyright</key>
|
||||||
|
<string>Copyright © 2004-2013 Gábor Horváth</string>
|
||||||
|
<key>UTExportedTypeDeclarations</key>
|
||||||
|
<array>
|
||||||
|
<dict>
|
||||||
|
<key>UTTypeConformsTo</key>
|
||||||
|
<array>
|
||||||
|
<string>public.data</string>
|
||||||
|
</array>
|
||||||
|
<key>UTTypeDescription</key>
|
||||||
|
<string>RawTherapee Profile Data</string>
|
||||||
|
<key>UTTypeIconFile</key>
|
||||||
|
<string>Icons.icns</string>
|
||||||
|
<key>UTTypeIdentifier</key>
|
||||||
|
<string>com.rawtherapee.pp3</string>
|
||||||
|
<key>UTTypeReferenceURL</key>
|
||||||
|
<string>http://www.rawtherapee.com/</string>
|
||||||
|
<key>UTTypeTagSpecification</key>
|
||||||
|
<dict>
|
||||||
|
<key>com.apple.ostype</key>
|
||||||
|
<string>PP3</string>
|
||||||
|
<key>public.filename-extension</key>
|
||||||
|
<array>
|
||||||
|
<string>pp3</string>
|
||||||
|
<string>PP3</string>
|
||||||
|
</array>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</array>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
1
rtdata/osx/PkgInfo
Normal file
1
rtdata/osx/PkgInfo
Normal file
@@ -0,0 +1 @@
|
|||||||
|
APPL????
|
34
rtdata/osx/executable_loader.in
Normal file
34
rtdata/osx/executable_loader.in
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
cwd="$(cd "$(dirname "$0")"; pwd)"
|
||||||
|
app="${cwd%/Contents/*}"
|
||||||
|
etc="${cwd}"/etc
|
||||||
|
|
||||||
|
#export DYLD_LIBRARY_PATH="${cwd}"/lib
|
||||||
|
export GTK_PATH="${cwd}"
|
||||||
|
export GTK_EXE_PREFIX="${cwd}"
|
||||||
|
export GTK_DATA_PREFIX="${cwd}"
|
||||||
|
export GTK_DATA_DIRS="${cwd}"
|
||||||
|
export XDG_DATA_DIRS="${cwd}"/share
|
||||||
|
export GTK2_RC_FILES="${etc}"/gtk-2.0/gtkrc
|
||||||
|
export GTK_IM_MODULE_FILE="${etc}"/gtk-2.0/gtk.immodules
|
||||||
|
export GDK_PIXBUF_MODULE_FILE="${etc}"/gtk-2.0/gdk-pixbuf.loaders
|
||||||
|
export PANGO_RC_FILE="${etc}"/pango/pangorc
|
||||||
|
|
||||||
|
# environment variables for X11 backend
|
||||||
|
if test -d "${etc}"/fonts; then
|
||||||
|
export FONTCONFIG_PATH="${etc}"/fonts
|
||||||
|
|
||||||
|
_DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH"
|
||||||
|
DYLD_LIBRARY_PATH=/tmp/`uuidgen`
|
||||||
|
mkdir $DYLD_LIBRARY_PATH
|
||||||
|
cp /usr/lib/libcups.2.dylib $DYLD_LIBRARY_PATH
|
||||||
|
export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:$_DYLD_LIBRARY_PATH"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# strip out system arguments
|
||||||
|
case "$1" in -psn_*) shift;; esac
|
||||||
|
|
||||||
|
ln -sf "${app}" /tmp
|
||||||
|
|
||||||
|
exec "${cwd}"/rawtherapee-bin "$@"
|
216
rtdata/osx/macosx_bundle.sh
Normal file
216
rtdata/osx/macosx_bundle.sh
Normal file
@@ -0,0 +1,216 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Required variables
|
||||||
|
# ------------------
|
||||||
|
# these are very important variables. Must be set into rtdata/CMakeLists.txt!
|
||||||
|
# - PROJECT_NAME
|
||||||
|
# - PROJECT_SOURCE_DIR
|
||||||
|
# - PROJECT_VERSION (if without mercurial)
|
||||||
|
# - CMAKE_BUILD_TYPE
|
||||||
|
# - PROC_BIT_DEPTH
|
||||||
|
# - GTK_PREFIX
|
||||||
|
|
||||||
|
|
||||||
|
# --------------------------------------
|
||||||
|
# Functions
|
||||||
|
# --------------------------------------
|
||||||
|
function message {
|
||||||
|
printf '\e[34m-- %s\e[m\n' "$*"
|
||||||
|
}
|
||||||
|
function get_dependencies {
|
||||||
|
otool -L "$1" | awk 'NR >= 2 && $1 !~ /^(\/usr\/lib|\/System|@executable_path|@rpath)\// { print $1 }'
|
||||||
|
}
|
||||||
|
function checkLink {
|
||||||
|
get_dependencies "$1" |
|
||||||
|
while read x
|
||||||
|
do
|
||||||
|
if test ! -f "${LIB}/${x##*/}"; then
|
||||||
|
ditto --arch ${arch} "${x}" "$_"
|
||||||
|
checkLink "$_"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# source check
|
||||||
|
if test ! -d "${CMAKE_BUILD_TYPE}"; then
|
||||||
|
printf "\e[31m${PWD}/${CMAKE_BUILD_TYPE} directory is not found. Please execute 'make install' first.\e[m\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# update project version
|
||||||
|
if test -x `which hg` -a -d "${PROJECT_SOURCE_DIR}/.hg"; then
|
||||||
|
PROJECT_VERSION=`hg -R "${PROJECT_SOURCE_DIR}" parents --template "{latesttag}.{latesttagdistance}"`
|
||||||
|
fi
|
||||||
|
|
||||||
|
# if not specify CMAKE_OSX_DEPLOYMENT_TARGET when compiling,
|
||||||
|
# 'MINIMUM_VERSION' will be used host OS X version.
|
||||||
|
MINIMUM_SYSTEM_VERSION=`otool -l "${CMAKE_BUILD_TYPE}"/rawtherapee | grep -A2 'LC_VERSION_MIN_MACOSX' | awk '$1 ~ /version/ { printf $2 }'`
|
||||||
|
if test ! -n "${MINIMUM_SYSTEM_VERSION}"; then
|
||||||
|
MINIMUM_SYSTEM_VERSION=`sw_vers -productVersion | cut -d. -f-2`
|
||||||
|
fi
|
||||||
|
|
||||||
|
case ${PROC_BIT_DEPTH} in
|
||||||
|
64) arch=x86_64;;
|
||||||
|
32) arch=i386;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
echo "PROJECT_NAME: ${PROJECT_NAME}"
|
||||||
|
echo "PROJECT_VERSION: ${PROJECT_VERSION}"
|
||||||
|
echo "PROJECT_SOURCE_DIR: ${PROJECT_SOURCE_DIR}"
|
||||||
|
echo "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}"
|
||||||
|
echo "PROC_BIT_DEPTH: ${PROC_BIT_DEPTH}"
|
||||||
|
echo "MINIMUM_SYSTEM_VERSION: ${MINIMUM_SYSTEM_VERSION}"
|
||||||
|
echo "GTK_PREFIX: ${GTK_PREFIX}"
|
||||||
|
echo "PWD: ${PWD}"
|
||||||
|
|
||||||
|
APP="${PROJECT_NAME}".app
|
||||||
|
CONTENTS="${APP}"/Contents
|
||||||
|
RESOURCES="${CONTENTS}"/Resources
|
||||||
|
MACOS="${CONTENTS}"/MacOS
|
||||||
|
LIB="${MACOS}"/lib
|
||||||
|
ETC="${MACOS}"/etc
|
||||||
|
EXECUTABLE="${MACOS}"/rawtherapee
|
||||||
|
|
||||||
|
message "Removing old files"
|
||||||
|
rm -rf "${APP}" ${PROJECT_NAME}_*.dmg
|
||||||
|
|
||||||
|
message "Creating bundle container"
|
||||||
|
install -d "${RESOURCES}" \
|
||||||
|
"${MACOS}" \
|
||||||
|
"${LIB}" \
|
||||||
|
"${ETC}"
|
||||||
|
|
||||||
|
# set bundle attribute
|
||||||
|
setFile -a B "${APP}"
|
||||||
|
|
||||||
|
message "Copying release files"
|
||||||
|
ditto --arch ${arch} "${CMAKE_BUILD_TYPE}" "${MACOS}"
|
||||||
|
|
||||||
|
message "Copying dependencies from ${GTK_PREFIX}"
|
||||||
|
checkLink "${EXECUTABLE}"
|
||||||
|
|
||||||
|
message "Copying library modules from ${GTK_PREFIX}"
|
||||||
|
ditto --arch ${arch} {"${GTK_PREFIX}"/lib,"${LIB}"}/gdk-pixbuf-2.0
|
||||||
|
ditto --arch ${arch} {"${GTK_PREFIX}"/lib,"${LIB}"}/gtk-2.0
|
||||||
|
ditto --arch ${arch} {"${GTK_PREFIX}"/lib,"${LIB}"}/pango
|
||||||
|
|
||||||
|
message "Removing static libraries and cache files"
|
||||||
|
find -E "${LIB}" -type f -regex '.*\.(a|la|cache)$' | while read; do rm "${REPLY}"; done
|
||||||
|
|
||||||
|
message "Copying configuration files from ${GTK_PREFIX}"
|
||||||
|
install -d "${ETC}"/{gtk-2.0,pango}
|
||||||
|
cp "${GTK_PREFIX}"/etc/gtk-2.0/im-multipress.conf "${ETC}"/gtk-2.0
|
||||||
|
"${GTK_PREFIX}"/bin/gdk-pixbuf-query-loaders "${LIB}"/gdk-pixbuf-2.0/*/loaders/*.so > "${ETC}"/gtk-2.0/gdk-pixbuf.loaders
|
||||||
|
"${GTK_PREFIX}"/bin/gtk-query-immodules-2.0 "${LIB}"/gtk-2.0/*/immodules/*.so > "${ETC}"/gtk-2.0/gtk.immodules
|
||||||
|
"${GTK_PREFIX}"/bin/pango-querymodules "${LIB}"/pango/*/modules/*.so > "${ETC}"/pango/pango.modules
|
||||||
|
sed -i "" -e "s|${PWD}|/tmp|" "${ETC}"/gtk-2.0/gdk-pixbuf.loaders \
|
||||||
|
"${ETC}"/gtk-2.0/gtk.immodules \
|
||||||
|
"${ETC}"/pango/pango.modules
|
||||||
|
printf "[Pango]\nModuleFiles = /tmp/${ETC}/pango/pango.modules" > "${ETC}"/pango/pangorc
|
||||||
|
|
||||||
|
message "Copying shared files from ${GTK_PREFIX}"
|
||||||
|
cp -R "${GTK_PREFIX}"/share/mime "${MACOS}"/share
|
||||||
|
# gtk themes
|
||||||
|
ditto {/opt/local,"${MACOS}"}/share/themes/Mac/gtk-2.0-key/gtkrc
|
||||||
|
ditto {/opt/local,"${MACOS}"}/share/themes/Clearlooks/gtk-2.0/gtkrc
|
||||||
|
install -d "${MACOS}"/share/themes/Raleigh/gtk-2.0 && (
|
||||||
|
cd "$_" &&
|
||||||
|
ln -s ../../Clearlooks/gtk-2.0/gtkrc
|
||||||
|
)
|
||||||
|
|
||||||
|
# fontconfig files (X11 backend only)
|
||||||
|
if otool -L "${EXECUTABLE}" | grep -sq 'libgtk-x11-2.0'; then
|
||||||
|
message "Installing fontconfig files (Your library is X11 backend. 'FONTCONFIG_PATH' will be set by executable loader.)"
|
||||||
|
cp -RL "${GTK_PREFIX}"/etc/fonts "${ETC}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# --------------------------------------
|
||||||
|
# Install names
|
||||||
|
# --------------------------------------
|
||||||
|
## install_name_tool
|
||||||
|
# this command replaces install names. you will not need to set 'DYLD_LIBRARY_PATH'
|
||||||
|
# '@rpath' is replaced '@loader_path' when execute.
|
||||||
|
|
||||||
|
# @rpath
|
||||||
|
find -E "${MACOS}" -type f -regex '.*(rawtherapee|\.dylib|\.so)$' | while read x; do
|
||||||
|
message "Modifying install names: ${x}"
|
||||||
|
{
|
||||||
|
# id (dylib file only)
|
||||||
|
case "${x}" in (*.dylib)
|
||||||
|
printf ' install_name_tool -id "%s" "%s"\n' "@rpath/${x##*/}" "${x}";;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# dependencies
|
||||||
|
get_dependencies "${x}" | while read y; do
|
||||||
|
printf ' install_name_tool -change "%s" "%s" "%s"\n' "${y}" "@rpath/${y##*/}" "${x}"
|
||||||
|
done
|
||||||
|
} | bash -v
|
||||||
|
done
|
||||||
|
|
||||||
|
# @loader_path
|
||||||
|
message "Registering @loader_path into the executable"
|
||||||
|
printf ' install_name_tool -add_rpath @loader_path/lib "%s"' "${EXECUTABLE}" | bash -v
|
||||||
|
|
||||||
|
|
||||||
|
# --------------------------------------
|
||||||
|
# required files
|
||||||
|
# --------------------------------------
|
||||||
|
message "Installing required application bundle files"
|
||||||
|
PROJECT_SOURCE_DATA_DIR="${PROJECT_SOURCE_DIR}"/rtdata/osx
|
||||||
|
|
||||||
|
## executable and executable loader
|
||||||
|
# note: executable is renamed to 'rawtherapee-bin'.
|
||||||
|
mv "${MACOS}"/rawtherapee{,-bin}
|
||||||
|
install -m 0755 "${PROJECT_SOURCE_DATA_DIR}"/executable_loader.in "${MACOS}"/rawtherapee
|
||||||
|
# icons
|
||||||
|
cp "${PROJECT_SOURCE_DATA_DIR}"/{rawtherapee,profile}.icns "${RESOURCES}"
|
||||||
|
# PkgInfo
|
||||||
|
cp "${PROJECT_SOURCE_DATA_DIR}"/PkgInfo "${CONTENTS}"
|
||||||
|
# Info.plist
|
||||||
|
install -m 0644 "${PROJECT_SOURCE_DATA_DIR}"/Info.plist.in "${CONTENTS}"/Info.plist
|
||||||
|
# configure property values
|
||||||
|
sed -i "" -e "s|@version@|${PROJECT_VERSION}|" \
|
||||||
|
-e "s|@shortVersion@|`echo ${PROJECT_VERSION} | cut -d. -f-3`|" \
|
||||||
|
-e "s|@arch@|${arch}|" \
|
||||||
|
"${CONTENTS}"/Info.plist
|
||||||
|
# specify min version
|
||||||
|
#defaults write "${PWD}/${CONTENTS}"/Info LSMinimumSystemVersion "${MINIMUM_SYSTEM_VERSION}"
|
||||||
|
plutil -convert binary1 "${CONTENTS}"/Info.plist
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# --------------------------------------
|
||||||
|
# disk image
|
||||||
|
# --------------------------------------
|
||||||
|
## cache directory
|
||||||
|
DMG_SOURCE_DIR=/tmp/`uuidgen`
|
||||||
|
|
||||||
|
## disk image name
|
||||||
|
# space and comma will be replaced.
|
||||||
|
# example: RawTherapee_OSX108_4.0.10.1_Release.dmg
|
||||||
|
DMG="${PROJECT_NAME// /_}_OSX${MINIMUM_SYSTEM_VERSION//.}_${PROJECT_VERSION}_${CMAKE_BUILD_TYPE}".dmg
|
||||||
|
# --------------------------------------
|
||||||
|
message "Preparing disk image sources at ${DMG_SOURCE_DIR}"
|
||||||
|
install -d ${DMG_SOURCE_DIR}
|
||||||
|
mv "${APP}" ${DMG_SOURCE_DIR}
|
||||||
|
cp AboutThisBuild.txt ${DMG_SOURCE_DIR}
|
||||||
|
# symlink to /Applications dir
|
||||||
|
ln -s /Applications ${DMG_SOURCE_DIR}
|
||||||
|
# .webloc files
|
||||||
|
defaults write ${DMG_SOURCE_DIR}/"RawTherapee Blog" URL 'http://www.rawtherapee.com'
|
||||||
|
mv ${DMG_SOURCE_DIR}/"RawTherapee Blog".{plist,webloc}
|
||||||
|
defaults write ${DMG_SOURCE_DIR}/"Online Manual" URL 'https://docs.google.com/document/d/1DHLb_6xNQsEInxiuU8pz1-sWNinnj09bpBUA4_Vl8w8/edit'
|
||||||
|
mv ${DMG_SOURCE_DIR}/"Online Manual".{plist,webloc}
|
||||||
|
|
||||||
|
message "Creating disk image"
|
||||||
|
## hdiutil
|
||||||
|
# -format: defaut is 'UDZO'(zip compress). 'UDBZ' is bzip2 compress.
|
||||||
|
# -volname: example, RawTherapee_4.0.10.1
|
||||||
|
hdiutil create -format UDBZ \
|
||||||
|
-srcdir ${DMG_SOURCE_DIR} \
|
||||||
|
-volname "${PROJECT_NAME}_${PROJECT_VERSION}" \
|
||||||
|
"${DMG}"
|
||||||
|
|
||||||
|
message "Cleaning disk image caches"
|
||||||
|
rm -rf ${DMG_SOURCE_DIR}
|
BIN
rtdata/osx/profile.icns
Normal file
BIN
rtdata/osx/profile.icns
Normal file
Binary file not shown.
@@ -1,28 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//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>CFBundleExecutable</key>
|
|
||||||
<string>start</string>
|
|
||||||
<key>CFBundleIconFile</key>
|
|
||||||
<string>Icons.icns</string>
|
|
||||||
<key>CFBundleIdentifier</key>
|
|
||||||
<string>com.rawtherapee.rawtherapee</string>
|
|
||||||
<key>CFBundleInfoDictionaryVersion</key>
|
|
||||||
<string>6.0</string>
|
|
||||||
<key>CFBundleName</key>
|
|
||||||
<string>RawTherapee</string>
|
|
||||||
<key>CFBundlePackageType</key>
|
|
||||||
<string>APPL</string>
|
|
||||||
<key>CFBundleShortVersionString</key>
|
|
||||||
<string>3.0a</string>
|
|
||||||
<key>CFBundleSignature</key>
|
|
||||||
<string>APPL</string>
|
|
||||||
<key>CFBundleVersion</key>
|
|
||||||
<string>3.0 Alpha</string>
|
|
||||||
<key>NSAppleScriptEnabled</key>
|
|
||||||
<string>NO</string>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
@@ -1,103 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# Function checkLink:
|
|
||||||
# args: $1 - file
|
|
||||||
#
|
|
||||||
# Will loop through all dynamic links for $file, and update each to be relative.
|
|
||||||
function checkLink {
|
|
||||||
#echo "checkLink called with $1 $2"
|
|
||||||
local FILE=$1
|
|
||||||
|
|
||||||
otool -L $FILE | grep -v "${APP}" | grep -v '/usr/lib' | grep -v '/System/' | grep -v "@executable_path" | cut -f 1 -d ' ' | while read X
|
|
||||||
do
|
|
||||||
local NAME=${LIB}/`basename "$X"`
|
|
||||||
if [ ! -f "${NAME}" ]
|
|
||||||
then
|
|
||||||
cp $X "${NAME}"
|
|
||||||
|
|
||||||
#Recursively update the linkage of libraries
|
|
||||||
checkLink "${NAME}"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
APP=RawTherapee.app
|
|
||||||
CONTENTS=${APP}/Contents
|
|
||||||
RESOURCES=${CONTENTS}/Resources
|
|
||||||
MACOS=${CONTENTS}/MacOS
|
|
||||||
BIN=${MACOS}/bin
|
|
||||||
ETC=${MACOS}/etc
|
|
||||||
LIB=${MACOS}/lib
|
|
||||||
SHARE=${MACOS}/share
|
|
||||||
RELEASE=Release
|
|
||||||
DMG=rawtherapee_mac32_`date +%F`_`hg -R . branch`_`hg parents --template '{latesttag}i.{latesttagdistance}-{node|short}'`.dmg
|
|
||||||
EXECUTABLE=rawtherapee
|
|
||||||
|
|
||||||
#Find where MacPorts is installed. We take a known binary (cmake), which is in <MacPorts>/bin, and
|
|
||||||
# go up a level to get the main install folder.
|
|
||||||
MACPORTS_PREFIX=`which cmake`
|
|
||||||
MACPORTS_PREFIX=`dirname $MACPORTS_PREFIX`
|
|
||||||
MACPORTS_PREFIX=`dirname $MACPORTS_PREFIX`
|
|
||||||
|
|
||||||
if [ ! -d ${RELEASE} ]; then
|
|
||||||
echo "Please run this from the root of the project; i.e. './tools/osx/make-app-bundle'."
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -d "${APP}" ]; then
|
|
||||||
echo "Removing old application..."
|
|
||||||
rm -rf "${APP}"
|
|
||||||
fi
|
|
||||||
echo "Removing any old disk images..."
|
|
||||||
rm ${RELEASE}/rawtherapee*.dmg
|
|
||||||
rm ${RELEASE}/rawtherapee*.dmg.zip
|
|
||||||
|
|
||||||
echo "Making application directory structure..."
|
|
||||||
mkdir -p "${RESOURCES}"
|
|
||||||
mkdir -p "${ETC}"
|
|
||||||
mkdir -p "${LIB}"
|
|
||||||
mkdir -p "${SHARE}/mime"
|
|
||||||
|
|
||||||
#Copy over non-explicitly linked libraries
|
|
||||||
echo "Copying libraries from ${MACPORTS_PREFIX}..."
|
|
||||||
cp -R ${MACPORTS_PREFIX}/lib/pango ${LIB}
|
|
||||||
cp -R ${MACPORTS_PREFIX}/lib/gtk-2.0 ${LIB}
|
|
||||||
cp -R ${MACPORTS_PREFIX}/lib/gdk-pixbuf* ${LIB}
|
|
||||||
|
|
||||||
#Copy over mimes (if a mime is copied, and nobody hears, is it really copied?)
|
|
||||||
echo "Copying shared files from ${MACPORTS_PREFIX}..."
|
|
||||||
cp -R ${MACPORTS_PREFIX}/share/mime/* ${SHARE}/mime
|
|
||||||
|
|
||||||
#Copy over etc files, and modify as needed
|
|
||||||
echo "Copying configuration files from ${MACPORTS_PREFIX} and modifying for standalone app bundle..."
|
|
||||||
cp -R $MACPORTS_PREFIX/etc/gtk-2.0 ${ETC}
|
|
||||||
cp -R $MACPORTS_PREFIX/etc/pango ${ETC}
|
|
||||||
ESCAPED_MACPORTS_PREFIX=`echo ${MACPORTS_PREFIX} | sed -e 's/\\//\\\\\\//g'`
|
|
||||||
sed -i .bak -e "s/${ESCAPED_MACPORTS_PREFIX}/@executable_path/g" ${ETC}/gtk-2.0/gdk-pixbuf.loaders ${ETC}/gtk-2.0/gtk.immodules ${ETC}/pango/pango.modules
|
|
||||||
echo -e "[Pango]\nModuleFiles = /tmp/${EXECUTABLE}_pango.modules" > ${ETC}/pango/pangorc
|
|
||||||
rm ${LIB}/gdk-pixbuf-2.0/2.10.0/loaders.cache
|
|
||||||
|
|
||||||
#Copy over the release files
|
|
||||||
echo "Copying release files..."
|
|
||||||
cp -R ${RELEASE}/* ${MACOS}
|
|
||||||
|
|
||||||
#Copy application-specific stuff like icons and startup script
|
|
||||||
echo "Creating required application bundle files..."
|
|
||||||
cp ./tools/osx/Info.plist ${CONTENTS}
|
|
||||||
cp tools/osx/Icons.icns ${RESOURCES}
|
|
||||||
cp tools/osx/start ${MACOS}
|
|
||||||
|
|
||||||
#Copy and relink the explicitly defined libraries
|
|
||||||
echo "Recursively copying libraries referenced by executable..."
|
|
||||||
checkLink "${MACOS}/${EXECUTABLE}"
|
|
||||||
|
|
||||||
|
|
||||||
#Make a .dmg for distribution and delete the .app
|
|
||||||
echo "Creating distribution .dmg..."
|
|
||||||
hdiutil create -srcdir ${APP} ${RELEASE}/${DMG}
|
|
||||||
echo "Cleaning up..."
|
|
||||||
rm -rf ${APP}
|
|
||||||
|
|
||||||
cd ${RELEASE}
|
|
||||||
zip ${DMG}.zip ${DMG} AboutThisBuild.txt
|
|
||||||
|
|
||||||
echo "All done!"
|
|
@@ -1,19 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
CWD=`dirname "$0"`
|
|
||||||
echo $CWD
|
|
||||||
|
|
||||||
export DYLD_LIBRARY_PATH="${CWD}/lib:$DYLD_LIBRARY_PATH"
|
|
||||||
export GTK_DATA_PREFIX="${CWD}"
|
|
||||||
export GTK_DATA_DIRS="${CWD}"
|
|
||||||
export GTK_EXE_PREFIX="${CWD}"
|
|
||||||
export GTK_PATH="${CWD}"
|
|
||||||
|
|
||||||
export GTK2_RC_FILES="${CWD}/etc/gtk-2.0/gtkrc"
|
|
||||||
export GTK_IM_MODULE_FILE="${CWD}/gtk-2.0/gtk.immodules"
|
|
||||||
export GDK_PIXBUF_MODULE_FILE="${CWD}/etc/gtk-2.0/gdk-pixbuf.loaders"
|
|
||||||
export PANGO_RC_FILE="${CWD}/etc/pango/pangorc"
|
|
||||||
|
|
||||||
cp "${CWD}/etc/pango/pango.modules" /tmp/rawtherapee_pango.modules
|
|
||||||
|
|
||||||
"${CWD}/rawtherapee"
|
|
Reference in New Issue
Block a user