all:
	docker compose up -d --build
	docker compose exec shell make build

build: build_sqlite build_project

build_project:
	gcc ft.c -ljansson libsqlite3.a -static -o ft 

build_sqlite:
	gcc -c -static sqlite/sqlite3.c -O3 \
		-DNDEBUG \
		 -DSQLITE_USE_URI \
    		-DSQLITE_ENABLE_FTS5 \
    -DSQLITE_ENABLE_JSON1 \
    -DSQLITE_ENABLE_RTREE \
    -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT \
    -DSQLITE_ENABLE_PREUPDATE_HOOK \
    -DSQLITE_ENABLE_UNLOCK_NOTIFY \
    -DSQLITE_MAX_SQL_LENGTH=1000000 \
    -DSQLITE_DEFAULT_PAGE_SIZE=4096 \
    -DSQLITE_ENABLE_SESSION \
    -DSQLITE_ENABLE_DESERIALIZE \
    -DSQLITE_USE_URI \
    -DSQLITE_DQS \
    -DSQLITE_TEMP_STORE=2 \
    -DSQLITE_DEFAULT_MEMSTATUS \
    -DSQLITE_ENABLE_STAT4 \
    -DSQLITE_ENABLE_DBSTAT_VTAB \
    -DSQLITE_ALLOW_URI_AUTHORITY \
    -DSQLITE_ENABLE_COLUMN_METADATA \
    -DSQLITE_ENABLE_UNLOCK_NOTIFY \
    -DSQLITE_USE_ALLOCA \
    -DSQLITE_ENABLE_PREUPDATE_HOOK \
    -DSQLITE_ENABLE_MEMSYS5 \
    -DSQLITE_DEFAULT_JOURNAL_MODE='"wal"' \
    -DSQLITE_DEFAULT_SYNCHRONOUS=0 \
    -DSQLITE_OMIT_SHARED_CACHE \
    -DSQLITE_ENABLE_LOAD_EXTENSION \
		-DSQLITE_THREADSAFE=1 -o sqlite3.o -march=native -flto 
	ar rcs libsqlite3.a sqlite3.o