########################################################################
# building sqlite3 for MinGW64 (64 bit)

AR = ar
AR.flags = cr
CC = gcc
CFLAGS = -O2 -DSQLITE_ENABLE_STAT3=1 -DSQLITE_ENABLE_RTREE=1 \
-DSQLITE_ENABLE_TREE_EXPLAIN=1 -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT=1 \
-DSQLITE_ENABLE_FTS3_PARENTHESIS=1 -DSQLITE_ENABLE_COLUMN_METADATA=1 \
-DSQLITE_THREADSAFE=1 -DSQLITE_DQS=0
LIBS = -lz

all: sqlite3.exe libsqlite3.a libsqlite3.dll

sqlite3.exe: shell.o
	$(CC) $(CFLAGS) shell.o -o sqlite3.exe  $(LIBS) ./libsqlite3.dll
	strip --strip-all sqlite3.exe
	
shell.o: shell.c libsqlite3.dll
	$(CC) $(CFLAGS) shell.c -c
	
sqlite3.o: sqlite3.c
	$(CC) $(CFLAGS) sqlite3.c -c
	
libsqlite3.a: sqlite3.o
	$(AR) $(AR.flags) $@ sqlite3.o
	ranlib libsqlite3.a
	
libsqlite3.dll: sqlite3.o
	$(CC) -shared  -Wl,--out-implib,libsqlite3.dll.a sqlite3.o -o libsqlite3.dll
	
clean:
	rm -f *.o sqlite3.exe
	rm -f libsqlite3.a libsqlite3.dll libsqlite3.dll.a
	
install:
	cp libsqlite3.dll sqlite3.exe /mingw64/local/bin
	cp sqlite3.h sqlite3ext.h /mingw64/local/include
	cp libsqlite3.a libsqlite3.dll.a /mingw64/local/lib
	
uninstall:
	rm /mingw64/local/bin/libsqlite3.dll
	rm /mingw64/local/bin/sqlite3.exe
	rm /mingw64/local/include/sqlite3.h
	rm /mingw64/local/include/sqlite3ext.h
	rm /mingw64/local/lib/libsqlite3.a
	rm /mingw64/local/lib/libsqlite3.dll.a