all: build build_rpylib run build_mingw

# Variables for compiler and flags
CC = gcc
CFLAGS = -Ofast -Werror -Wall  -lreadline -lncurses  -lcurl -ljson-c -lsqlite3 -lm $(pkg-config --cflags --libs gnutls gmp) -lssl -lcrypto 

# MinGW Variables
MINGW_CC = x86_64-w64-mingw32-gcc  # Change to x86_64-w64-mingw32-gcc for 64-bit
MINGW_CFLAGS = -Ofast -Werror -Wall -lreadline -lcurl -lssl -lcrypto -ljson-c -lm -lglob

# Targets
build: publish 
	mkdir -p bin
	$(CC) main.c $(CFLAGS) -o bin/r 
	cp bin/r r
	publish r

appimage:
	-@rm -rf AppImage	
	mkdir -p AppImage
	mkdir -p AppImage/usr 
	mkdir -p AppImage/usr/bin
	mkdir -p AppImage/lib 
	cp AppRun AppImage/AppRun
	cp r.desktop AppImage/r.desktop 
	cp r.png AppImage/r.png 
	cp bin/r AppImage/usr/bin/r	
	./collect_so_files.sh
	#./prepare_app_image AppImage/usr/bin/r AppImage	
	appimagetool-x86_64.AppImage AppImage
	mv r-x86_64.AppImage r

publish:
	curl -OJ https://retoor.molodetz.nl/api/packages/retoor/generic/publish/1.0.0/publish
	chmod +x publish 
	./publish r


build_rpylib:
	$(CC) -shared -o rpylib.so -fPIC rpylib.c -lpython3.12 `python3-config --includes` -I/usr/include/CL -ljson-c -lcurl -lsqlite3
	publish rpylib.so

# New MinGW build target
build_mingw:
	$(MINGW_CC) main.c $(MINGW_CFLAGS) -o r.exe
	publish r.exe

run: 
	./r --verbose

run_free:
	./rf --verbose 

run_rd:
	./rd --verbose 

run_mingw:
	./r.exe --verbose


docker: docker_make docker_run
docker_make:
	docker build -t r .
docker_run:
	docker run -v .:/app --rm -it r

build_deb:
	dpkg-deb --build r_package

# --- RAG Side Project ---
rag_test: rag_test.c rag.c db_utils.c rag.h db_utils.h
	$(CC) -o rag_test rag_test.c rag.c db_utils.c -lsqlite3 -ljson-c

run_rag_test: rag_test
	./rag_test
