Subversion Repositories Games.Rick Dangerous

Rev

Rev 11 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 11 Rev 13
Line 1... Line 1...
1
#!/bin/sh
1
#!/bin/sh
2
 
2
 
3
MY_PATH="$(dirname "$0")"
3
MY_PATH="$(dirname "$0")"
4
 
4
 
5
APP_NAME="Rick Dangerous"
5
APP_NAME="Rick Dangerous"
6
APP_VERSION="1.4"
6
APP_VERSION="1.5"
7
APP_COPYRIGHT=2016 Pierre-Marie Baty
7
APP_COPYRIGHT=2024 Pierre-Marie Baty
8
© 2002 BigOrno
8
© 2002 BigOrno
9
© 1989 CORE Design
9
© 1989 CORE Design
10
Artwork by Simon Phipps"
10
Artwork by Simon Phipps"
11
BUNDLE_ID="com.pmbaty.rick.rickdangerous"
11
BUNDLE_ID="com.pmbaty.rickdangerous"
12
ICON_FILE="icon.png"
12
ICON_FILE="icon.png"
-
 
13
CS_IDENTITY="Apple Distribution: Pierre-Marie Baty"
13
 
14
 
14
# compiler and linker flags to use
15
# compiler and linker flags to use
15
CPPFLAGS="-Isrc -Ilib/SDL2/include"
16
CPPFLAGS="-Isrc -Ilib/SDL2/include"
16
LDFLAGS=""
17
LDFLAGS=""
17
 
18
 
Line 72... Line 73...
72
 
73
 
73
        # generate and deploy fat Mach-O executable
74
        # generate and deploy fat Mach-O executable
74
        echo "Generating fat executable..."
75
        echo "Generating fat executable..."
75
        lipo ${THIN_OUTPUTS} -create -output "${APP_NAME}.app/Contents/MacOS/${APP_NAME}" || exit 1
76
        lipo ${THIN_OUTPUTS} -create -output "${APP_NAME}.app/Contents/MacOS/${APP_NAME}" || exit 1
76
 
77
 
77
        # deploy the SDL2 framework
78
        # deploy the SDL2 framework without the symlinks and change the LC_LOAD_DYLIB in the main executable
-
 
79
        # (macOS codesign will refuse to sign the executable if a bundled framework contains symlinks)
78
        echo "Deploying SDL2 framework..."
80
        echo "Deploying SDL2 framework..."
79
        mkdir "${APP_NAME}.app/Contents/Frameworks/SDL2.framework"                                                     || exit 1
81
        mkdir "${APP_NAME}.app/Contents/Frameworks/SDL2.framework"                                          || exit 1
80
        mkdir "${APP_NAME}.app/Contents/Frameworks/SDL2.framework/Versions"                                            || exit 1
82
        cp lib/SDL2/macOS/SDL2.framework/SDL2 "${APP_NAME}.app/Contents/Frameworks/SDL2.framework/SDL2"     || exit 1
81
        mkdir "${APP_NAME}.app/Contents/Frameworks/SDL2.framework/Versions/A"                                          || exit 1
83
        install_name_tool -change "@rpath/SDL2.framework/Versions/A/SDL2" "@rpath/SDL2.framework/SDL2" "${APP_NAME}.app/Contents/MacOS/${APP_NAME}"
82
        cp lib/SDL2/macOS/SDL2.framework/SDL2 "${APP_NAME}.app/Contents/Frameworks/SDL2.framework/Versions/A/SDL2"     || exit 1
84
        cp -LR lib/SDL2/macOS/SDL2.framework/Resources "${APP_NAME}.app/Contents/Frameworks/SDL2.framework" || exit 1
83
        ln -s Versions/A/SDL2 "${APP_NAME}.app/Contents/Frameworks/SDL2.framework/SDL2"                                || exit 1
85
        find "${APP_NAME}.app/Contents/Frameworks/SDL2.framework" -name Thumbs.db -exec rm {} \;
84
        cp -LR lib/SDL2/macOS/SDL2.framework/Resources "${APP_NAME}.app/Contents/Frameworks/SDL2.framework/Versions/A" || exit 1
86
        find "${APP_NAME}.app/Contents/Frameworks/SDL2.framework" -name .DS_Store -exec rm {} \;
85
        ln -s Versions/A/Resources "${APP_NAME}.app/Contents/Frameworks/SDL2.framework/Resources"                      || exit 1
87
        find "${APP_NAME}.app/Contents/Frameworks/SDL2.framework" -type f -exec chmod -x {} \;
86
 
88
 
87
        # deploy the game data
89
        # deploy the game data, remove executable flags from files and remove junk files
88
        echo "Deploying game data..."
90
        echo "Deploying game data..."
89
        cp -LR sounds "${APP_NAME}.app/Contents/Resources" || exit 1
91
        cp -LR sounds "${APP_NAME}.app/Contents/Resources" || exit 1
-
 
92
        find "${APP_NAME}.app/Contents/Resources" -name Thumbs.db -exec rm {} \;
-
 
93
        find "${APP_NAME}.app/Contents/Resources" -name .DS_Store -exec rm {} \;
-
 
94
        find "${APP_NAME}.app/Contents/Resources" -type f -exec chmod -x {} \;
90
 
95
 
91
        # generate and deploy the app icon
96
        # generate and deploy the app icon
92
        echo "Generating app icon..."
97
        echo "Generating app icon..."
93
        mkdir ".build/${APP_NAME}.iconset" || exit 1
98
        mkdir ".build/${APP_NAME}.iconset" || exit 1
94
        sips -z 16 16     "${ICON_FILE}" --out ".build/${APP_NAME}.iconset/icon_16x16.png"      > /dev/null
99
        sips -z 16 16     "${ICON_FILE}" --out ".build/${APP_NAME}.iconset/icon_16x16.png"      > /dev/null
Line 133... Line 138...
133
                echo "  <key>CFBundleSignature</key>"
138
                echo "  <key>CFBundleSignature</key>"
134
                echo "  <string>????</string>"
139
                echo "  <string>????</string>"
135
                echo "</dict>"
140
                echo "</dict>"
136
                echo "</plist>"
141
                echo "</plist>"
137
        ) > "${APP_NAME}.app/Contents/Info.plist" || exit 1
142
        ) > "${APP_NAME}.app/Contents/Info.plist" || exit 1
-
 
143
 
-
 
144
        # code signing is mandatory
-
 
145
        codesign --force --deep --sign "${CS_IDENTITY}" --timestamp "${APP_NAME}.app"
138
 
146
 
139
        echo "Output app bundle: ${APP_NAME}.app"
147
        echo "Output app bundle: ${APP_NAME}.app"
-
 
148
 
-
 
149
        # zip on Mac to preserve executable flags
-
 
150
        zip -r "${APP_NAME} (Mac).zip" "${APP_NAME}.app" && echo "A Zip file of the app bundle was created for convenience."
140
else
151
else
141
        # Linux/BSD/whatever: simply retrieve the compiled executable
152
        # Linux/BSD/whatever: simply retrieve the compiled executable
142
        cp ".build/${ARCH}/a.out" "${APP_NAME}.$(uname)-$(uname -m)"
153
        cp ".build/${ARCH}/a.out" "${APP_NAME}.$(uname)-$(uname -m)"
143
 
154
 
144
        echo "Output executable: ${APP_NAME}.$(uname)-$(uname -m)"
155
        echo "Output executable: ${APP_NAME}.$(uname)-$(uname -m)"
145
fi
156
fi
146
 
157
 
147
# finished
158
# finished
148
echo "${APP_NAME} was built successfully"
159
echo "${APP_NAME} was built successfully"
149
exit 0
-
 
150
 
-
 
151
 
-
 
152
 
-
 
153
 
-
 
154
 
-
 
155
 
-
 
156
 
-
 
157
 
-
 
158
 
-
 
159
 
-
 
160
 
-
 
161
 
-
 
162
rm -rf "${APP_NAME}.app"
-
 
163
 
-
 
164
# create app bundle
-
 
165
echo "Creating macOS app layout..."
-
 
166
mkdir "${APP_NAME}.app"                     || exit 1
-
 
167
mkdir "${APP_NAME}.app/Contents"            || exit 1
-
 
168
mkdir "${APP_NAME}.app/Contents/MacOS"      || exit 1
-
 
169
mkdir "${APP_NAME}.app/Contents/Frameworks" || exit 1
-
 
170
mkdir "${APP_NAME}.app/Contents/Resources"  || exit 1
-
 
171
 
-
 
172
# target El Capitan
-
 
173
for ARCH in x86_64 arm64; do
-
 
174
        cc -mmacosx-version-min=10.11 -arch "${ARCH}" *.c osx-sdlmain.m -I3rdparty/SDL2/include -framework Foundation -framework Cocoa -F3rdparty/SDL2/macOS -framework SDL2 -rpath "@loader_path/../Frameworks" -o "${APP_NAME}.mac-${ARCH}"
-
 
175
        if [ ! "_$?" = "_0" ]; then
-
 
176
                rm -rf "${APP_NAME}.app"
-
 
177
                exit 1
-
 
178
        fi
-
 
179
done
-
 
180
lipo "${APP_NAME}.mac-x86_64" "${APP_NAME}.mac-arm64" -create -output "${APP_NAME}.app/Contents/MacOS/${APP_NAME}"
-
 
181
if [ ! "_$?" = "_0" ]; then
-
 
182
        rm "${APP_NAME}.mac-x86_64" "${APP_NAME}.mac-arm64"
-
 
183
        rm -rf "${APP_NAME}.app"
-
 
184
        exit 1
-
 
185
fi
-
 
186
rm "${APP_NAME}.mac-x86_64" "${APP_NAME}.mac-arm64"
-
 
187
 
-
 
188
# deploy the SDL2 framework
-
 
189
mkdir "${APP_NAME}.app/Contents/Frameworks/SDL2.framework" || exit 1
-
 
190
mkdir "${APP_NAME}.app/Contents/Frameworks/SDL2.framework/Versions" || exit 1
-
 
191
mkdir "${APP_NAME}.app/Contents/Frameworks/SDL2.framework/Versions/A" || exit 1
-
 
192
cp 3rdparty/SDL2/macOS/SDL2.framework/SDL2 "${APP_NAME}.app/Contents/Frameworks/SDL2.framework/Versions/A/SDL2" || exit 1
-
 
193
ln -s Versions/A/SDL2 "${APP_NAME}.app/Contents/Frameworks/SDL2.framework/SDL2" || exit 1
-
 
194
cp -LR 3rdparty/SDL2/macOS/SDL2.framework/Resources "${APP_NAME}.app/Contents/Frameworks/SDL2.framework/Versions/A" || exit 1
-
 
195
ln -s Versions/A/Resources "${APP_NAME}.app/Contents/Frameworks/SDL2.framework/Resources" || exit 1
-
 
196
 
-
 
197
# deploy icon
-
 
198
mkdir "__${APP_NAME}.iconset"
-
 
199
sips -z 16 16     "${ICON_FILE}" --out "__${APP_NAME}.iconset/icon_16x16.png"      > /dev/null
-
 
200
sips -z 32 32     "${ICON_FILE}" --out "__${APP_NAME}.iconset/icon_16x16@2x.png"   > /dev/null
-
 
201
sips -z 32 32     "${ICON_FILE}" --out "__${APP_NAME}.iconset/icon_32x32.png"      > /dev/null
-
 
202
sips -z 64 64     "${ICON_FILE}" --out "__${APP_NAME}.iconset/icon_32x32@2x.png"   > /dev/null
-
 
203
sips -z 128 128   "${ICON_FILE}" --out "__${APP_NAME}.iconset/icon_128x128.png"    > /dev/null
-
 
204
sips -z 256 256   "${ICON_FILE}" --out "__${APP_NAME}.iconset/icon_128x128@2x.png" > /dev/null
-
 
205
sips -z 256 256   "${ICON_FILE}" --out "__${APP_NAME}.iconset/icon_256x256.png"    > /dev/null
-
 
206
sips -z 512 512   "${ICON_FILE}" --out "__${APP_NAME}.iconset/icon_256x256@2x.png" > /dev/null
-
 
207
sips -z 512 512   "${ICON_FILE}" --out "__${APP_NAME}.iconset/icon_512x512.png"    > /dev/null
-
 
208
sips -z 1024 1024 "${ICON_FILE}" --out "__${APP_NAME}.iconset/icon_512x512@2x.png" > /dev/null
-
 
209
iconutil -c icns "__${APP_NAME}.iconset"
-
 
210
if [ ! "_$?" = "_0" ]; then
-
 
211
        rm -rf "__${APP_NAME}.iconset"
-
 
212
        rm -rf "${APP_NAME}.app"
-
 
213
        exit 1
-
 
214
fi
-
 
215
rm -rf "__${APP_NAME}.iconset"
-
 
216
mv "__${APP_NAME}.icns" "${APP_NAME}.app/Contents/Resources/${APP_NAME}.icns"
-
 
217
 
-
 
218
# deploy resources
-
 
219
cp -r "../sounds" "${APP_NAME}.app/Contents/Resources"
-
 
220
 
-
 
221
# create PkgInfo file
-
 
222
printf "%s" "APPL???" > "${APP_NAME}.app/Contents/PkgInfo"
-
 
223
 
-
 
224
# create Info.plist
-
 
225
(
-
 
226
        echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
-
 
227
        echo "<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">"
-
 
228
        echo "<plist version=\"1.0\">"
-
 
229
        echo "<dict>"
-
 
230
        echo "  <key>CFBundleDevelopmentRegion</key>"
-
 
231
        echo "  <string>en</string>"
-
 
232
        echo "  <key>CFBundleExecutable</key>"
-
 
233
        echo "  <string>${APP_NAME}</string>"
-
 
234
        echo "  <key>CFBundleIconFile</key>"
-
 
235
        echo "  <string>${APP_NAME}.icns</string>"
-
 
236
        echo "  <key>CFBundleIdentifier</key>"
-
 
237
        echo "  <string>${BUNDLE_ID}</string>"
-
 
238
        echo "  <key>CFBundleInfoDictionaryVersion</key>"
-
 
239
        echo "  <string>6.0</string>"
-
 
240
        echo "  <key>CFBundleName</key>"
-
 
241
        echo "  <string>${APP_NAME}</string>"
-
 
242
        echo "  <key>CFBundleVersion</key>"
-
 
243
        echo "  <string>${APP_VERSION}</string>"
-
 
244
        echo "  <key>NSHumanReadableCopyright</key>"
-
 
245
        echo "  <string>${APP_COPYRIGHT}</string>"
-
 
246
        echo "  <key>CFBundlePackageType</key>"
-
 
247
        echo "  <string>APPL</string>"
-
 
248
        echo "  <key>CFBundleSignature</key>"
-
 
249
        echo "  <string>????</string>"
-
 
250
        echo "</dict>"
-
 
251
        echo "</plist>"
-
 
252
) > "${APP_NAME}.app/Contents/Info.plist"
-
 
253
 
-
 
254
# finished
-
 
255
echo "${APP_NAME} was built successfully"
-
 
256
exit 0
160
exit 0