|
|
@ -25,8 +25,7 @@ |
|
|
|
|
|
|
|
# Define required raylib variables
|
|
|
|
PROJECT_NAME ?= standard_game |
|
|
|
RAYLIB_VERSION ?= 3.0.0 |
|
|
|
RAYLIB_API_VERSION ?= 3 |
|
|
|
RAYLIB_VERSION ?= 3.5.0 |
|
|
|
RAYLIB_PATH ?= ../.. |
|
|
|
|
|
|
|
# Define default options
|
|
|
@ -96,6 +95,12 @@ ifeq ($(PLATFORM),PLATFORM_RPI) |
|
|
|
PLATFORM_OS=LINUX |
|
|
|
endif |
|
|
|
endif |
|
|
|
ifeq ($(PLATFORM),PLATFORM_DRM) |
|
|
|
UNAMEOS=$(shell uname) |
|
|
|
ifeq ($(UNAMEOS),Linux) |
|
|
|
PLATFORM_OS=LINUX |
|
|
|
endif |
|
|
|
endif |
|
|
|
|
|
|
|
# RAYLIB_PATH adjustment for different platforms.
|
|
|
|
# If using GNU make, we can get the full path to the top of the tree. Windows? BSD?
|
|
|
@ -110,7 +115,10 @@ endif |
|
|
|
# This is not currently used by src/Makefile. Not sure of its origin or usage. Refer to wiki.
|
|
|
|
# TODO: update install: target in src/Makefile for RPI, consider relation to LINUX.
|
|
|
|
ifeq ($(PLATFORM),PLATFORM_RPI) |
|
|
|
RAYLIB_PATH ?= /home/pi/raylib |
|
|
|
RAYLIB_PATH ?= /home/pi/raylib |
|
|
|
endif |
|
|
|
ifeq ($(PLATFORM),PLATFORM_DRM) |
|
|
|
RAYLIB_PATH ?= /home/pi/raylib |
|
|
|
endif |
|
|
|
|
|
|
|
ifeq ($(PLATFORM),PLATFORM_WEB) |
|
|
@ -118,7 +126,7 @@ ifeq ($(PLATFORM),PLATFORM_WEB) |
|
|
|
EMSDK_PATH ?= C:/emsdk |
|
|
|
EMSCRIPTEN_PATH ?= $(EMSDK_PATH)/upstream/emscripten |
|
|
|
CLANG_PATH = $(EMSDK_PATH)/upstream/bin |
|
|
|
PYTHON_PATH = $(EMSDK_PATH)/python/3.7.4_64bit |
|
|
|
PYTHON_PATH = $(EMSDK_PATH)/python/3.7.4-pywin32_64bit |
|
|
|
NODE_PATH = $(EMSDK_PATH)/node/12.18.1_64bit/bin |
|
|
|
export PATH = $(EMSDK_PATH);$(EMSCRIPTEN_PATH);$(CLANG_PATH);$(NODE_PATH);$(PYTHON_PATH);C:\raylib\MinGW\bin:$$(PATH) |
|
|
|
endif |
|
|
@ -221,6 +229,9 @@ endif |
|
|
|
ifeq ($(PLATFORM),PLATFORM_RPI) |
|
|
|
CFLAGS += -std=gnu99 |
|
|
|
endif |
|
|
|
ifeq ($(PLATFORM),PLATFORM_DRM) |
|
|
|
CFLAGS += -std=gnu99 -DEGL_NO_X11 |
|
|
|
endif |
|
|
|
ifeq ($(PLATFORM),PLATFORM_WEB) |
|
|
|
# -Os # size optimization |
|
|
|
# -O2 # optimization level 2, if used, also set --memory-init-file 0 |
|
|
@ -229,12 +240,13 @@ ifeq ($(PLATFORM),PLATFORM_WEB) |
|
|
|
# -s TOTAL_MEMORY=16777216 # to specify heap memory size (default = 16MB) |
|
|
|
# -s USE_PTHREADS=1 # multithreading support |
|
|
|
# -s WASM=0 # disable Web Assembly, emitted by default |
|
|
|
# -s ASYNCIFY # lets synchronous C/C++ code interact with asynchronous JS |
|
|
|
# -s FORCE_FILESYSTEM=1 # force filesystem to load/save files data |
|
|
|
# -s ASSERTIONS=1 # enable runtime checks for common memory allocation errors (-O1 and above turn it off) |
|
|
|
# --profiling # include information for code profiling |
|
|
|
# --memory-init-file 0 # to avoid an external memory initialization code file (.mem) |
|
|
|
# --preload-file resources # specify a resources folder for data compilation |
|
|
|
CFLAGS += -s USE_GLFW=3 -s ASYNCIFY -s TOTAL_MEMORY=16777216 -s FORCE_FILESYSTEM=1 |
|
|
|
CFLAGS += -s USE_GLFW=3 -s ASYNCIFY -s TOTAL_MEMORY=67108864 -s FORCE_FILESYSTEM=1 |
|
|
|
|
|
|
|
# NOTE: Simple raylib examples are compiled to be interpreter with asyncify, that way, |
|
|
|
# we can compile same code for ALL platforms with no change required, but, working on bigger |
|
|
@ -257,6 +269,10 @@ ifeq ($(PLATFORM),PLATFORM_RPI) |
|
|
|
INCLUDE_PATHS += -I/opt/vc/include/interface/vmcs_host/linux |
|
|
|
INCLUDE_PATHS += -I/opt/vc/include/interface/vcos/pthreads |
|
|
|
endif |
|
|
|
ifeq ($(PLATFORM),PLATFORM_DRM) |
|
|
|
# DRM required libraries |
|
|
|
INCLUDE_PATHS += -I/usr/include/libdrm |
|
|
|
endif |
|
|
|
ifeq ($(PLATFORM),PLATFORM_DESKTOP) |
|
|
|
ifeq ($(PLATFORM_OS),BSD) |
|
|
|
# Consider -L$(RAYLIB_H_INSTALL_PATH) |
|
|
@ -265,7 +281,8 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP) |
|
|
|
ifeq ($(PLATFORM_OS),LINUX) |
|
|
|
# Reset everything. |
|
|
|
# Precedence: immediately local, installed version, raysan5 provided libs -I$(RAYLIB_H_INSTALL_PATH) -I$(RAYLIB_PATH)/release/include |
|
|
|
INCLUDE_PATHS = -I$(RAYLIB_H_INSTALL_PATH) -isystem. -isystem$(RAYLIB_PATH)/src -isystem$(RAYLIB_PATH)/release/include -isystem$(RAYLIB_PATH)/src/external |
|
|
|
#INCLUDE_PATHS = -I$(RAYLIB_H_INSTALL_PATH) -isystem. -isystem$(RAYLIB_PATH)/src -isystem$(RAYLIB_PATH)/release/include -isystem$(RAYLIB_PATH)/src/external |
|
|
|
INCLUDE_PATHS = -I$(RAYLIB_H_INSTALL_PATH) -I. -I$(RAYLIB_PATH)/src -I$(RAYLIB_PATH)/release/include -I$(RAYLIB_PATH)/src/external |
|
|
|
endif |
|
|
|
endif |
|
|
|
|
|
|
@ -275,7 +292,7 @@ LDFLAGS = -L. -L$(RAYLIB_RELEASE_PATH) -L$(RAYLIB_PATH)/src |
|
|
|
ifeq ($(PLATFORM),PLATFORM_DESKTOP) |
|
|
|
ifeq ($(PLATFORM_OS),WINDOWS) |
|
|
|
# resource file contains windows executable icon and properties |
|
|
|
LDFLAGS += $(RAYLIB_PATH)/src/raylib.rc.data |
|
|
|
LDFLAGS += $(RAYLIB_PATH)/src/raylib.rc.data |
|
|
|
# -Wl,--subsystem,windows hides the console window |
|
|
|
ifeq ($(BUILD_MODE), RELEASE) |
|
|
|
LDFLAGS += -Wl,--subsystem,windows |
|
|
@ -288,7 +305,7 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP) |
|
|
|
ifeq ($(PLATFORM_OS),LINUX) |
|
|
|
# Reset everything. |
|
|
|
# Precedence: immediately local, installed version, raysan5 provided libs |
|
|
|
LDFLAGS = -L. -L$(RAYLIB_INSTALL_PATH) -L$(RAYLIB_RELEASE_PATH) |
|
|
|
LDFLAGS = -L. -L$(RAYLIB_INSTALL_PATH) -L$(RAYLIB_RELEASE_PATH) -L$(RAYLIB_PATH) |
|
|
|
endif |
|
|
|
endif |
|
|
|
|
|
|
@ -296,6 +313,10 @@ ifeq ($(PLATFORM),PLATFORM_RPI) |
|
|
|
LDFLAGS += -L/opt/vc/lib |
|
|
|
endif |
|
|
|
|
|
|
|
ifeq ($(PLATFORM),PLATFORM_DRM) |
|
|
|
LDFLAGS += -lGLESv2 -lEGL -ldrm -lgbm |
|
|
|
endif |
|
|
|
|
|
|
|
# Define any libraries required on linking
|
|
|
|
# if you want to link libraries (libname.so or libname.a), use the -lname
|
|
|
|
ifeq ($(PLATFORM),PLATFORM_DESKTOP) |
|
|
@ -328,7 +349,7 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP) |
|
|
|
ifeq ($(PLATFORM_OS),OSX) |
|
|
|
# Libraries for OSX 10.9 desktop compiling |
|
|
|
# NOTE: Required packages: libopenal-dev libegl1-mesa-dev |
|
|
|
LDLIBS = -lraylib -framework OpenGL -framework Cocoa -framework IOKit -framework CoreAudio -framework CoreVideo |
|
|
|
LDLIBS = -lraylib -framework OpenGL -framework Cocoa -framework IOKit -framework CoreAudio -framework CoreVideo |
|
|
|
endif |
|
|
|
ifeq ($(PLATFORM_OS),BSD) |
|
|
|
# Libraries for FreeBSD, OpenBSD, NetBSD, DragonFly desktop compiling |
|
|
@ -348,9 +369,14 @@ ifeq ($(PLATFORM),PLATFORM_RPI) |
|
|
|
# NOTE: Required packages: libasound2-dev (ALSA) |
|
|
|
LDLIBS = -lraylib -lbrcmGLESv2 -lbrcmEGL -lpthread -lrt -lm -lbcm_host -ldl |
|
|
|
endif |
|
|
|
ifeq ($(PLATFORM),PLATFORM_DRM) |
|
|
|
# Libraries for DRM compiling |
|
|
|
# NOTE: Required packages: libasound2-dev (ALSA) |
|
|
|
LDLIBS = -lraylib -lGLESv2 -lEGL -lpthread -lrt -lm -lgbm -ldrm -ldl |
|
|
|
endif |
|
|
|
ifeq ($(PLATFORM),PLATFORM_WEB) |
|
|
|
# Libraries for web (HTML5) compiling |
|
|
|
LDLIBS = $(RAYLIB_RELEASE_PATH)/libraylib.bc |
|
|
|
LDLIBS = $(RAYLIB_RELEASE_PATH)/libraylib.a |
|
|
|
endif |
|
|
|
|
|
|
|
# Define all source files required
|
|
|
@ -395,7 +421,8 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP) |
|
|
|
del *.o *.exe /s |
|
|
|
endif |
|
|
|
ifeq ($(PLATFORM_OS),LINUX) |
|
|
|
find -type f -executable | xargs file -i | grep -E 'x-object|x-archive|x-sharedlib|x-executable|x-pie-executable' | rev | cut -d ':' -f 2- | rev | xargs rm -fv |
|
|
|
find . -type f -executable -delete |
|
|
|
rm -fv *.o |
|
|
|
endif |
|
|
|
ifeq ($(PLATFORM_OS),OSX) |
|
|
|
find . -type f -perm +ugo+x -delete |
|
|
@ -406,6 +433,10 @@ ifeq ($(PLATFORM),PLATFORM_RPI) |
|
|
|
find . -type f -executable -delete |
|
|
|
rm -fv *.o |
|
|
|
endif |
|
|
|
ifeq ($(PLATFORM),PLATFORM_DRM) |
|
|
|
find . -type f -executable -delete |
|
|
|
rm -fv *.o |
|
|
|
endif |
|
|
|
ifeq ($(PLATFORM),PLATFORM_WEB) |
|
|
|
del *.o *.html *.js |
|
|
|
endif |
|
|
|