Skip to content

Commit bd5d9e9

Browse files
committed
initial implementation
1 parent 0afc64d commit bd5d9e9

File tree

6 files changed

+530
-0
lines changed

6 files changed

+530
-0
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@
66
.DS_Store
77
.project
88
.settings
9+
perlin.so

TODO

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
TODO:
2+
3+
-- Write Makefile
4+
-- Add simplex noise
5+
-- Add Worley noise
6+
-- Write some tests

make.sh

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#! /bin/bash
2+
3+
gcc src/perlin.c $LDFLAGS -llua -dynamiclib -undefined dynamic_lookup -o perlin.so

src/Makefile

+337
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,337 @@
1+
## CONFIGURATION ##############################################################
2+
3+
LUA_DIR := /usr/local
4+
LUA_LIBDIR := $(LUA_DIR)/lib/lua/5.1
5+
LUA_INCDIR := $(LUA_DIR)/include
6+
7+
PROJECTNAME := luabins
8+
9+
SONAME := $(PROJECTNAME).so
10+
ANAME := lib$(PROJECTNAME).a
11+
HNAME := $(PROJECTNAME).h
12+
TESTNAME := $(PROJECTNAME)-test
13+
TESTLUA := test.lua
14+
15+
LUA := lua
16+
CP := cp
17+
RM := rm -f
18+
RMDIR := rm -df
19+
MKDIR := mkdir -p
20+
CC := gcc
21+
LD := gcc
22+
AR := ar rcu
23+
RANLIB := ranlib
24+
ECHO := @echo
25+
TOUCH := touch
26+
27+
# Needed for tests only
28+
CXX := g++
29+
LDXX := g++
30+
31+
OBJDIR := ./obj
32+
TMPDIR := ./tmp
33+
INCDIR := ./include
34+
LIBDIR := ./lib
35+
36+
HFILE := $(INCDIR)/$(HNAME)
37+
38+
CFLAGS += -O2 -Wall
39+
LDFLAGS +=
40+
41+
# Tested on OS X and Ubuntu
42+
SOFLAGS :=
43+
ifeq ($(shell uname),Darwin)
44+
SOFLAGS += -dynamiclib -undefined dynamic_lookup
45+
else
46+
SOFLAGS += -shared
47+
LDFLAGS += -ldl
48+
RMDIR := rm -rf
49+
endif
50+
51+
## MAIN TARGETS ###############################################################
52+
53+
all: $(LIBDIR)/$(SONAME) $(LIBDIR)/$(ANAME) $(HFILE)
54+
55+
clean: cleanlibs cleantest
56+
$(RM) $(HFILE)
57+
58+
install: $(LIBDIR)/$(SONAME)
59+
# Note header and static library are not copied anywhere
60+
$(CP) $(LIBDIR)/$(SONAME) $(LUA_LIBDIR)/$(SONAME)
61+
62+
$(HFILE):
63+
$(CP) src/$(HNAME) $(HFILE)
64+
65+
## GENERATED RELEASE TARGETS ##################################################
66+
67+
cleanlibs: cleanobjects
68+
$(RM) $(LIBDIR)/$(SONAME)
69+
$(RM) $(LIBDIR)/$(ANAME)
70+
71+
$(LIBDIR)/$(SONAME): $(OBJDIR)/load.o $(OBJDIR)/luabins.o $(OBJDIR)/luainternals.o $(OBJDIR)/save.o
72+
$(MKDIR) $(LIBDIR)
73+
$(LD) -o $@ $(OBJDIR)/load.o $(OBJDIR)/luabins.o $(OBJDIR)/luainternals.o $(OBJDIR)/save.o $(LDFLAGS) $(SOFLAGS)
74+
75+
$(LIBDIR)/$(ANAME): $(OBJDIR)/load.o $(OBJDIR)/luabins.o $(OBJDIR)/luainternals.o $(OBJDIR)/save.o
76+
$(MKDIR) $(LIBDIR)
77+
$(AR) $@ $(OBJDIR)/load.o $(OBJDIR)/luabins.o $(OBJDIR)/luainternals.o $(OBJDIR)/save.o
78+
$(RANLIB) $@
79+
80+
# objects:
81+
82+
cleanobjects:
83+
$(RM) $(OBJDIR)/load.o $(OBJDIR)/luabins.o $(OBJDIR)/luainternals.o $(OBJDIR)/save.o
84+
85+
$(OBJDIR)/load.o: src/load.c src/luaheaders.h src/luabins.h \
86+
src/saveload.h src/luainternals.h
87+
$(CC) $(CFLAGS) -o $@ -c src/load.c
88+
89+
$(OBJDIR)/luabins.o: src/luabins.c src/luaheaders.h src/luabins.h
90+
$(CC) $(CFLAGS) -o $@ -c src/luabins.c
91+
92+
$(OBJDIR)/luainternals.o: src/luainternals.c src/luainternals.h
93+
$(CC) $(CFLAGS) -o $@ -c src/luainternals.c
94+
95+
$(OBJDIR)/save.o: src/save.c src/luaheaders.h src/luabins.h \
96+
src/saveload.h
97+
$(CC) $(CFLAGS) -o $@ -c src/save.c
98+
99+
## TEST TARGETS ###############################################################
100+
101+
test: testc89 testc99 testc++98
102+
$(ECHO) "===== TESTS PASSED ====="
103+
104+
resettest: resettestc89 resettestc99 resettestc++98
105+
106+
cleantest: cleantestc89 cleantestc99 cleantestc++98
107+
108+
## GENERATED TEST TARGETS #####################################################
109+
110+
## ----- Begin c89 -----
111+
112+
testc89: lua-testsc89 c-testsc89
113+
114+
lua-testsc89: $(TMPDIR)/c89/.luatestspassed
115+
116+
c-testsc89: $(TMPDIR)/c89/.ctestspassed
117+
118+
$(TMPDIR)/c89/.luatestspassed: $(TMPDIR)/c89/$(SONAME) test/$(TESTLUA)
119+
$(ECHO) "===== Running Lua tests for c89 ====="
120+
@$(LUA) \
121+
-e "package.cpath='$(TMPDIR)/c89/$(SONAME);'..package.cpath" \
122+
test/$(TESTLUA)
123+
$(TOUCH) $(TMPDIR)/c89/.luatestspassed
124+
$(ECHO) "===== Lua tests for c89 PASSED ====="
125+
126+
$(TMPDIR)/c89/.ctestspassed: $(TMPDIR)/c89/$(TESTNAME) test/$(TESTLUA)
127+
$(ECHO) "===== Running C tests for c89 ====="
128+
$(TMPDIR)/c89/$(TESTNAME)
129+
$(TOUCH) $(TMPDIR)/c89/.ctestspassed
130+
$(ECHO) "===== C tests for c89 PASSED ====="
131+
132+
$(TMPDIR)/c89/$(TESTNAME): $(OBJDIR)/c89-test.o $(TMPDIR)/c89/$(ANAME)
133+
$(MKDIR) $(TMPDIR)/c89
134+
$(LD) -o $@ $(OBJDIR)/c89-test.o $(LDFLAGS) -lm -llua -l$(PROJECTNAME) -L$(TMPDIR)/c89
135+
136+
resettestc89:
137+
$(RM) $(TMPDIR)/c89/.luatestspassed
138+
$(RM) $(TMPDIR)/c89/.ctestspassed
139+
140+
cleantestc89: cleanlibsc89 resettestc89 \
141+
cleantestobjectsc89
142+
$(RM) $(TMPDIR)/c89/$(TESTNAME)
143+
$(RMDIR) $(TMPDIR)/c89
144+
145+
# testobjectsc89:
146+
147+
cleantestobjectsc89:
148+
$(RM) $(OBJDIR)/c89-test.o
149+
150+
$(OBJDIR)/c89-test.o: test/test.c src/luabins.h
151+
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c89 -Isrc/ -o $@ -c test/test.c
152+
153+
cleanlibsc89: cleanobjectsc89
154+
$(RM) $(TMPDIR)/c89/$(SONAME)
155+
$(RM) $(TMPDIR)/c89/$(ANAME)
156+
157+
$(TMPDIR)/c89/$(SONAME): $(OBJDIR)/c89-load.o $(OBJDIR)/c89-luabins.o $(OBJDIR)/c89-luainternals.o $(OBJDIR)/c89-save.o
158+
$(MKDIR) $(TMPDIR)/c89
159+
$(LD) -o $@ $(OBJDIR)/c89-load.o $(OBJDIR)/c89-luabins.o $(OBJDIR)/c89-luainternals.o $(OBJDIR)/c89-save.o $(LDFLAGS) $(SOFLAGS)
160+
161+
$(TMPDIR)/c89/$(ANAME): $(OBJDIR)/c89-load.o $(OBJDIR)/c89-luabins.o $(OBJDIR)/c89-luainternals.o $(OBJDIR)/c89-save.o
162+
$(MKDIR) $(TMPDIR)/c89
163+
$(AR) $@ $(OBJDIR)/c89-load.o $(OBJDIR)/c89-luabins.o $(OBJDIR)/c89-luainternals.o $(OBJDIR)/c89-save.o
164+
$(RANLIB) $@
165+
166+
# objectsc89:
167+
168+
cleanobjectsc89:
169+
$(RM) $(OBJDIR)/c89-load.o $(OBJDIR)/c89-luabins.o $(OBJDIR)/c89-luainternals.o $(OBJDIR)/c89-save.o
170+
171+
$(OBJDIR)/c89-load.o: src/load.c src/luaheaders.h src/luabins.h \
172+
src/saveload.h src/luainternals.h
173+
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c89 -o $@ -c src/load.c
174+
175+
$(OBJDIR)/c89-luabins.o: src/luabins.c src/luaheaders.h src/luabins.h
176+
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c89 -o $@ -c src/luabins.c
177+
178+
$(OBJDIR)/c89-luainternals.o: src/luainternals.c src/luainternals.h
179+
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c89 -o $@ -c src/luainternals.c
180+
181+
$(OBJDIR)/c89-save.o: src/save.c src/luaheaders.h src/luabins.h \
182+
src/saveload.h
183+
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c89 -o $@ -c src/save.c
184+
185+
## ----- Begin c99 -----
186+
187+
testc99: lua-testsc99 c-testsc99
188+
189+
lua-testsc99: $(TMPDIR)/c99/.luatestspassed
190+
191+
c-testsc99: $(TMPDIR)/c99/.ctestspassed
192+
193+
$(TMPDIR)/c99/.luatestspassed: $(TMPDIR)/c99/$(SONAME) test/$(TESTLUA)
194+
$(ECHO) "===== Running Lua tests for c99 ====="
195+
@$(LUA) \
196+
-e "package.cpath='$(TMPDIR)/c99/$(SONAME);'..package.cpath" \
197+
test/$(TESTLUA)
198+
$(TOUCH) $(TMPDIR)/c99/.luatestspassed
199+
$(ECHO) "===== Lua tests for c99 PASSED ====="
200+
201+
$(TMPDIR)/c99/.ctestspassed: $(TMPDIR)/c99/$(TESTNAME) test/$(TESTLUA)
202+
$(ECHO) "===== Running C tests for c99 ====="
203+
$(TMPDIR)/c99/$(TESTNAME)
204+
$(TOUCH) $(TMPDIR)/c99/.ctestspassed
205+
$(ECHO) "===== C tests for c99 PASSED ====="
206+
207+
$(TMPDIR)/c99/$(TESTNAME): $(OBJDIR)/c99-test.o $(TMPDIR)/c99/$(ANAME)
208+
$(MKDIR) $(TMPDIR)/c99
209+
$(LD) -o $@ $(OBJDIR)/c99-test.o $(LDFLAGS) -lm -llua -l$(PROJECTNAME) -L$(TMPDIR)/c99
210+
211+
resettestc99:
212+
$(RM) $(TMPDIR)/c99/.luatestspassed
213+
$(RM) $(TMPDIR)/c99/.ctestspassed
214+
215+
cleantestc99: cleanlibsc99 resettestc99 \
216+
cleantestobjectsc99
217+
$(RM) $(TMPDIR)/c99/$(TESTNAME)
218+
$(RMDIR) $(TMPDIR)/c99
219+
220+
# testobjectsc99:
221+
222+
cleantestobjectsc99:
223+
$(RM) $(OBJDIR)/c99-test.o
224+
225+
$(OBJDIR)/c99-test.o: test/test.c src/luabins.h
226+
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c99 -Isrc/ -o $@ -c test/test.c
227+
228+
cleanlibsc99: cleanobjectsc99
229+
$(RM) $(TMPDIR)/c99/$(SONAME)
230+
$(RM) $(TMPDIR)/c99/$(ANAME)
231+
232+
$(TMPDIR)/c99/$(SONAME): $(OBJDIR)/c99-load.o $(OBJDIR)/c99-luabins.o $(OBJDIR)/c99-luainternals.o $(OBJDIR)/c99-save.o
233+
$(MKDIR) $(TMPDIR)/c99
234+
$(LD) -o $@ $(OBJDIR)/c99-load.o $(OBJDIR)/c99-luabins.o $(OBJDIR)/c99-luainternals.o $(OBJDIR)/c99-save.o $(LDFLAGS) $(SOFLAGS)
235+
236+
$(TMPDIR)/c99/$(ANAME): $(OBJDIR)/c99-load.o $(OBJDIR)/c99-luabins.o $(OBJDIR)/c99-luainternals.o $(OBJDIR)/c99-save.o
237+
$(MKDIR) $(TMPDIR)/c99
238+
$(AR) $@ $(OBJDIR)/c99-load.o $(OBJDIR)/c99-luabins.o $(OBJDIR)/c99-luainternals.o $(OBJDIR)/c99-save.o
239+
$(RANLIB) $@
240+
241+
# objectsc99:
242+
243+
cleanobjectsc99:
244+
$(RM) $(OBJDIR)/c99-load.o $(OBJDIR)/c99-luabins.o $(OBJDIR)/c99-luainternals.o $(OBJDIR)/c99-save.o
245+
246+
$(OBJDIR)/c99-load.o: src/load.c src/luaheaders.h src/luabins.h \
247+
src/saveload.h src/luainternals.h
248+
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c99 -o $@ -c src/load.c
249+
250+
$(OBJDIR)/c99-luabins.o: src/luabins.c src/luaheaders.h src/luabins.h
251+
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c99 -o $@ -c src/luabins.c
252+
253+
$(OBJDIR)/c99-luainternals.o: src/luainternals.c src/luainternals.h
254+
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c99 -o $@ -c src/luainternals.c
255+
256+
$(OBJDIR)/c99-save.o: src/save.c src/luaheaders.h src/luabins.h \
257+
src/saveload.h
258+
$(CC) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c -std=c99 -o $@ -c src/save.c
259+
260+
## ----- Begin c++98 -----
261+
262+
testc++98: lua-testsc++98 c-testsc++98
263+
264+
lua-testsc++98: $(TMPDIR)/c++98/.luatestspassed
265+
266+
c-testsc++98: $(TMPDIR)/c++98/.ctestspassed
267+
268+
$(TMPDIR)/c++98/.luatestspassed: $(TMPDIR)/c++98/$(SONAME) test/$(TESTLUA)
269+
$(ECHO) "===== Running Lua tests for c++98 ====="
270+
@$(LUA) \
271+
-e "package.cpath='$(TMPDIR)/c++98/$(SONAME);'..package.cpath" \
272+
test/$(TESTLUA)
273+
$(TOUCH) $(TMPDIR)/c++98/.luatestspassed
274+
$(ECHO) "===== Lua tests for c++98 PASSED ====="
275+
276+
$(TMPDIR)/c++98/.ctestspassed: $(TMPDIR)/c++98/$(TESTNAME) test/$(TESTLUA)
277+
$(ECHO) "===== Running C tests for c++98 ====="
278+
$(TMPDIR)/c++98/$(TESTNAME)
279+
$(TOUCH) $(TMPDIR)/c++98/.ctestspassed
280+
$(ECHO) "===== C tests for c++98 PASSED ====="
281+
282+
$(TMPDIR)/c++98/$(TESTNAME): $(OBJDIR)/c++98-test.o $(TMPDIR)/c++98/$(ANAME)
283+
$(MKDIR) $(TMPDIR)/c++98
284+
$(LDXX) -o $@ $(OBJDIR)/c++98-test.o $(LDFLAGS) -lm -llua -l$(PROJECTNAME) -L$(TMPDIR)/c++98
285+
286+
resettestc++98:
287+
$(RM) $(TMPDIR)/c++98/.luatestspassed
288+
$(RM) $(TMPDIR)/c++98/.ctestspassed
289+
290+
cleantestc++98: cleanlibsc++98 resettestc++98 \
291+
cleantestobjectsc++98
292+
$(RM) $(TMPDIR)/c++98/$(TESTNAME)
293+
$(RMDIR) $(TMPDIR)/c++98
294+
295+
# testobjectsc++98:
296+
297+
cleantestobjectsc++98:
298+
$(RM) $(OBJDIR)/c++98-test.o
299+
300+
$(OBJDIR)/c++98-test.o: test/test.c src/luabins.h
301+
$(CXX) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c++ -std=c++98 -Isrc/ -o $@ -c test/test.c
302+
303+
cleanlibsc++98: cleanobjectsc++98
304+
$(RM) $(TMPDIR)/c++98/$(SONAME)
305+
$(RM) $(TMPDIR)/c++98/$(ANAME)
306+
307+
$(TMPDIR)/c++98/$(SONAME): $(OBJDIR)/c++98-load.o $(OBJDIR)/c++98-luabins.o $(OBJDIR)/c++98-luainternals.o $(OBJDIR)/c++98-save.o
308+
$(MKDIR) $(TMPDIR)/c++98
309+
$(LDXX) -o $@ $(OBJDIR)/c++98-load.o $(OBJDIR)/c++98-luabins.o $(OBJDIR)/c++98-luainternals.o $(OBJDIR)/c++98-save.o $(LDFLAGS) $(SOFLAGS)
310+
311+
$(TMPDIR)/c++98/$(ANAME): $(OBJDIR)/c++98-load.o $(OBJDIR)/c++98-luabins.o $(OBJDIR)/c++98-luainternals.o $(OBJDIR)/c++98-save.o
312+
$(MKDIR) $(TMPDIR)/c++98
313+
$(AR) $@ $(OBJDIR)/c++98-load.o $(OBJDIR)/c++98-luabins.o $(OBJDIR)/c++98-luainternals.o $(OBJDIR)/c++98-save.o
314+
$(RANLIB) $@
315+
316+
# objectsc++98:
317+
318+
cleanobjectsc++98:
319+
$(RM) $(OBJDIR)/c++98-load.o $(OBJDIR)/c++98-luabins.o $(OBJDIR)/c++98-luainternals.o $(OBJDIR)/c++98-save.o
320+
321+
$(OBJDIR)/c++98-load.o: src/load.c src/luaheaders.h src/luabins.h \
322+
src/saveload.h src/luainternals.h
323+
$(CXX) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c++ -std=c++98 -o $@ -c src/load.c
324+
325+
$(OBJDIR)/c++98-luabins.o: src/luabins.c src/luaheaders.h src/luabins.h
326+
$(CXX) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c++ -std=c++98 -o $@ -c src/luabins.c
327+
328+
$(OBJDIR)/c++98-luainternals.o: src/luainternals.c src/luainternals.h
329+
$(CXX) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c++ -std=c++98 -o $@ -c src/luainternals.c
330+
331+
$(OBJDIR)/c++98-save.o: src/save.c src/luaheaders.h src/luabins.h \
332+
src/saveload.h
333+
$(CXX) $(CFLAGS) -Werror -Wall -Wextra -pedantic -x c++ -std=c++98 -o $@ -c src/save.c
334+
335+
## END OF GENERATED TARGETS ###################################################
336+
337+
.PHONY: all clean install cleanlibs cleanobjects test resettest cleantest testc89 lua-testsc89 c-testsc89 resettestc89 cleantestc89 cleantestobjectsc89 cleanlibsc89 cleanobjectsc89 testc99 lua-testsc99 c-testsc99 resettestc99 cleantestc99 cleantestobjectsc99 cleanlibsc99 cleanobjectsc99 testc++98 lua-testsc++98 c-testsc++98 resettestc++98 cleantestc++98 cleantestobjectsc++98 cleanlibsc++98 cleanobjectsc++98

src/luaheaders.h

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#ifndef LUAPERLIN_LUAHEADERS_H_
2+
#define LUAPERLIN_LUAHEADERS_H_
3+
4+
#if defined (__cplusplus) && !defined (LUAPERLIN_LUABUILTASCPP)
5+
extern "C" {
6+
#endif
7+
8+
#include <lua.h>
9+
#include <lauxlib.h>
10+
#if defined (__cplusplus) && !defined (LUAPERLIN_LUABUILTASCPP)
11+
}
12+
#endif
13+
14+
#endif /* LUAPERLIN_LUAHEADERS_H_ */

0 commit comments

Comments
 (0)