-
Notifications
You must be signed in to change notification settings - Fork 18
/
build_settings.make
80 lines (69 loc) · 1.93 KB
/
build_settings.make
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
# makefile_setup
#
# This makefile is meant to be included by chapter-specific
# makefiles within each ch* directory.
#
# Here are the meanings of some key variables:
#
# Variable Meaning
# -----------------------------
#
# flags standard C compilation flags
#
# lua_lib name of Lua library file to build
# (omitted on Windows as we assume it's prebuilt)
#
# lua_flags platform-specific flags for building $(lualib)
#
# so_ext filename extension for shared object files
# (this is dll on windows, so on other systems)
#
# so_flags cc flags specific to building so files
# (Windows is a 2-step process; see ch4/makefile)
#
cc = cc -std=c99
# Platform-specific settings.
ifeq ($(OS),Windows_NT)
# Windows.
flags = -llua
so_ext = dll
so_flags = -shared -llua
so_dep = %.o
so_make = $(cc) $< -o $@ $(so_flags)
else ifeq ($(shell uname),Darwin)
# macOS.
cflags = -I../lua
flags = -llua -L../lua $(cflags)
lua_lib = ../lua/liblua.a
lua_flags = SYSCFLAGS="-DLUA_USE_MACOSX"
so_ext = so
so_flags = -undefined dynamic_lookup -I../lua
so_dep = %.c %.h
so_make = $(cc) $< -o $@ $(so_flags)
else
# Guess Linux.
cflags = -D_POSIX_C_SOURCE=199309L -I../lua
flags = -llua -L../lua -lm -ldl $(cflags)
lua_lib = ../lua/liblua.a
lua_flags = SYSCFLAGS="-DLUA_USE_LINUX"
so_ext = so
so_flags = -I../lua -shared -fpic
so_dep = %.c %.h
so_make = $(cc) $< -o $@ $(so_flags)
endif
all = $(binaries) $(eatyguys) $(obj_files) $(so_files) $(interpreters)
all: $(all)
clean:
rm -f $(all) *.o
$(binaries) : % : %.c $(lua_lib)
$(cc) $< -o $@ $(flags)
$(eatyguys) : % : %.c $(lua_lib) Pair.o
$(cc) $^ -o $@ $(flags)
$(interpreters) : % : %.c $(lua_lib) interpreter.o
$(cc) $^ -o $@ $(flags)
$(obj_files) : %.o : %.c %.h
$(cc) -c $< -o $@ $(cflags)
$(so_files) : %.$(so_ext) : $(so_dep)
$(cc) $< -o $@ $(so_flags)
../lua/liblua.a:
make -C ../lua liblua.a $(lua_flags)