EXTENSION?=txt
FORMAT?=DEFAULT
.PHONY: all parse clean raylib_api


raylib_parser: raylib_parser.c
	cc raylib_parser.c -o raylib_parser

raylib_api: ../../src/raylib.h raylib_parser
	FORMAT=DEFAULT EXTENSION=txt $(MAKE) raylib_api.txt
	FORMAT=JSON EXTENSION=json $(MAKE) raylib_api.json
	FORMAT=XML EXTENSION=xml $(MAKE) raylib_api.xml
	FORMAT=LUA EXTENSION=lua $(MAKE) raylib_api.lua

raylib_api.$(EXTENSION): ../../src/raylib.h raylib_parser
	./raylib_parser -i ../../src/raylib.h -o raylib_api.$(EXTENSION) -f $(FORMAT) -d RLAPI

raymath_api.$(EXTENSION): ../../src/raymath.h raylib_parser
	./raylib_parser -i ../../src/raymath.h -o raymath_api.$(EXTENSION) -f $(FORMAT) -d RMAPI

rlgl_api.$(EXTENSION): ../../src/rlgl.h raylib_parser
	./raylib_parser -i ../../src/rlgl.h -o rlgl_api.$(EXTENSION) -f $(FORMAT) -d RLAPI -t "RLGL IMPLEMENTATION"

reasings_api.$(EXTENSION): ../../examples/others/reasings.h raylib_parser
	./raylib_parser -i ../../examples/others/reasings.h -o reasings_api.$(EXTENSION) -f $(FORMAT) -d EASEDEF

raygui_api.$(EXTENSION): ../raygui.h raylib_parser
	./raylib_parser -i ../raygui.h -o raygui_api.$(EXTENSION) -f $(FORMAT) -d RAYGUIAPI -t "RAYGUI IMPLEMENTATION"

parse: raylib_api.$(EXTENSION) raymath_api.$(EXTENSION) rlgl_api.$(EXTENSION) raygui_api.$(EXTENSION)


# `make parse` (and therefore `make all) requires
# rmem.h, physac.h and raygui.h to exist in the correct directory
# API files for individual headers can be created likeso, provided the relevant header exists:
#     FORMAT=JSON EXTENSION=json make raygui_api.json
all: raylib_parser
	FORMAT=DEFAULT EXTENSION=txt $(MAKE) parse
	FORMAT=JSON EXTENSION=json $(MAKE) parse
	FORMAT=XML EXTENSION=xml $(MAKE) parse
	FORMAT=LUA EXTENSION=lua $(MAKE) parse

clean:
	rm -f raylib_parser *.json *.txt *.xml *.lua
