all: build build_rd build_free build_rpylib run build_mingw

# Variables for compiler and flags
CC = gcc
CFLAGS = -Ofast -Werror -Wall -lreadline -lncurses -lcurl -lssl -lcrypto -ljson-c -lm -lsqlite3

# 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: 
	$(CC) main.c $(CFLAGS) -o r
	-@publish r

build_free:
	$(CC) -DOLLAMA main.c $(CFLAGS) -o rf
	@publish rf

build_rd:
	$(CC) -DRD main.c $(CFLAGS) -o rd
	publish rd

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