1-include config.mk
2
3PLATFORM?= $(shell uname)
4
5CC?=gcc
6AR?=ar
7
8LAC=lautoc.c
9LAC_OBJ=lautoc.o
10LAC_CPPFLAGS= -I./include $(LUA_INCLUDE_DIR)
11LAC_CFLAGS= -std=gnu99 -Wall -Werror -Wno-unused -O3 -g
12LAC_LDFLAGS= $(LUA_LIBRARY_DIR)
13LAC_LIBS= $(LUA_LIBRARY)
14
15EXAMPLES_SRC= $(wildcard examples/*.c)
16EXAMPLES_OUT= $(EXAMPLES_SRC:%.c=%$(EXE_SUFFIX))
17
18SHARED_LIB= $(SHARED_LIB_PREFIX)lautoc$(SHARED_LIB_SUFFIX)
19STATIC_LIB= $(STATIC_LIB_PREFIX)lautoc$(STATIC_LIB_SUFFIX)
20
21ifeq ($(findstring Linux,$(PLATFORM)),Linux)
22	LUA_INCLUDE_DIR?= -I/usr/include/lua5.2/
23	LUA_LIBRARY?= -llua5.2
24	LAC_CFLAGS+= -fPIC
25	LAC_LDFLAGS+= -fPIC
26	SHARED_LIB_PREFIX:=lib
27	SHARED_LIB_SUFFIX:=.so
28	STATIC_LIB_PREFIX:=lib
29	STATIC_LIB_SUFFIX:=.a
30	EXE_SUFFIX:=
31else ifeq ($(findstring Darwin,$(PLATFORM)),Darwin)
32	LUA_INCLUDE_DIR?= -I/usr/include/lua5.2/
33	LUA_LIBRARY?= -llua5.2
34	LAC_CFLAGS+= -fPIC
35	LAC_LDFLAGS+= -fPIC
36	SHARED_LIB_PREFIX:=lib
37	SHARED_LIB_SUFFIX:=.so
38	STATIC_LIB_PREFIX:=lib
39	STATIC_LIB_SUFFIX:=.a
40	EXE_SUFFIX:=
41else ifeq ($(findstring MINGW,$(PLATFORM)),MINGW)
42	LUA_LIBRARY?= -llua
43	LAC_LIBS+= -lmingw32
44	SHARED_LIB_PREFIX:=
45	SHARED_LIB_SUFFIX:=.dll
46	STATIC_LIB_PREFIX:=
47	STATIC_LIB_SUFFIX:=.lib
48	EXE_SUFFIX:=.exe
49endif
50
51# Library
52
53all: $(SHARED_LIB) $(STATIC_LIB)
54
55$(SHARED_LIB): $(LAC)
56	$(CC) $^ $(CFLAGS) $(LAC_CFLAGS) $(LAC_CPPFLAGS) $(LDFLAGS) $(LAC_LDFLAGS) $(LAC_LIBS) -shared -o $@
57
58$(STATIC_LIB): $(LAC)
59	$(CC) $^ $(CFLAGS) $(LAC_CFLAGS) $(LAC_CPPFLAGS) -c
60	$(AR) rcs $@ $(LAC_OBJ)
61
62# Examples
63
64examples: $(EXAMPLES_OUT)
65
66examples/example_%$(EXE_SUFFIX): examples/example_%.c $(LAC)
67	$(CC) $^ $(CFLAGS) $(LAC_CFLAGS) $(LAC_CPPFLAGS) $(LDFLAGS) $(LAC_LDFLAGS) $(LAC_LIBS) -o $@
68
69# Clean
70
71clean:
72	$(RM) $(LAC_OBJ) $(EXAMPLES_OUT) $(SHARED_LIB) $(STATIC_LIB)
73
74