Skip to content

Commit 9ddfc9f

Browse files
committed
Improved *nix makefile
Much easier to build drivers now. No need to edit the config file to switch between driver builds
1 parent fc11132 commit 9ddfc9f

File tree

2 files changed

+66
-78
lines changed

2 files changed

+66
-78
lines changed

Makefile

+19-17
Original file line numberDiff line numberDiff line change
@@ -3,35 +3,37 @@ CONFIG= ./config
33

44
include $(CONFIG)
55

6-
OBJS= src/luasql.o src/ls_$T.o
6+
OBJS= src/luasql.o
7+
SRCS= src/luasql.h src/luasql.c
78

9+
# list of all driver names
10+
DRIVER_LIST= $(subst src/ls_,,$(basename $(wildcard src/ls_*.c)))
811

9-
SRCS= src/luasql.h src/luasql.c \
10-
src/ls_firebird.c \
11-
src/ls_postgres.c \
12-
src/ls_odbc.c \
13-
src/ls_oci8.c \
14-
src/ls_mysql.c \
15-
src/ls_sqlite.c \
16-
src/ls_sqlite3.c
12+
# used for help formatting
13+
EMPTY=
14+
SPACE= $(EMPTY) $(EMPTY)
1715

18-
AR= ar rcu
19-
RANLIB= ranlib
16+
all :
17+
@echo "usage: make { $(subst $(SPACE),$(SPACE)|$(SPACE),$(DRIVER_LIST)) }"
2018

19+
# explicity matches against the list of avilable driver names
20+
$(DRIVER_LIST) : % : src/%.so
2121

22-
lib: src/$(LIBNAME)
22+
# builds the specified driver
23+
src/%.so : src/ls_%.c $(OBJS)
24+
$(CC) $(CFLAGS) src/ls_$*.c -o $@ $(LIB_OPTION) $(OBJS) $(DRIVER_INCS_$*) $(DRIVER_LIBS_$*)
2325

24-
src/$(LIBNAME): $(OBJS)
25-
export MACOSX_DEPLOYMENT_TARGET="10.3"; $(CC) $(CFLAGS) -o $@ $(LIB_OPTION) $(OBJS) $(DRIVER_LIBS)
26+
# builds the general LuaSQL functions
27+
$(OBJS) : $(SRCS)
28+
$(CC) $(CFLAGS) -c src/luasql.c -o src/luasql.o
2629

2730
install:
2831
mkdir -p $(LUA_LIBDIR)/luasql
29-
cp src/$(LIBNAME) $(LUA_LIBDIR)/luasql
32+
cp src/*.so $(LUA_LIBDIR)/luasql
3033

3134
jdbc_driver:
3235
cd src/jdbc; make $@
3336

3437
clean:
35-
rm -f src/$(LIBNAME) src/*.o
38+
rm -f src/*.so src/*.o
3639

37-
# $Id: Makefile,v 1.56 2008/05/30 17:21:18 tomas Exp $

config

+47-61
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,54 @@
1-
# $Id: config,v 1.10 2008/05/30 17:21:18 tomas Exp $
2-
3-
# Driver (leave uncommented ONLY the line with the name of the driver)
4-
T= mysql
5-
#T= oci8
6-
#T= odbc
7-
#T= postgres
8-
#T= sqlite
9-
#T=sqlite3
10-
#T=firebird
11-
121
# Installation directories
132

143
# Default prefix
15-
PREFIX = /usr/local
16-
17-
# System's libraries directory (where binary libraries are installed)
18-
LUA_LIBDIR= $(PREFIX)/lib/lua/5.1
19-
20-
# System's lua directory (where Lua libraries are installed)
21-
LUA_DIR= $(PREFIX)/share/lua/5.1
22-
23-
# Lua includes directory
24-
LUA_INC= $(PREFIX)/include
4+
PREFIX ?= /usr
255

26-
# Lua version number (first and second digits of target version)
27-
LUA_VERSION_NUM= 501
6+
# Lua version and dirs
7+
LUA_SYS_VER ?= 5.2
8+
LUA_LIBDIR ?= $(PREFIX)/lib/lua/$(LUA_SYS_VER)
9+
LUA_DIR ?= $(PREFIX)/share/lua/$(LUA_SYS_VER)
10+
LUA_INC ?= $(PREFIX)/include/lua$(LUA_SYS_VER)
2811

2912
# OS dependent
30-
LIB_OPTION= -shared #for Linux
31-
#LIB_OPTION= -bundle -undefined dynamic_lookup #for MacOS X
32-
33-
LIBNAME= $T.so
34-
35-
# Compilation parameters
36-
# Driver specific
37-
######## MySQL
38-
#DRIVER_LIBS= -L/usr/local/mysql/lib -lmysqlclient -lz
39-
#DRIVER_INCS= -I/usr/local/mysql/include
40-
DRIVER_LIBS= -L/usr/lib -lmysqlclient -lz
41-
DRIVER_INCS= -I/usr/include/mysql
42-
######## Oracle OCI8
43-
#DRIVER_LIBS= -L/home/oracle/OraHome1/lib -lz -lclntsh
44-
#DRIVER_INCS= -I/home/oracle/OraHome1/rdbms/demo -I/home/oracle/OraHome1/rdbms/public
45-
######## PostgreSQL
46-
#DRIVER_LIBS= -L/usr/local/pgsql/lib -lpq
47-
#DRIVER_INCS= -I/usr/local/pgsql/include/
48-
#DRIVER_LIBS= -L/usr/lib -lpq
49-
#DRIVER_INCS= -I/usr/include/postgresql
50-
######## SQLite
51-
#DRIVER_LIBS= -lsqlite
52-
#DRIVER_INCS=
53-
######## SQLite3
54-
#DRIVER_LIBS= -L/opt/local/lib -lsqlite3
55-
#DRIVER_INCS= -I/opt/local/include
56-
######## ODBC
57-
#DRIVER_LIBS= -L/usr/local/lib -lodbc
58-
#DRIVER_INCS= -DUNIXODBC -I/usr/local/include
59-
######## Firebird
60-
#DRIVER_LIBS= -L/usr/local/firebird -lfbclient
61-
#DRIVER_INCS=
62-
63-
WARN= -Wall -Wmissing-prototypes -Wmissing-declarations -ansi -pedantic
64-
INCS= -I$(LUA_INC)
65-
CFLAGS= -O2 $(WARN) -fPIC $(DRIVER_INCS) $(INCS) -DLUASQL_VERSION_NUMBER='"$V"' $(DEFS)
13+
UNAME_S := $(shell uname -s)
14+
ifeq ($(UNAME_S),Darwin) # MacOS
15+
LIB_OPTION ?= -bundle -undefined dynamic_lookup -mmacosx-version-min=10.3
16+
else # Linux/BSD
17+
LIB_OPTION ?= -shared
18+
endif
19+
20+
# driver specific params
21+
# - MySQL
22+
#DRIVER_LIBS_mysql ?= -L/usr/local/mysql/lib -lmysqlclient -lz
23+
#DRIVER_INCS_mysql ?= -I/usr/local/mysql/include
24+
DRIVER_LIBS_mysql ?= -L/usr/lib -lmysqlclient -lz
25+
DRIVER_INCS_mysql ?= -I/usr/include/mysql
26+
# - Oracle OCI8
27+
DRIVER_LIBS_oci8 ?= -L/home/oracle/OraHome1/lib -lz -lclntsh
28+
DRIVER_INCS_oci8 ?= -I/home/oracle/OraHome1/rdbms/demo \
29+
-I/home/oracle/OraHome1/rdbms/public
30+
# - PostgreSQL
31+
#DRIVER_LIBS_postgres ?= -L/usr/local/pgsql/lib -lpq
32+
#DRIVER_INCS_postgres ?= -I/usr/local/pgsql/include/
33+
DRIVER_LIBS_postgres ?= -L/usr/lib -lpq
34+
DRIVER_INCS_postgres ?= -I/usr/include/postgresql
35+
# - SQLite
36+
DRIVER_LIBS_sqlite ?= -lsqlite
37+
DRIVER_INCS_sqlite ?=
38+
# - SQLite3
39+
DRIVER_LIBS_sqlite3 ?= -L/opt/local/lib -lsqlite3
40+
DRIVER_INCS_sqlite3 ?= -I/opt/local/include
41+
# - ODBC
42+
DRIVER_LIBS_odbc ?= -L/usr/local/lib -lodbc
43+
DRIVER_INCS_odbc ?= -DUNIXODBC -I/usr/local/include
44+
# - Firebird
45+
DRIVER_LIBS_firebird ?= -L/usr/local/firebird -lfbclient
46+
DRIVER_INCS_firebird ?=
47+
48+
# general compilation parameters
49+
WARN = -Wall -Wmissing-prototypes -Wmissing-declarations -pedantic
50+
INCS = -I$(LUA_INC)
51+
DEFS =
52+
CFLAGS = -O2 -std=gnu99 $(WARN) -fPIC $(DRIVER_INCS) $(INCS) \
53+
-DLUASQL_VERSION_NUMBER='"$V"' $(DEFS)
6654
CC= gcc
67-
68-
# $Id: config,v 1.10 2008/05/30 17:21:18 tomas Exp $

0 commit comments

Comments
 (0)