forked from cymonsgames/ASCIIpOrtal
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile.example
138 lines (104 loc) · 4.21 KB
/
Makefile.example
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
# Example child Makefile for ASCIIpOrtal.
# If you'd like to port ASCIIpOrtal to a different architecture/system,
# please copy this example and edit it as needed.
# 'Makefile.common' defines the following variables (actually, these are macros):
# - ASCIIPORTAL: base name for asciiportal
# - AP_VERSION: version
# - DISTNAME: base name for the generated tarball
# - CXXFLAGS: options passed to the c++ compiler
# - LINKFLAGS: options passed to the linker
# - FILES_INCLUDE_DIST: files to include in the release tarball
# - OBJECTS_NOSOUND: the bare list of .o objects needed to build
# - OBJECTS: same thing with sound support
# A target is also defined:
# - saveclean: remove any 'save.dat' file in mappacks
include Makefile.common
# Set this to the system and/or architecture against which
# you're building (eg. 'win32', 'linux64', 'gp2x').
# Note that your Makefile MUST have this appended to its name
# (eg. here, the Makefile is called 'Makefile.example')
PORT = example
### Customisable variables ###
# Custom base name: everything (binary, tarballs) will be built using this base name.
# Unless heavy changes in the codebase (eg. a mod), you should use DISTNAME instead.
#ASCIIPORTAL := $(ASCIIPORTAL)-mod
# Custom base name for release (tarball). Keeping '-$(PORT)' is generally a good option,
# but feel free to change it.
#DISTNAME := $(DISTNAME)-$(PORT)
# Custom C flags: you may define ('-D') or unset ('-U') macros to get your specific
# code to work.
#CXXFLAGS := $(CXXFLAGS) -I/usr/example -D__NOSDL__ -D__NOSOUND__ -U__DINGOO__ -U__GP2X__
# Custom link flags: either dynamic (default) or static linking (see the last form,
# 'man ld' for details).
#LINKFLAGS := $(LINKFLAGS) `sdl-config --libs` -L/usr/lib -l SDL_mixer -l :libpdcurses.a
# Additional files to be included in release tarball.
#FILES_INCLUDE_DIST := $(FILES_INCLUDE_DIST) custom_readme.txt example.dll foo/bar.xml
### Required variables ###
# C++ compiler. You might want to change this for cross-compilation.
CXX = g++
# Tarball name for release. You should not edit anything excepted the extension,
# see DISTNAME above.
#TARBALL = $(DISTNAME).zip
TARBALL = $(DISTNAME).tar.xz
# Final executable name. Same thing, you should only edit the extension.
#EXE_NAME = $(ASCIIPORTAL).exe
EXE_NAME = $(ASCIIPORTAL).x86_64
### Custom variables ###
# This is where you can manage additional variables. See 'Makefile.mingw32' for
# an example (downloading SDL dlls for windows).
### Required targets ###
# Dummy target if called directly
wrong-way:
@echo
@echo "[*] This Makefile is not intended to be run directly."
@echo "[*] Instead, call the main Makefile with the proper target!"
@echo "[*] In most cases, a simple 'make' should work though."
# Targets called by the main Makefile:
$(PORT):
$(MAKE) -f Makefile.$(PORT) clean execlean
$(MAKE) -f Makefile.$(PORT) $(EXE_NAME)
$(MAKE) -f Makefile.$(PORT) clean
dist:
$(MAKE) -f Makefile.$(PORT) clean execlean distclean saveclean
$(MAKE) -f Makefile.$(PORT) $(TARBALL)
$(MAKE) -f Makefile.$(PORT) clean execlean
all:
$(MAKE) -f Makefile.$(PORT) dist
# This is supposed to work out-of-the-box
%.o: src/%.cpp
$(CXX) -c $(CXXFLAGS) $<
# Replace by OBJECTS_NOSOUND if needed
$(EXE_NAME): $(OBJECTS)
$(CXX) $^ $(LINKFLAGS) -o $@
@echo
@echo "[*] $(EXE_NAME) successfully built."
# You might want to add additional targets here (see 'Makefile.mingw32')
$(TARBALL): $(EXE_NAME)
mkdir $(DISTNAME)
cp -r $(EXE_NAME) $(FILES_INCLUDE_DIST) $(DISTNAME)
# zip -r $@ $(DISTNAME) # zip is bad, but anyway...
# tar czf $@ $(DISTNAME) # tar.gz
# tar cjf $@ $(DISTNAME) # tar.bz2
tar cJf $@ $(DISTNAME) # tar.xz
rm -rf $(DISTNAME)
# This is only to test if the tarball was really generated
ls $(TARBALL)
@echo
@echo "[*] $(TARBALL) successfully generated."
# This is supposed to clean anything you've added/compiled, excepted the
# main executable
clean:
# This does some basic cleaning, see 'Makefile'
$(MAKE) clean
# Custom cleaning
# rm -f mydll.dll anotherone.dll
# rm -rf crappy-temp-dir/
# Clean the generated executable
execlean:
rm -f $(EXE_NAME)
# Clean the generated tarball
distclean:
rm -f $(TARBALL)
### Custom targets ###
# This is for targets you would need somewhere. Again, see 'Makefile.mingw32'
# for an example