-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
176 lines (143 loc) · 4.59 KB
/
Makefile
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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
# By Charles Childers and Marc Simpson
# Changed by Edrx
# (find-node "(make)Conditional Example")
# (find-node "(make)Conditional Syntax")
# (find-node "(make)Echoing")
# (find-node "(make)Flavors")
# (find-anggfile "RETRO/libretro.c" "NOMAIN")
# (find-gccnode "Link Options" "`-shared'")
# (find-angg ".zshrc" "lua")
# «.help» (to "help")
# «.tarball» (to "tarball")
# «.lua» (to "lua")
# «.luarocks» (to "luarocks")
# «.shared» (to "shared")
# «.libretro.so» (to "libretro.so")
# «.runluatest» (to "runluatest")
# «.retro.so» (to "retro.so")
# «.clean» (to "clean")
# «help» (to ".help")
# (find-dn4 "Makefile" "help")
# (find-sh "cd ~/RETRO/ && make")
default help:
@echo "Usage:"
@echo " make runluatest downloads & builds lua, runs the lua-ish test"
# «tarball» (to ".tarball")
# (find-dn4 "Makefile" "tarball")
FILES = README VERSION Makefile \
libretro.c retroImage \
luaretro.c test.lua \
retro-0.0.1-0.rockspec
tgz:
(TZ=GMT date; date) | tee VERSION
tar -cvzf luaretro.tgz $(FILES)
# «lua» (to ".lua")
# Download and build lua5.1.
# From: (find-dn4 "Makefile" "lua")
wget = wget
S = $(PWD)/snarf
USRC = $(PWD)/usrc
LUAURL = http://www.lua.org/ftp/lua-5.1.4.tar.gz
LUATGZ = $(S)/http/www.lua.org/ftp/lua-5.1.4.tar.gz
LUATGZDIR = $(S)/http/www.lua.org/ftp/
LUASRC = $(USRC)/lua-5.1.4
LUA51_ = $(LUASRC)/bin/lua
LUA51 = $(PWD)/lua51
LUAOS = linux
luadownload: $(LUATGZ)
$(LUATGZ):
mkdir -p $(LUATGZDIR)
cd $(LUATGZDIR) && \
$(wget) $(LUAURL)
cleanluabuild:
rm -Rfv $(LUASRC)/
luabuild: $(LUA51_)
$(LUA51_): $(LUATGZ)
rm -Rfv $(LUASRC)/
mkdir -p $(USRC)/
tar -C $(USRC)/ -xvzf $(LUATGZ)
cd $(LUASRC) && make $(LUAOS) local test
lua51 $(LUA51): $(LUA51_)
cp -v $(LUA51_) $(LUA51)
# «luarocks» (to ".luarocks")
# (find-es "lua5" "luarocks")
# http://luarocks.org/releases/
# http://luarocks.org/releases/luarocks-2.0.4.1.tar.gz
LUAROCKSURL = http://luarocks.org/releases/luarocks-2.0.4.1.tar.gz
LUAROCKSTGZ = $(S)/http/luarocks.org/releases/luarocks-2.0.4.1.tar.gz
LUAROCKSTGZDIR = $(S)/http/luarocks.org/releases/
LUAROCKSSRC = $(USRC)/luarocks-2.0.4.1
LUAROCKSDIR = $(USRC)/luarocks
LUAROCKSBIN_ = $(LUAROCKSDIR)/bin/luarocks
LUAROCKSBIN = $(PWD)/luarocks
luarocksdownload: $(LUAROCKSTGZ)
$(LUAROCKSTGZ):
mkdir -p $(LUAROCKSTGZDIR)
cd $(LUAROCKSTGZDIR) && \
$(wget) $(LUAROCKSURL)
cleanluarocksbuild:
rm -Rfv $(LUAROCKSSRC)/
rm -Rfv $(LUAROCKSDIR)/
luarocksbuild: $(LUAROCKSBIN_)
$(LUAROCKSBIN_): lua51 $(LUAROCKSTGZ)
rm -Rfv $(LUAROCKSSRC)/
mkdir -p $(USRC)/
tar -C $(USRC)/ -xvzf $(LUAROCKSTGZ)
cd $(LUAROCKSSRC) && ./configure --help
cd $(LUAROCKSSRC) && ./configure --with-lua=$(LUASRC) --prefix=$(LUAROCKSDIR)
cd $(LUAROCKSSRC) && make install
luarocks $(LUAROCKSBIN): $(LUAROCKSBIN_)
cp -v $(LUAROCKSBIN_) $(LUAROCKSBIN)
rockmake: luarocks
$(LUAROCKSBIN) make retro-0.0.1-0.rockspec
rockpack: luarocks
$(LUAROCKSBIN) pack retro-0.0.1-0.rockspec
# (find-angg "peek/peek-0.0.1-0.rockspec")
# «shared» (to ".shared")
# Marc's trick to make the option "LUAOS=macosx" also adjust how
# shared libraries are built
ifeq ($(LUAOS),macosx)
SHARED = -dynamiclib -Wl,-undefined,dynamic_lookup
else
SHARED = -shared
endif
# «libretro.so» (to ".libretro.so")
# The original test by Charles and Marc, slightly changed.
# Here we build a .so ("libretro.so") and an executable ("test")
# thats loads the .so dynamically.
# (find-RETRO "libretro.c")
# (find-RETRO "test.c")
libretro.so: libretro.c
gcc -g -O0 -Wall -fPIC -DNOMAIN $(SHARED) libretro.c -o libretro.so
test: test.c
gcc -g -O0 -Wall -ldl test.c -o test
# «runluatest» (to ".runluatest")
# «retro.so» (to ".retro.so")
# Here we build a lua library ("retro.so") from libretro.c and
# luaretro.c, and we load it from lua.
# Note that the dependency "lua51" downloads and builds lua in the
# current directory.
# (find-RETRO "luaretro.c")
# (find-RETRO "test.lua")
libretro.o: libretro.c
gcc -g -O0 -Wall -fPIC -DNOMAIN -c libretro.c -o libretro.o
luaretro.o: lua51 luaretro.c
gcc -g -O0 -Wall -fPIC -I$(LUASRC)/include -c luaretro.c -o luaretro.o
retro.so: lua51 libretro.o luaretro.o
gcc $(SHARED) -o retro.so -L$(LUASRC)/lib -llua libretro.o luaretro.o
runluatest: lua51 retro.so
$(LUA51) test.lua
# «clean» (to ".clean")
clean:
rm -fv libretro.so
rm -fv libretro.o luaretro.o retro.so
# The "cleanlocal" targets don't delete anything outside the local dirs
cleanlocallua:
rm -Rfv usr/lua-5.1.4/ lua51
cleanlocaldownloads:
# ?
veryclean: clean cleanlocallua
# Local Variables:
# coding: raw-text-unix
# ee-anchor-format: "«%s»"
# End: