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 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
|
CC ?= cc
AR ?= ar rcu
RANLIB ?= ranlib
RM ?= rm -rf
MKDIR ?= mkdir -p
INSTALL ?= install
INSTALL_PROGRAM ?= $(INSTALL)
INSTALL_DATA ?= $(INSTALL) -m 644
LUA_V ?= 5.4
LUA_LDIR ?= /usr/share/lua/$(LUA_V)
LUA_CDIR ?= /usr/lib/lua/$(LUA_V)
COMMON_CFLAGS ?= -g -pedantic -Wall -O2 -shared -fPIC -DPIC -std=c99
LUA_INC ?= -I/usr/include/lua$(LUA_V)
MYSQL_INC ?= -I/usr/include/mysql
PSQL_INC ?= -I/usr/include/postgresql
SQLITE3_INC ?= -I/usr/include
DUCKDB_INC ?= -I/usr/include
DB2_INC ?= -I/opt/ibm/db2exc/V9.5/include
ORACLE_INC ?= -I/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/rdbms/public
CF = $(LUA_INC) $(COMMON_CFLAGS) $(CFLAGS) -I.
COMMON_LDFLAGS ?= -shared
MYSQL_LDFLAGS ?= -lmysqlclient
PSQL_LDFLAGS ?= -lpq
SQLITE3_LDFLAGS ?= -lsqlite3
DUCKDB_LDFLAGS ?= -lduckdb
DB2_LDFLAGS ?= -L/opt/ibm/db2exc/V9.5/lib64 -L/opt/ibm/db2exc/V9.5/lib32 -ldb2
ORACLE_LDFLAGS ?= -L/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib/ -locixe
LF = $(COMMON_LDFLAGS) $(LDFLAGS)
MYSQL_FLAGS = $(CF) $(LF) $(MYSQL_INC) $(MYSQL_LDFLAGS)
PSQL_FLAGS = $(CF) $(LF) $(PSQL_INC) $(PSQL_LDFLAGS)
SQLITE3_FLAGS = $(CF) $(LF) $(SQLITE3_INC) $(SQLITE3_LDFLAGS)
DUCKDB_FLAGS = $(CF) $(LF) $(DUCKDB_INC) $(DUCKDB_LDFLAGS)
DB2_FLAGS = $(CF) $(LF) $(DB2_INC) $(DB2_LDFLAGS)
ORACLE_FLAGS = $(CF) $(LF) $(ORACLE_INC) $(ORACLE_LDFLAGS) -DORA_ENABLE_PING -DORA_ENABLE_TAF
BUILDDIR = build
DBDMYSQL = dbd/mysql.so
DBDPSQL = dbd/postgresql.so
DBDSQLITE3 = dbd/sqlite3.so
DBDDUCKDB = dbd/duckdb.so
DBDDB2 = dbd/db2.so
DBDORACLE = dbd/oracle.so
OBJS = build/dbd_common.o
MYSQL_OBJS = $(OBJS) build/dbd_mysql_main.o build/dbd_mysql_connection.o build/dbd_mysql_statement.o
PSQL_OBJS = $(OBJS) build/dbd_postgresql_main.o build/dbd_postgresql_connection.o build/dbd_postgresql_statement.o
SQLITE3_OBJS = $(OBJS) build/dbd_sqlite3_main.o build/dbd_sqlite3_connection.o build/dbd_sqlite3_statement.o
DUCKDB_OBJS = $(OBJS) build/dbd_duckdb_main.o build/dbd_duckdb_connection.o build/dbd_duckdb_statement.o
DB2_OBJS = $(OBJS) build/dbd_db2_main.o build/dbd_db2_connection.o build/dbd_db2_statement.o
ORACLE_OBJS = $(OBJS) build/dbd_oracle_main.o build/dbd_oracle_connection.o build/dbd_oracle_statement.o
free: mysql psql sqlite3 duckdb
all: mysql psql sqlite3 duckdb db2 oracle
mysql: $(BUILDDIR) $(MYSQL_OBJS)
$(CC) $(MYSQL_OBJS) -o $(DBDMYSQL) $(MYSQL_FLAGS)
psql: $(BUILDDIR) $(PSQL_OBJS)
$(CC) $(PSQL_OBJS) -o $(DBDPSQL) $(PSQL_FLAGS)
sqlite3: $(BUILDDIR) $(SQLITE3_OBJS)
$(CC) $(SQLITE3_OBJS) -o $(DBDSQLITE3) $(SQLITE3_FLAGS)
duckdb: $(BUILDDIR) $(DUCKDB_OBJS)
$(CC) $(DUCKDB_OBJS) -o $(DBDDUCKDB) $(DUCKDB_FLAGS)
db2: $(BUILDDIR) $(DB2_OBJS)
$(CC) $(DB2_OBJS) -o $(DBDDB2) $(DB2_FLAGS)
oracle: $(BUILDDIR) $(ORACLE_OBJS)
$(CC) $(ORACLE_OBJS) -o $(DBDORACLE) $(ORACLE_FLAGS)
clean:
$(RM) $(MYSQL_OBJS) $(PSQL_OBJS) $(SQLITE3_OBJS) $(DB2_OBJS) $(ORACLE_OBJS) $(DBDMYSQL) $(DBDPSQL) $(DBDSQLITE3) $(DBDDB2) $(DBDORACLE) $(DUCKDB_OBJS)
build/dbd_common.o: dbd/common.c dbd/common.h
$(CC) -c -o $@ $< $(CF)
build/dbd_mysql_connection.o: dbd/mysql/connection.c dbd/mysql/dbd_mysql.h dbd/common.h
$(CC) -c -o $@ $< $(MYSQL_FLAGS)
build/dbd_mysql_main.o: dbd/mysql/main.c dbd/mysql/dbd_mysql.h dbd/common.h
$(CC) -c -o $@ $< $(MYSQL_FLAGS)
build/dbd_mysql_statement.o: dbd/mysql/statement.c dbd/mysql/dbd_mysql.h dbd/common.h
$(CC) -c -o $@ $< $(MYSQL_FLAGS)
build/dbd_postgresql_connection.o: dbd/postgresql/connection.c dbd/postgresql/dbd_postgresql.h dbd/common.h
$(CC) -c -o $@ $< $(PSQL_FLAGS)
build/dbd_postgresql_main.o: dbd/postgresql/main.c dbd/postgresql/dbd_postgresql.h dbd/common.h
$(CC) -c -o $@ $< $(PSQL_FLAGS)
build/dbd_postgresql_statement.o: dbd/postgresql/statement.c dbd/postgresql/dbd_postgresql.h dbd/common.h
$(CC) -c -o $@ $< $(PSQL_FLAGS)
build/dbd_sqlite3_connection.o: dbd/sqlite3/connection.c dbd/sqlite3/dbd_sqlite3.h dbd/common.h
$(CC) -c -o $@ $< $(SQLITE3_FLAGS)
build/dbd_sqlite3_main.o: dbd/sqlite3/main.c dbd/sqlite3/dbd_sqlite3.h dbd/common.h
$(CC) -c -o $@ $< $(SQLITE3_FLAGS)
build/dbd_sqlite3_statement.o: dbd/sqlite3/statement.c dbd/sqlite3/dbd_sqlite3.h dbd/common.h
$(CC) -c -o $@ $< $(SQLITE3_FLAGS)
build/dbd_duckdb_connection.o: dbd/duckdb/connection.c dbd/duckdb/dbd_duckdb.h dbd/common.h
$(CC) -c -o $@ $< $(DUCKDB_FLAGS)
build/dbd_duckdb_main.o: dbd/duckdb/main.c dbd/duckdb/dbd_duckdb.h dbd/common.h
$(CC) -c -o $@ $< $(DUCKDB_FLAGS)
build/dbd_duckdb_statement.o: dbd/duckdb/statement.c dbd/duckdb/dbd_duckdb.h dbd/common.h
$(CC) -c -o $@ $< $(DUCKDB_FLAGS)
build/dbd_db2_connection.o: dbd/db2/connection.c dbd/db2/dbd_db2.h dbd/common.h
$(CC) -c -o $@ $< $(DB2_FLAGS)
build/dbd_db2_main.o: dbd/db2/main.c dbd/db2/dbd_db2.h dbd/common.h
$(CC) -c -o $@ $< $(DB2_FLAGS)
build/dbd_db2_statement.o: dbd/db2/statement.c dbd/db2/dbd_db2.h dbd/common.h
$(CC) -c -o $@ $< $(DB2_FLAGS)
build/dbd_oracle_connection.o: dbd/oracle/connection.c dbd/oracle/dbd_oracle.h dbd/common.h
$(CC) -c -o $@ $< $(ORACLE_FLAGS)
build/dbd_oracle_main.o: dbd/oracle/main.c dbd/oracle/dbd_oracle.h dbd/common.h
$(CC) -c -o $@ $< $(ORACLE_FLAGS)
build/dbd_oracle_statement.o: dbd/oracle/statement.c dbd/oracle/dbd_oracle.h dbd/common.h
$(CC) -c -o $@ $< $(ORACLE_FLAGS)
build:
$(MKDIR) ${BUILDDIR}
install_lua:
$(INSTALL_DATA) -D DBI.lua $(DESTDIR)$(LUA_LDIR)/DBI.lua
install_mysql: mysql install_lua
$(INSTALL_PROGRAM) -D $(DBDMYSQL) $(DESTDIR)$(LUA_CDIR)/$(DBDMYSQL)
install_psql: psql install_lua
$(INSTALL_PROGRAM) -D $(DBDPSQL) $(DESTDIR)$(LUA_CDIR)/$(DBDPSQL)
install_sqlite3: sqlite3 install_lua
$(INSTALL_PROGRAM) -D $(DBDSQLITE3) $(DESTDIR)$(LUA_CDIR)/$(DBDSQLITE3)
install_duckdb: duckdb install_lua
$(INSTALL_PROGRAM) -D $(DBDDUCKDB) $(DESTDIR)$(LUA_CDIR)/$DBDDUCKDB)
install_db2: db2 install_lua
$(INSTALL_PROGRAM) -D $(DBDDB2) $(DESTDIR)$(LUA_CDIR)/$(DBDDB2)
install_oracle: oracle install_lua
$(INSTALL_PROGRAM) -D $(DBDORACLE) $(DESTDIR)$(LUA_CDIR)/$(DBDORACLE)
install_free: install_lua install_mysql install_psql install_sqlite3 install_duckdb
install_all: install_lua install_mysql install_psql install_sqlite3 install_duckdb install_db2 install_oracle
|