-
Notifications
You must be signed in to change notification settings - Fork 2
/
Makefile.MacOSX.insani
141 lines (134 loc) · 6.75 KB
/
Makefile.MacOSX.insani
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# -*- Makefile.MacOSX.insani -*-
#
# -------
# ENGLISH
# -------
# Makefile rules for macOS + homebrew
#
# This makefile assumes homebrew, installed in its default location.
# See README for setup details.
#
# The APPBUNDLE define needs to be explained further. You should only
# compile with this defined if you are creating a macOS app bundle for
# a specific game. It will have the following effects:
#
# - Save .sav and envdata files in ~/Documents/<executable name>
# - Load from the above location
# - Look for game assets in <executable name>.app/Contents/Resources
#
# After you compile the onscripter binary with APPBUNDLE defined, you
# will want to generate an appropriate iconset (ICNS file) that you will
# name icon.icns. We've supplied an automated script for this -- it's
# ./makeICNS.MacOSX.sh. This script has several prerequisites, including
# the xcode command line tools and ImageMagick (brew install ImageMagick).
# You also need to supply a square image file of just about any sort --
# we recommend PNGs of 1024x1024 resolution. The script will handle all
# of the resizing and the creation of the ICNS file. After you have the
# ICNS file, run ./makedist.MacOSX.sh after modifying it to put your
# game name in as the APP_NAME variable (e.g. "Radiata"). You will
# wind up with a fully-featured game-specific macOS app bundle.
#
# If you want to create a generic onscripter-insani that saves to and
# loads from the same folder where the game assets are, then you should
# categorically not use the APPBUNDLE define, but you should still run
# ./makedist.MacOSX.sh after compilation. You will wind up with a generic
# macOS app bundle for onscripter-insani that will behave like a portable
# executable -- just drag and drop it wherever the game assets are, and
# start it up.
#
# In either case, if you want to actually distribute your app bundle, you
# will need to:
#
# - Fork $99/year over to Apple for an Apple Developer account
# - Get your Application Developer and Application Installer certificates
# - Code-sign your app bundle properly
# - Generate either your DMG or your PKG and code-sign *it* properly
# - Notarize your DMG/PKG (which involves uploading it to Apple)
# - Staple the successful notarization to your DMG/PKG
#
# Discussion of how to do this is well beyond the scope of this Makefile,
# but the below is quite a helpful resource:
#
# https://stackoverflow.com/questions/64652704/how-to-notarize-an-macos-command-line-tool-created-outside-of-xcode
#
# --------
# FRANÇAIS
# --------
# Règles Makefile pour macOS + homebrew
#
# Ce makefile présume que homebrew est installé dans son emplacement par
# défaut. Consultez la note LISEZMOI pour les détails de l'installation.
#
# La définition APPBUNDLE doit être expliquée plus en détail. Vous ne
# devriez compiler avec cette définition que si vous créez un app bundle
# macOS pour un jeu spécifique. Elle aura les effets suivants :
#
# - Sauvegarder les fichiers .sav et envdata dans ~/Documents/<nom exéc.>
# - Chargement à partir de l'emplacement ci-dessus
# - Rechercher les ressources du jeu dans <exéc.>.app/Contents/Ressources
#
# Après avoir compilé le binaire onscripter avec APPBUNDLE défini, vous
# devriez générer un jeu d'icônes approprié (fichier ICNS) que vous
# nommerez icon.icns. Nous avons fourni un script automatisé pour cela
# -- il s'agit de ./makeICNS.MacOSX.sh. Ce script a plusieurs pré-requis,
# dont les outils xcode et ImageMagick (brew install ImageMagick).
# Vous devez également fournir un fichier image carré de n'importe quelle
# sorte -- nous recommandons les PNG de résolution 1 024 x 1 024.
# Le script s'occupera de tout le redimensionnement et la création du
# fichier ICNS. Une fois que vous avez le fichier ICNS, exécutez
# ./makedist.MacOSX.sh après l'avoir modifié pour y mettre le nom du jeu
# dans la variable APP_NAME (par exemple 'Radiata'). Vous obtiendrez un
# app bundle macOS spécifique au jeu, avec toutes ses fonctionnalités.
#
# Si vous voulez créer un onscripter-insani générique qui sauvegarde et
# charge à partir du même dossier que les ressources du jeu, alors vous
# devez catégoriquement ne pas utiliser la définition APPBUNDLE, mais vous
# devriez quand même exécuter ./makedist.MacOSX.sh après la compilation.
# Vous obtiendrez un app bundle macOS générique pour onscripter-insani qui
# se comportera comme un exécutable portable - il suffit de le glisser et
# déposer là où se trouvent les ressources du jeu, et de le démarrer.
#
# Dans les deux cas, si vous souhaitez distribuer votre app bundle,
# vous devrez :
#
# - Payer 99$/an à Apple pour un compte Apple Developer
# - Obtenir vos certificats de dév. d'app. et d'installateur d'app.
# - Signer le code de votre app bundle correctement
# - Générer votre DMG ou votre PKG et signez-*le* correctement.
# - Notariser votre DMG/PKG (ce qui implique de l'envoyer à Apple)
# - Lier la notarisation réussie à votre DMG/PKG
#
# La discussion sur la façon de procéder dépasse largement le cadre de ce
# Makefile, mais le document ci-dessous est une ressource très utile :
#
# https://stackoverflow.com/questions/64652704/how-to-notarize-an-macos-command-line-tool-created-outside-of-xcode
#
ifeq ($(shell arch), arm64)
# Turn this on for ARM64
INCS = `sdl-config --cflags` `smpeg-config --cflags` `freetype-config --cflags` -I/opt/homebrew/include -I/opt/homebrew/include/harfbuzz
else
# Turn this on for x86-64
INCS = `sdl-config --cflags` `smpeg-config --cflags` `freetype-config --cflags` -I/usr/local/include -I/usr/local/include/harfbuzz
endif
# Turn this on to debug
#LIBS = `sdl-config --libs` `smpeg-config --libs` `freetype-config --libs` -lSDL_ttf -lSDL_image -lSDL_mixer -lbz2 -lm -ljpeg -lmpg123 -F/Library/Frameworks -framework AVFoundation -framework CoreFoundation -framework Foundation -framework SDL2 -framework Cocoa
# Turn this on for redist build
LIBS = `sdl-config --libs` `smpeg-config --libs` `freetype-config --libs` -lSDL_ttf -lSDL_image -lSDL_mixer -lbz2 -lm -ljpeg -lharfbuzz -framework AVFoundation -framework CoreFoundation -framework Foundation
DEFS = -DMACOSX -DUSE_CDROM -DUTF8_CAPTION -DUSE_OGG_VORBIS -DUTF8_FILESYSTEM -DINSANI -DENABLE_1BYTE_CHAR -DFORCE_1BYTE_CHAR
#DEFS += -DAPPBUNDLE
EXESUFFIX =
OBJSUFFIX = .o
.SUFFIXES:
.SUFFIXES: $(OBJSUFFIX) .cpp .h
CC = c++
# Turn this on to debug
#LD = c++ -fsanitize=address -fno-omit-frame-pointer -o
# Turn this on for redist build
LD = c++ -o
# Turn this on to debug
#CFLAGS = -g -ObjC++ -Wall -fsanitize=address -fno-omit-frame-pointer -Wpointer-arith -pipe -c $(INCS) $(DEFS)
# Turn this on for redist build
CFLAGS = -g -ObjC++ -O3 -Wall -Wpointer-arith -pipe -c $(INCS) $(DEFS)
RM = rm -f
TARGET = onscripter$(EXESUFFIX) sardec$(EXESUFFIX) nsadec$(EXESUFFIX) sarconv$(EXESUFFIX) nsaconv$(EXESUFFIX)
include Makefile.onscripter