|
| 1 | +EXTENSION?=txt |
| 2 | +FORMAT?=DEFAULT |
| 3 | +.PHONY: all parse clean raylib_api |
| 4 | + |
| 5 | +# Determine PLATFORM_OS |
| 6 | +# No uname.exe on MinGW!, but OS=Windows_NT on Windows! |
| 7 | +# ifeq ($(UNAME),Msys) -> Windows |
| 8 | +ifeq ($(OS),Windows_NT) |
| 9 | + PLATFORM_OS = WINDOWS |
| 10 | +else |
| 11 | + UNAMEOS = $(shell uname) |
| 12 | + ifeq ($(UNAMEOS),Linux) |
| 13 | + PLATFORM_OS = LINUX |
| 14 | + endif |
| 15 | + ifeq ($(UNAMEOS),FreeBSD) |
| 16 | + PLATFORM_OS = BSD |
| 17 | + endif |
| 18 | + ifeq ($(UNAMEOS),OpenBSD) |
| 19 | + PLATFORM_OS = BSD |
| 20 | + endif |
| 21 | + ifeq ($(UNAMEOS),NetBSD) |
| 22 | + PLATFORM_OS = BSD |
| 23 | + endif |
| 24 | + ifeq ($(UNAMEOS),DragonFly) |
| 25 | + PLATFORM_OS = BSD |
| 26 | + endif |
| 27 | + ifeq ($(UNAMEOS),Darwin) |
| 28 | + PLATFORM_OS = OSX |
| 29 | + endif |
| 30 | +endif |
| 31 | + |
| 32 | +# Define default C compiler: CC |
| 33 | +#------------------------------------------------------------------------------------------------ |
| 34 | +CC = gcc |
| 35 | +ifeq ($(PLATFORM_OS),OSX) |
| 36 | + # OSX default compiler |
| 37 | + CC = clang |
| 38 | +endif |
| 39 | +ifeq ($(PLATFORM_OS),BSD) |
| 40 | + # FreeBSD, OpenBSD, NetBSD, DragonFly default compiler |
| 41 | + CC = clang |
| 42 | +endif |
| 43 | + |
| 44 | +# Define default make program: MAKE |
| 45 | +#------------------------------------------------------------------------------------------------ |
| 46 | +MAKE ?= make |
| 47 | +ifeq ($(PLATFORM_OS),WINDOWS) |
| 48 | + MAKE = mingw32-make |
| 49 | +endif |
| 50 | + |
| 51 | +# Define compiler flags: CFLAGS |
| 52 | +#------------------------------------------------------------------------------------------------ |
| 53 | +CFLAGS = -Wall -std=c99 |
| 54 | +#CFLAGS += -Wextra -Wmissing-prototypes -Wstrict-prototypes |
| 55 | + |
| 56 | +ifeq ($(BUILD_MODE),DEBUG) |
| 57 | + CFLAGS += -g -D_DEBUG |
| 58 | +else |
| 59 | + ifeq ($(PLATFORM_OS),OSX) |
| 60 | + CFLAGS += -O2 |
| 61 | + else |
| 62 | + CFLAGS += -s -O2 |
| 63 | + endif |
| 64 | +endif |
| 65 | +ifeq ($(PLATFORM_OS),WINDOWS) |
| 66 | + # NOTE: The resource .rc file contains windows executable icon and properties |
| 67 | + CFLAGS += rlparser.rc.data |
| 68 | +endif |
| 69 | + |
| 70 | +# Define processes to execute |
| 71 | +#------------------------------------------------------------------------------------------------ |
| 72 | +# rlparser compilation |
| 73 | +rlparser: rlparser.c |
| 74 | + $(CC) rlparser.c -o rlparser $(CFLAGS) |
| 75 | + |
| 76 | +# rlparser execution: [raylib.h] parse, generating some output files |
| 77 | +raylib_api: ../../src/raylib.h rlparser |
| 78 | + FORMAT=DEFAULT EXTENSION=txt $(MAKE) raylib_api.txt |
| 79 | + FORMAT=JSON EXTENSION=json $(MAKE) raylib_api.json |
| 80 | + FORMAT=XML EXTENSION=xml $(MAKE) raylib_api.xml |
| 81 | + FORMAT=LUA EXTENSION=lua $(MAKE) raylib_api.lua |
| 82 | + |
| 83 | +# rlparser execution: [raylib.h] parse, generating some output files |
| 84 | +raylib_api.$(EXTENSION): ../../src/raylib.h rlparser |
| 85 | + ./rlparser -i ../../src/raylib.h -o raylib_api.$(EXTENSION) -f $(FORMAT) -d RLAPI |
| 86 | + |
| 87 | +# rlparser execution: [rlgl.h] parse, generating some output files |
| 88 | +rlgl_api.$(EXTENSION): ../../src/rlgl.h rlparser |
| 89 | + ./rlparser -i ../../src/rlgl.h -o rlgl_api.$(EXTENSION) -f $(FORMAT) -d RLAPI -t "RLGL IMPLEMENTATION" |
| 90 | + |
| 91 | +# rlparser execution: [raymath.h] parse, generating some output files |
| 92 | +raymath_api.$(EXTENSION): ../../src/raymath.h rlparser |
| 93 | + ./rlparser -i ../../src/raymath.h -o raymath_api.$(EXTENSION) -f $(FORMAT) -d RMAPI |
| 94 | + |
| 95 | +# rlparser execution: [reasings.h] parse, generating some output files |
| 96 | +reasings_api.$(EXTENSION): ../../examples/others/reasings.h rlparser |
| 97 | + ./rlparser -i ../../examples/others/reasings.h -o reasings_api.$(EXTENSION) -f $(FORMAT) -d EASEDEF |
| 98 | + |
| 99 | +# rlparser execution: [raygui.h] parse, generating some output files |
| 100 | +raygui_api.$(EXTENSION): ../raygui.h rlparser |
| 101 | + ./rlparser -i ../raygui.h -o raygui_api.$(EXTENSION) -f $(FORMAT) -d RAYGUIAPI -t "RAYGUI IMPLEMENTATION" |
| 102 | + |
| 103 | +# Target to generate required APIs output files |
| 104 | +parse: raylib_api.$(EXTENSION) raymath_api.$(EXTENSION) rlgl_api.$(EXTENSION) raygui_api.$(EXTENSION) |
| 105 | + |
| 106 | +# "make parse" (and therefore "make all") requires |
| 107 | +# raygui.h and reasings_api.h to exist in the correct directory |
| 108 | +# API files for individual headers can be created likeso, provided the relevant header exists: |
| 109 | +# FORMAT=JSON EXTENSION=json make raygui_api.json |
| 110 | +all: rlparser |
| 111 | + FORMAT=DEFAULT EXTENSION=txt $(MAKE) parse |
| 112 | + FORMAT=JSON EXTENSION=json $(MAKE) parse |
| 113 | + FORMAT=XML EXTENSION=xml $(MAKE) parse |
| 114 | + FORMAT=LUA EXTENSION=lua $(MAKE) parse |
| 115 | + |
| 116 | +# Clean rlparser and generated output files |
| 117 | +clean: |
| 118 | + rm -f rlparser *.json *.txt *.xml *.lua |
0 commit comments