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