From 97054e4e0f2293e1984c923d45fab1d576370549 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 6 Feb 2020 18:07:25 +0100 Subject: [PATCH] Review ALL games to raylib 3.0 --- examples/Makefile | 13 +++--- games/Makefile | 50 ++++++++++++--------- games/cat_vs_roomba/Makefile | 60 +++++++++++++++----------- games/cat_vs_roomba/roomba.c | 5 +++ games/cat_vs_roomba/screens/screens.h | 10 ++--- games/drturtle/Makefile | 60 +++++++++++++++----------- games/just_do/Makefile | 60 +++++++++++++++----------- games/koala_seasons/Makefile | 60 +++++++++++++++----------- games/light_my_ritual/Makefile | 60 +++++++++++++++----------- games/repair/Makefile | 16 +++---- games/repair/repair.c | 17 +++----- games/repair/resources/makeup.png | Bin 21801 -> 0 bytes games/repair/resources/qmark.png | Bin 6500 -> 7491 bytes games/repair/screens/screen_ending.c | 2 +- games/repair/screens/screen_logo.c | 8 ++-- games/repair/screens/screen_title.c | 6 +-- games/repair/screens/screens.h | 9 ---- games/skully_escape/Makefile | 60 +++++++++++++++----------- games/transmission/Makefile | 60 +++++++++++++++----------- games/wave_collector/Makefile | 60 +++++++++++++++----------- templates/advance_game/Makefile | 16 +++---- templates/simple_game/Makefile | 13 +++--- templates/standard_game/Makefile | 13 +++--- 23 files changed, 364 insertions(+), 294 deletions(-) delete mode 100644 games/repair/resources/makeup.png diff --git a/examples/Makefile b/examples/Makefile index 536922d0f..9be9dd56e 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -205,11 +205,6 @@ endif # Additional flags for compiler (if desired) #CFLAGS += -Wextra -Wmissing-prototypes -Wstrict-prototypes ifeq ($(PLATFORM),PLATFORM_DESKTOP) - ifeq ($(PLATFORM_OS),WINDOWS) - # resource file contains windows executable icon and properties - # -Wl,--subsystem,windows hides the console window - CFLAGS += $(RAYLIB_PATH)/src/raylib.rc.data -Wl,--subsystem,windows - endif ifeq ($(PLATFORM_OS),LINUX) ifeq ($(RAYLIB_LIBTYPE),STATIC) CFLAGS += -D_DEFAULT_SOURCE @@ -277,6 +272,14 @@ endif 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 + # -Wl,--subsystem,windows hides the console window + ifeq ($(BUILD_MODE), RELEASE) + LDFLAGS += -Wl,--subsystem,windows + endif + endif ifeq ($(PLATFORM_OS),BSD) # Consider -L$(RAYLIB_INSTALL_PATH) LDFLAGS += -L. -Lsrc -L/usr/local/lib diff --git a/games/Makefile b/games/Makefile index 9b06cc0a4..0d44b2dcd 100644 --- a/games/Makefile +++ b/games/Makefile @@ -2,7 +2,7 @@ # # raylib makefile for Desktop platforms, Raspberry Pi, Android and HTML5 # -# Copyright (c) 2013-2019 Ramon Santamaria (@raysan5) +# Copyright (c) 2013-2020 Ramon Santamaria (@raysan5) # # This software is provided "as-is", without any express or implied warranty. In no event # will the authors be held liable for any damages arising from the use of this software. @@ -25,8 +25,8 @@ # Define required raylib variables PROJECT_NAME ?= raylib_examples -RAYLIB_VERSION ?= 2.5.0 -RAYLIB_API_VERSION ?= 2 +RAYLIB_VERSION ?= 3.0.0 +RAYLIB_API_VERSION ?= 3 RAYLIB_PATH ?= .. # Define default options @@ -115,13 +115,12 @@ endif ifeq ($(PLATFORM),PLATFORM_WEB) # Emscripten required variables - EMSDK_PATH ?= D:/emsdk - EMSCRIPTEN_VERSION ?= 1.38.31 - CLANG_VERSION = e$(EMSCRIPTEN_VERSION)_64bit - PYTHON_VERSION = 2.7.13.1_64bit\python-2.7.13.amd64 - NODE_VERSION = 8.9.1_64bit - export PATH = $(EMSDK_PATH);$(EMSDK_PATH)\clang\$(CLANG_VERSION);$(EMSDK_PATH)\node\$(NODE_VERSION)\bin;$(EMSDK_PATH)\python\$(PYTHON_VERSION);$(EMSDK_PATH)\emscripten\$(EMSCRIPTEN_VERSION);C:\raylib\MinGW\bin:$$(PATH) - EMSCRIPTEN = $(EMSDK_PATH)\emscripten\$(EMSCRIPTEN_VERSION) + EMSDK_PATH ?= C:/emsdk + EMSCRIPTEN_PATH ?= $(EMSDK_PATH)/fastcomp/emscripten + CLANG_PATH = $(EMSDK_PATH)/fastcomp/bin + PYTHON_PATH = $(EMSDK_PATH)/python/2.7.13.1_64bit/python-2.7.13.amd64 + NODE_PATH = $(EMSDK_PATH)/node/12.9.1_64bit/bin + export PATH = $(EMSDK_PATH);$(EMSCRIPTEN_PATH);$(CLANG_PATH);$(NODE_PATH);$(PYTHON_PATH);C:\raylib\MinGW\bin:$$(PATH) endif # Define raylib release directory for compiled library. @@ -165,7 +164,7 @@ ifeq ($(PLATFORM),PLATFORM_RPI) endif ifeq ($(PLATFORM),PLATFORM_WEB) # HTML5 emscripten compiler - # WARNING: To compile to HTML5, code must be redesigned + # WARNING: To compile to HTML5, code must be redesigned # to use emscripten.h and emscripten_set_main_loop() CC = emcc endif @@ -188,10 +187,19 @@ endif # -std=gnu99 defines C language mode (GNU C from 1999 revision) # -Wno-missing-braces ignore invalid warning (GCC bug 53119) # -D_DEFAULT_SOURCE use with -std=c99 on Linux and PLATFORM_WEB, required for timespec -CFLAGS += -O1 -s -Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces +CFLAGS += -Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces ifeq ($(BUILD_MODE),DEBUG) CFLAGS += -g + ifeq ($(PLATFORM),PLATFORM_WEB) + CFLAGS += -s ASSERTIONS=1 --profiling + endif +else + ifeq ($(PLATFORM),PLATFORM_WEB) + CFLAGS += -Os + else + CFLAGS += -s -O1 + endif endif # Additional flags for compiler (if desired) @@ -200,7 +208,10 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP) ifeq ($(PLATFORM_OS),WINDOWS) # resource file contains windows executable icon and properties # -Wl,--subsystem,windows hides the console window - CFLAGS += $(RAYLIB_PATH)/src/raylib.rc.data -Wl,--subsystem,windows + CFLAGS += $(RAYLIB_PATH)/src/raylib.rc.data + ifeq ($(BUILD_MODE), RELEASE) + CFLAGS += -Wl,--subsystem,windows + endif endif ifeq ($(PLATFORM_OS),LINUX) ifeq ($(RAYLIB_LIBTYPE),STATIC) @@ -230,10 +241,7 @@ ifeq ($(PLATFORM),PLATFORM_WEB) # --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 += -Os -s USE_GLFW=3 - ifeq ($(BUILD_MODE), DEBUG) - CFLAGS += -s ASSERTIONS=1 --profiling - endif + CFLAGS += -s USE_GLFW=3 # Define a custom shell .html and output extension CFLAGS += --shell-file $(RAYLIB_PATH)/src/shell.html @@ -296,12 +304,12 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP) # Libraries for Debian GNU/Linux desktop compiling # NOTE: Required packages: libegl1-mesa-dev LDLIBS = -lraylib -lGL -lm -lpthread -ldl -lrt - + # On X11 requires also below libraries LDLIBS += -lX11 # NOTE: It seems additional libraries are not required any more, latest GLFW just dlopen them #LDLIBS += -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor - + # On Wayland windowing system, additional libraries requires ifeq ($(USE_WAYLAND_DISPLAY),TRUE) LDLIBS += -lwayland-client -lwayland-cursor -lwayland-egl -lxkbcommon @@ -314,7 +322,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 OpenAL -framework Cocoa + 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 @@ -372,7 +380,7 @@ 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' | rev | cut -d ':' -f 2- | rev | xargs rm -fv + 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 endif ifeq ($(PLATFORM_OS),OSX) find . -type f -perm +ugo+x -delete diff --git a/games/cat_vs_roomba/Makefile b/games/cat_vs_roomba/Makefile index 00041d1d8..03cd56ff3 100644 --- a/games/cat_vs_roomba/Makefile +++ b/games/cat_vs_roomba/Makefile @@ -2,7 +2,7 @@ # # raylib makefile for Desktop platforms, Raspberry Pi, Android and HTML5 # -# Copyright (c) 2013-2019 Ramon Santamaria (@raysan5) +# Copyright (c) 2013-2020 Ramon Santamaria (@raysan5) # # This software is provided "as-is", without any express or implied warranty. In no event # will the authors be held liable for any damages arising from the use of this software. @@ -25,8 +25,8 @@ # Define required raylib variables PROJECT_NAME ?= roomba -RAYLIB_VERSION ?= 2.5.0 -RAYLIB_API_VERSION ?= 2 +RAYLIB_VERSION ?= 3.0.0 +RAYLIB_API_VERSION ?= 3 RAYLIB_PATH ?= C:\GitHub\raylib # Define default options @@ -115,13 +115,12 @@ endif ifeq ($(PLATFORM),PLATFORM_WEB) # Emscripten required variables - EMSDK_PATH ?= C:/emsdk - EMSCRIPTEN_VERSION ?= 1.38.31 - CLANG_VERSION = e$(EMSCRIPTEN_VERSION)_64bit - PYTHON_VERSION = 2.7.13.1_64bit\python-2.7.13.amd64 - NODE_VERSION = 8.9.1_64bit - export PATH = $(EMSDK_PATH);$(EMSDK_PATH)\clang\$(CLANG_VERSION);$(EMSDK_PATH)\node\$(NODE_VERSION)\bin;$(EMSDK_PATH)\python\$(PYTHON_VERSION);$(EMSDK_PATH)\emscripten\$(EMSCRIPTEN_VERSION);C:\raylib\MinGW\bin:$$(PATH) - EMSCRIPTEN = $(EMSDK_PATH)\emscripten\$(EMSCRIPTEN_VERSION) + EMSDK_PATH ?= C:/emsdk + EMSCRIPTEN_PATH ?= $(EMSDK_PATH)/fastcomp/emscripten + CLANG_PATH = $(EMSDK_PATH)/fastcomp/bin + PYTHON_PATH = $(EMSDK_PATH)/python/2.7.13.1_64bit/python-2.7.13.amd64 + NODE_PATH = $(EMSDK_PATH)/node/12.9.1_64bit/bin + export PATH = $(EMSDK_PATH);$(EMSCRIPTEN_PATH);$(CLANG_PATH);$(NODE_PATH);$(PYTHON_PATH);C:\raylib\MinGW\bin:$$(PATH) endif # Define raylib release directory for compiled library. @@ -165,7 +164,7 @@ ifeq ($(PLATFORM),PLATFORM_RPI) endif ifeq ($(PLATFORM),PLATFORM_WEB) # HTML5 emscripten compiler - # WARNING: To compile to HTML5, code must be redesigned + # WARNING: To compile to HTML5, code must be redesigned # to use emscripten.h and emscripten_set_main_loop() CC = emcc endif @@ -188,20 +187,24 @@ endif # -std=gnu99 defines C language mode (GNU C from 1999 revision) # -Wno-missing-braces ignore invalid warning (GCC bug 53119) # -D_DEFAULT_SOURCE use with -std=c99 on Linux and PLATFORM_WEB, required for timespec -CFLAGS += -O1 -s -Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces +CFLAGS += -Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces ifeq ($(BUILD_MODE),DEBUG) CFLAGS += -g + ifeq ($(PLATFORM),PLATFORM_WEB) + CFLAGS += -s ASSERTIONS=1 --profiling + endif +else + ifeq ($(PLATFORM),PLATFORM_WEB) + CFLAGS += -Os + else + CFLAGS += -s -O1 + endif endif # Additional flags for compiler (if desired) #CFLAGS += -Wextra -Wmissing-prototypes -Wstrict-prototypes ifeq ($(PLATFORM),PLATFORM_DESKTOP) - ifeq ($(PLATFORM_OS),WINDOWS) - # resource file contains windows executable icon and properties - # -Wl,--subsystem,windows hides the console window - CFLAGS += $(RAYLIB_PATH)/raylib.rc.data -Wl,--subsystem,windows - endif ifeq ($(PLATFORM_OS),LINUX) ifeq ($(RAYLIB_LIBTYPE),STATIC) CFLAGS += -D_DEFAULT_SOURCE @@ -230,10 +233,7 @@ ifeq ($(PLATFORM),PLATFORM_WEB) # --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 += -Os -s USE_GLFW=3 -s TOTAL_MEMORY=16777216 --preload-file resources - ifeq ($(BUILD_MODE), DEBUG) - CFLAGS += -s ASSERTIONS=1 --profiling - endif + CFLAGS += -s USE_GLFW=3 -s TOTAL_MEMORY=16777216 --preload-file resources # Define a custom shell .html and output extension CFLAGS += --shell-file $(RAYLIB_PATH)/src/shell.html @@ -267,6 +267,14 @@ endif 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 + # -Wl,--subsystem,windows hides the console window + ifeq ($(BUILD_MODE), RELEASE) + LDFLAGS += -Wl,--subsystem,windows + endif + endif ifeq ($(PLATFORM_OS),BSD) # Consider -L$(RAYLIB_INSTALL_PATH) LDFLAGS += -L. -Lsrc -L/usr/local/lib @@ -290,18 +298,18 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP) # NOTE: WinMM library required to set high-res timer resolution LDLIBS = -lraylib -lopengl32 -lgdi32 -lwinmm # Required for physac examples - #LDLIBS += -static -lpthread + LDLIBS += -static -lpthread endif ifeq ($(PLATFORM_OS),LINUX) # Libraries for Debian GNU/Linux desktop compiling # NOTE: Required packages: libegl1-mesa-dev LDLIBS = -lraylib -lGL -lm -lpthread -ldl -lrt - + # On X11 requires also below libraries LDLIBS += -lX11 # NOTE: It seems additional libraries are not required any more, latest GLFW just dlopen them #LDLIBS += -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor - + # On Wayland windowing system, additional libraries requires ifeq ($(USE_WAYLAND_DISPLAY),TRUE) LDLIBS += -lwayland-client -lwayland-cursor -lwayland-egl -lxkbcommon @@ -314,7 +322,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 OpenAL -framework Cocoa + 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 @@ -380,7 +388,7 @@ 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' | rev | cut -d ':' -f 2- | rev | xargs rm -fv + 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 endif ifeq ($(PLATFORM_OS),OSX) find . -type f -perm +ugo+x -delete diff --git a/games/cat_vs_roomba/roomba.c b/games/cat_vs_roomba/roomba.c index 4a27cbcce..303e7127a 100644 --- a/games/cat_vs_roomba/roomba.c +++ b/games/cat_vs_roomba/roomba.c @@ -19,6 +19,11 @@ #include #endif +GameScreen currentScreen = 0; +Font font = { 0 }; +Font font2 = { 0 }; +Music music = { 0 }; +Sound fxCoin = { 0 }; //---------------------------------------------------------------------------------- // Global Variables Definition (local to this module) //---------------------------------------------------------------------------------- diff --git a/games/cat_vs_roomba/screens/screens.h b/games/cat_vs_roomba/screens/screens.h index 0ad4f9af8..b15c9b549 100644 --- a/games/cat_vs_roomba/screens/screens.h +++ b/games/cat_vs_roomba/screens/screens.h @@ -36,11 +36,11 @@ typedef enum GameScreen { LOGO = 0, TITLE, OPTIONS, GAMEPLAY, ENDING } GameScree //---------------------------------------------------------------------------------- // Global Variables Definition //---------------------------------------------------------------------------------- -GameScreen currentScreen; -Font font; -Font font2; -Music music; -Sound fxCoin; +extern GameScreen currentScreen; +extern Font font; +extern Font font2; +extern Music music; +extern Sound fxCoin; int score; int result; // 0-Loose, 1-Win diff --git a/games/drturtle/Makefile b/games/drturtle/Makefile index 5368393f9..ce272e478 100644 --- a/games/drturtle/Makefile +++ b/games/drturtle/Makefile @@ -2,7 +2,7 @@ # # raylib makefile for Desktop platforms, Raspberry Pi, Android and HTML5 # -# Copyright (c) 2013-2019 Ramon Santamaria (@raysan5) +# Copyright (c) 2013-2020 Ramon Santamaria (@raysan5) # # This software is provided "as-is", without any express or implied warranty. In no event # will the authors be held liable for any damages arising from the use of this software. @@ -25,8 +25,8 @@ # Define required raylib variables PROJECT_NAME ?= drturtle -RAYLIB_VERSION ?= 2.5.0 -RAYLIB_API_VERSION ?= 2 +RAYLIB_VERSION ?= 3.0.0 +RAYLIB_API_VERSION ?= 3 RAYLIB_PATH ?= C:\GitHub\raylib # Define default options @@ -115,13 +115,12 @@ endif ifeq ($(PLATFORM),PLATFORM_WEB) # Emscripten required variables - EMSDK_PATH ?= C:/emsdk - EMSCRIPTEN_VERSION ?= 1.38.32 - CLANG_VERSION = e$(EMSCRIPTEN_VERSION)_64bit - PYTHON_VERSION = 2.7.13.1_64bit\python-2.7.13.amd64 - NODE_VERSION = 8.9.1_64bit - export PATH = $(EMSDK_PATH);$(EMSDK_PATH)\clang\$(CLANG_VERSION);$(EMSDK_PATH)\node\$(NODE_VERSION)\bin;$(EMSDK_PATH)\python\$(PYTHON_VERSION);$(EMSDK_PATH)\emscripten\$(EMSCRIPTEN_VERSION);C:\raylib\MinGW\bin:$$(PATH) - EMSCRIPTEN = $(EMSDK_PATH)\emscripten\$(EMSCRIPTEN_VERSION) + EMSDK_PATH ?= C:/emsdk + EMSCRIPTEN_PATH ?= $(EMSDK_PATH)/fastcomp/emscripten + CLANG_PATH = $(EMSDK_PATH)/fastcomp/bin + PYTHON_PATH = $(EMSDK_PATH)/python/2.7.13.1_64bit/python-2.7.13.amd64 + NODE_PATH = $(EMSDK_PATH)/node/12.9.1_64bit/bin + export PATH = $(EMSDK_PATH);$(EMSCRIPTEN_PATH);$(CLANG_PATH);$(NODE_PATH);$(PYTHON_PATH);C:\raylib\MinGW\bin:$$(PATH) endif # Define raylib release directory for compiled library. @@ -165,7 +164,7 @@ ifeq ($(PLATFORM),PLATFORM_RPI) endif ifeq ($(PLATFORM),PLATFORM_WEB) # HTML5 emscripten compiler - # WARNING: To compile to HTML5, code must be redesigned + # WARNING: To compile to HTML5, code must be redesigned # to use emscripten.h and emscripten_set_main_loop() CC = emcc endif @@ -188,20 +187,24 @@ endif # -std=gnu99 defines C language mode (GNU C from 1999 revision) # -Wno-missing-braces ignore invalid warning (GCC bug 53119) # -D_DEFAULT_SOURCE use with -std=c99 on Linux and PLATFORM_WEB, required for timespec -CFLAGS += -O1 -s -Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces +CFLAGS += -Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces ifeq ($(BUILD_MODE),DEBUG) CFLAGS += -g + ifeq ($(PLATFORM),PLATFORM_WEB) + CFLAGS += -s ASSERTIONS=1 --profiling + endif +else + ifeq ($(PLATFORM),PLATFORM_WEB) + CFLAGS += -Os + else + CFLAGS += -s -O1 + endif endif # Additional flags for compiler (if desired) #CFLAGS += -Wextra -Wmissing-prototypes -Wstrict-prototypes ifeq ($(PLATFORM),PLATFORM_DESKTOP) - ifeq ($(PLATFORM_OS),WINDOWS) - # resource file contains windows executable icon and properties - # -Wl,--subsystem,windows hides the console window - CFLAGS += $(RAYLIB_PATH)/raylib.rc.data -Wl,--subsystem,windows - endif ifeq ($(PLATFORM_OS),LINUX) ifeq ($(RAYLIB_LIBTYPE),STATIC) CFLAGS += -D_DEFAULT_SOURCE @@ -230,10 +233,7 @@ ifeq ($(PLATFORM),PLATFORM_WEB) # --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 += -Os -s USE_GLFW=3 -s TOTAL_MEMORY=67108864 --preload-file resources - ifeq ($(BUILD_MODE), DEBUG) - CFLAGS += -s ASSERTIONS=1 --profiling - endif + CFLAGS += -s USE_GLFW=3 -s TOTAL_MEMORY=67108864 --preload-file resources # Define a custom shell .html and output extension CFLAGS += --shell-file $(RAYLIB_PATH)/src/shell.html @@ -267,6 +267,14 @@ endif 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 + # -Wl,--subsystem,windows hides the console window + ifeq ($(BUILD_MODE), RELEASE) + LDFLAGS += -Wl,--subsystem,windows + endif + endif ifeq ($(PLATFORM_OS),BSD) # Consider -L$(RAYLIB_INSTALL_PATH) LDFLAGS += -L. -Lsrc -L/usr/local/lib @@ -290,18 +298,18 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP) # NOTE: WinMM library required to set high-res timer resolution LDLIBS = -lraylib -lopengl32 -lgdi32 -lwinmm # Required for physac examples - #LDLIBS += -static -lpthread + LDLIBS += -static -lpthread endif ifeq ($(PLATFORM_OS),LINUX) # Libraries for Debian GNU/Linux desktop compiling # NOTE: Required packages: libegl1-mesa-dev LDLIBS = -lraylib -lGL -lm -lpthread -ldl -lrt - + # On X11 requires also below libraries LDLIBS += -lX11 # NOTE: It seems additional libraries are not required any more, latest GLFW just dlopen them #LDLIBS += -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor - + # On Wayland windowing system, additional libraries requires ifeq ($(USE_WAYLAND_DISPLAY),TRUE) LDLIBS += -lwayland-client -lwayland-cursor -lwayland-egl -lxkbcommon @@ -314,7 +322,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 OpenAL -framework Cocoa + 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 @@ -359,7 +367,7 @@ 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' | rev | cut -d ':' -f 2- | rev | xargs rm -fv + 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 endif ifeq ($(PLATFORM_OS),OSX) find . -type f -perm +ugo+x -delete diff --git a/games/just_do/Makefile b/games/just_do/Makefile index ee4de401f..7e463174f 100644 --- a/games/just_do/Makefile +++ b/games/just_do/Makefile @@ -2,7 +2,7 @@ # # raylib makefile for Desktop platforms, Raspberry Pi, Android and HTML5 # -# Copyright (c) 2013-2019 Ramon Santamaria (@raysan5) +# Copyright (c) 2013-2020 Ramon Santamaria (@raysan5) # # This software is provided "as-is", without any express or implied warranty. In no event # will the authors be held liable for any damages arising from the use of this software. @@ -25,8 +25,8 @@ # Define required raylib variables PROJECT_NAME ?= just_do -RAYLIB_VERSION ?= 2.5.0 -RAYLIB_API_VERSION ?= 2 +RAYLIB_VERSION ?= 3.0.0 +RAYLIB_API_VERSION ?= 3 RAYLIB_PATH ?= C:\GitHub\raylib # Define default options @@ -115,13 +115,12 @@ endif ifeq ($(PLATFORM),PLATFORM_WEB) # Emscripten required variables - EMSDK_PATH ?= C:/emsdk - EMSCRIPTEN_VERSION ?= 1.38.31 - CLANG_VERSION = e$(EMSCRIPTEN_VERSION)_64bit - PYTHON_VERSION = 2.7.13.1_64bit\python-2.7.13.amd64 - NODE_VERSION = 8.9.1_64bit - export PATH = $(EMSDK_PATH);$(EMSDK_PATH)\clang\$(CLANG_VERSION);$(EMSDK_PATH)\node\$(NODE_VERSION)\bin;$(EMSDK_PATH)\python\$(PYTHON_VERSION);$(EMSDK_PATH)\emscripten\$(EMSCRIPTEN_VERSION);C:\raylib\MinGW\bin:$$(PATH) - EMSCRIPTEN = $(EMSDK_PATH)\emscripten\$(EMSCRIPTEN_VERSION) + EMSDK_PATH ?= C:/emsdk + EMSCRIPTEN_PATH ?= $(EMSDK_PATH)/fastcomp/emscripten + CLANG_PATH = $(EMSDK_PATH)/fastcomp/bin + PYTHON_PATH = $(EMSDK_PATH)/python/2.7.13.1_64bit/python-2.7.13.amd64 + NODE_PATH = $(EMSDK_PATH)/node/12.9.1_64bit/bin + export PATH = $(EMSDK_PATH);$(EMSCRIPTEN_PATH);$(CLANG_PATH);$(NODE_PATH);$(PYTHON_PATH);C:\raylib\MinGW\bin:$$(PATH) endif # Define raylib release directory for compiled library. @@ -165,7 +164,7 @@ ifeq ($(PLATFORM),PLATFORM_RPI) endif ifeq ($(PLATFORM),PLATFORM_WEB) # HTML5 emscripten compiler - # WARNING: To compile to HTML5, code must be redesigned + # WARNING: To compile to HTML5, code must be redesigned # to use emscripten.h and emscripten_set_main_loop() CC = emcc endif @@ -188,20 +187,24 @@ endif # -std=gnu99 defines C language mode (GNU C from 1999 revision) # -Wno-missing-braces ignore invalid warning (GCC bug 53119) # -D_DEFAULT_SOURCE use with -std=c99 on Linux and PLATFORM_WEB, required for timespec -CFLAGS += -O1 -s -Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces +CFLAGS += -Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces ifeq ($(BUILD_MODE),DEBUG) CFLAGS += -g + ifeq ($(PLATFORM),PLATFORM_WEB) + CFLAGS += -s ASSERTIONS=1 --profiling + endif +else + ifeq ($(PLATFORM),PLATFORM_WEB) + CFLAGS += -Os + else + CFLAGS += -s -O1 + endif endif # Additional flags for compiler (if desired) #CFLAGS += -Wextra -Wmissing-prototypes -Wstrict-prototypes ifeq ($(PLATFORM),PLATFORM_DESKTOP) - ifeq ($(PLATFORM_OS),WINDOWS) - # resource file contains windows executable icon and properties - # -Wl,--subsystem,windows hides the console window - CFLAGS += $(RAYLIB_PATH)/raylib.rc.data -Wl,--subsystem,windows - endif ifeq ($(PLATFORM_OS),LINUX) ifeq ($(RAYLIB_LIBTYPE),STATIC) CFLAGS += -D_DEFAULT_SOURCE @@ -230,10 +233,7 @@ ifeq ($(PLATFORM),PLATFORM_WEB) # --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 += -Os -s USE_GLFW=3 -s TOTAL_MEMORY=16777216 --preload-file resources - ifeq ($(BUILD_MODE), DEBUG) - CFLAGS += -s ASSERTIONS=1 --profiling - endif + CFLAGS += -s USE_GLFW=3 -s TOTAL_MEMORY=67108864 --preload-file resources # Define a custom shell .html and output extension CFLAGS += --shell-file $(RAYLIB_PATH)/src/shell.html @@ -267,6 +267,14 @@ endif 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 + # -Wl,--subsystem,windows hides the console window + ifeq ($(BUILD_MODE), RELEASE) + LDFLAGS += -Wl,--subsystem,windows + endif + endif ifeq ($(PLATFORM_OS),BSD) # Consider -L$(RAYLIB_INSTALL_PATH) LDFLAGS += -L. -Lsrc -L/usr/local/lib @@ -290,18 +298,18 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP) # NOTE: WinMM library required to set high-res timer resolution LDLIBS = -lraylib -lopengl32 -lgdi32 -lwinmm # Required for physac examples - #LDLIBS += -static -lpthread + LDLIBS += -static -lpthread endif ifeq ($(PLATFORM_OS),LINUX) # Libraries for Debian GNU/Linux desktop compiling # NOTE: Required packages: libegl1-mesa-dev LDLIBS = -lraylib -lGL -lm -lpthread -ldl -lrt - + # On X11 requires also below libraries LDLIBS += -lX11 # NOTE: It seems additional libraries are not required any more, latest GLFW just dlopen them #LDLIBS += -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor - + # On Wayland windowing system, additional libraries requires ifeq ($(USE_WAYLAND_DISPLAY),TRUE) LDLIBS += -lwayland-client -lwayland-cursor -lwayland-egl -lxkbcommon @@ -314,7 +322,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 OpenAL -framework Cocoa + 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 @@ -387,7 +395,7 @@ 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' | rev | cut -d ':' -f 2- | rev | xargs rm -fv + 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 endif ifeq ($(PLATFORM_OS),OSX) find . -type f -perm +ugo+x -delete diff --git a/games/koala_seasons/Makefile b/games/koala_seasons/Makefile index fea4437d8..18690fe6d 100644 --- a/games/koala_seasons/Makefile +++ b/games/koala_seasons/Makefile @@ -2,7 +2,7 @@ # # raylib makefile for Desktop platforms, Raspberry Pi, Android and HTML5 # -# Copyright (c) 2013-2019 Ramon Santamaria (@raysan5) +# Copyright (c) 2013-2020 Ramon Santamaria (@raysan5) # # This software is provided "as-is", without any express or implied warranty. In no event # will the authors be held liable for any damages arising from the use of this software. @@ -25,8 +25,8 @@ # Define required raylib variables PROJECT_NAME ?= koala_seasons -RAYLIB_VERSION ?= 2.5.0 -RAYLIB_API_VERSION ?= 2 +RAYLIB_VERSION ?= 3.0.0 +RAYLIB_API_VERSION ?= 3 RAYLIB_PATH ?= C:\GitHub\raylib # Define default options @@ -115,13 +115,12 @@ endif ifeq ($(PLATFORM),PLATFORM_WEB) # Emscripten required variables - EMSDK_PATH ?= C:/emsdk - EMSCRIPTEN_VERSION ?= 1.38.32 - CLANG_VERSION = e$(EMSCRIPTEN_VERSION)_64bit - PYTHON_VERSION = 2.7.13.1_64bit\python-2.7.13.amd64 - NODE_VERSION = 8.9.1_64bit - export PATH = $(EMSDK_PATH);$(EMSDK_PATH)\clang\$(CLANG_VERSION);$(EMSDK_PATH)\node\$(NODE_VERSION)\bin;$(EMSDK_PATH)\python\$(PYTHON_VERSION);$(EMSDK_PATH)\emscripten\$(EMSCRIPTEN_VERSION);C:\raylib\MinGW\bin:$$(PATH) - EMSCRIPTEN = $(EMSDK_PATH)\emscripten\$(EMSCRIPTEN_VERSION) + EMSDK_PATH ?= C:/emsdk + EMSCRIPTEN_PATH ?= $(EMSDK_PATH)/fastcomp/emscripten + CLANG_PATH = $(EMSDK_PATH)/fastcomp/bin + PYTHON_PATH = $(EMSDK_PATH)/python/2.7.13.1_64bit/python-2.7.13.amd64 + NODE_PATH = $(EMSDK_PATH)/node/12.9.1_64bit/bin + export PATH = $(EMSDK_PATH);$(EMSCRIPTEN_PATH);$(CLANG_PATH);$(NODE_PATH);$(PYTHON_PATH);C:\raylib\MinGW\bin:$$(PATH) endif # Define raylib release directory for compiled library. @@ -165,7 +164,7 @@ ifeq ($(PLATFORM),PLATFORM_RPI) endif ifeq ($(PLATFORM),PLATFORM_WEB) # HTML5 emscripten compiler - # WARNING: To compile to HTML5, code must be redesigned + # WARNING: To compile to HTML5, code must be redesigned # to use emscripten.h and emscripten_set_main_loop() CC = emcc endif @@ -188,20 +187,24 @@ endif # -std=gnu99 defines C language mode (GNU C from 1999 revision) # -Wno-missing-braces ignore invalid warning (GCC bug 53119) # -D_DEFAULT_SOURCE use with -std=c99 on Linux and PLATFORM_WEB, required for timespec -CFLAGS += -O1 -s -Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces +CFLAGS += -Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces ifeq ($(BUILD_MODE),DEBUG) CFLAGS += -g + ifeq ($(PLATFORM),PLATFORM_WEB) + CFLAGS += -s ASSERTIONS=1 --profiling + endif +else + ifeq ($(PLATFORM),PLATFORM_WEB) + CFLAGS += -Os + else + CFLAGS += -s -O1 + endif endif # Additional flags for compiler (if desired) #CFLAGS += -Wextra -Wmissing-prototypes -Wstrict-prototypes ifeq ($(PLATFORM),PLATFORM_DESKTOP) - ifeq ($(PLATFORM_OS),WINDOWS) - # resource file contains windows executable icon and properties - # -Wl,--subsystem,windows hides the console window - CFLAGS += $(RAYLIB_PATH)/src/raylib.rc.data -Wl,--subsystem,windows - endif ifeq ($(PLATFORM_OS),LINUX) ifeq ($(RAYLIB_LIBTYPE),STATIC) CFLAGS += -D_DEFAULT_SOURCE @@ -230,10 +233,7 @@ ifeq ($(PLATFORM),PLATFORM_WEB) # --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 += -Os -s USE_GLFW=3 -s TOTAL_MEMORY=67108864 --preload-file resources - ifeq ($(BUILD_MODE), DEBUG) - CFLAGS += -s ASSERTIONS=1 --profiling - endif + CFLAGS += -s USE_GLFW=3 -s TOTAL_MEMORY=67108864 --preload-file resources # Define a custom shell .html and output extension CFLAGS += --shell-file $(RAYLIB_PATH)/src/shell.html @@ -267,6 +267,14 @@ endif 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 + # -Wl,--subsystem,windows hides the console window + ifeq ($(BUILD_MODE), RELEASE) + LDFLAGS += -Wl,--subsystem,windows + endif + endif ifeq ($(PLATFORM_OS),BSD) # Consider -L$(RAYLIB_INSTALL_PATH) LDFLAGS += -L. -Lsrc -L/usr/local/lib @@ -290,18 +298,18 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP) # NOTE: WinMM library required to set high-res timer resolution LDLIBS = -lraylib -lopengl32 -lgdi32 -lwinmm # Required for physac examples - #LDLIBS += -static -lpthread + LDLIBS += -static -lpthread endif ifeq ($(PLATFORM_OS),LINUX) # Libraries for Debian GNU/Linux desktop compiling # NOTE: Required packages: libegl1-mesa-dev LDLIBS = -lraylib -lGL -lm -lpthread -ldl -lrt - + # On X11 requires also below libraries LDLIBS += -lX11 # NOTE: It seems additional libraries are not required any more, latest GLFW just dlopen them #LDLIBS += -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor - + # On Wayland windowing system, additional libraries requires ifeq ($(USE_WAYLAND_DISPLAY),TRUE) LDLIBS += -lwayland-client -lwayland-cursor -lwayland-egl -lxkbcommon @@ -314,7 +322,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 OpenAL -framework Cocoa + 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 @@ -380,7 +388,7 @@ 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' | rev | cut -d ':' -f 2- | rev | xargs rm -fv + 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 endif ifeq ($(PLATFORM_OS),OSX) find . -type f -perm +ugo+x -delete diff --git a/games/light_my_ritual/Makefile b/games/light_my_ritual/Makefile index 7c6a14387..5afa857de 100644 --- a/games/light_my_ritual/Makefile +++ b/games/light_my_ritual/Makefile @@ -2,7 +2,7 @@ # # raylib makefile for Desktop platforms, Raspberry Pi, Android and HTML5 # -# Copyright (c) 2013-2019 Ramon Santamaria (@raysan5) +# Copyright (c) 2013-2020 Ramon Santamaria (@raysan5) # # This software is provided "as-is", without any express or implied warranty. In no event # will the authors be held liable for any damages arising from the use of this software. @@ -25,8 +25,8 @@ # Define required raylib variables PROJECT_NAME ?= light_my_ritual -RAYLIB_VERSION ?= 2.5.0 -RAYLIB_API_VERSION ?= 2 +RAYLIB_VERSION ?= 3.0.0 +RAYLIB_API_VERSION ?= 3 RAYLIB_PATH ?= C:\GitHub\raylib # Define default options @@ -115,13 +115,12 @@ endif ifeq ($(PLATFORM),PLATFORM_WEB) # Emscripten required variables - EMSDK_PATH ?= C:/emsdk - EMSCRIPTEN_VERSION ?= 1.38.32 - CLANG_VERSION = e$(EMSCRIPTEN_VERSION)_64bit - PYTHON_VERSION = 2.7.13.1_64bit\python-2.7.13.amd64 - NODE_VERSION = 8.9.1_64bit - export PATH = $(EMSDK_PATH);$(EMSDK_PATH)\clang\$(CLANG_VERSION);$(EMSDK_PATH)\node\$(NODE_VERSION)\bin;$(EMSDK_PATH)\python\$(PYTHON_VERSION);$(EMSDK_PATH)\emscripten\$(EMSCRIPTEN_VERSION);C:\raylib\MinGW\bin:$$(PATH) - EMSCRIPTEN = $(EMSDK_PATH)\emscripten\$(EMSCRIPTEN_VERSION) + EMSDK_PATH ?= C:/emsdk + EMSCRIPTEN_PATH ?= $(EMSDK_PATH)/fastcomp/emscripten + CLANG_PATH = $(EMSDK_PATH)/fastcomp/bin + PYTHON_PATH = $(EMSDK_PATH)/python/2.7.13.1_64bit/python-2.7.13.amd64 + NODE_PATH = $(EMSDK_PATH)/node/12.9.1_64bit/bin + export PATH = $(EMSDK_PATH);$(EMSCRIPTEN_PATH);$(CLANG_PATH);$(NODE_PATH);$(PYTHON_PATH);C:\raylib\MinGW\bin:$$(PATH) endif # Define raylib release directory for compiled library. @@ -165,7 +164,7 @@ ifeq ($(PLATFORM),PLATFORM_RPI) endif ifeq ($(PLATFORM),PLATFORM_WEB) # HTML5 emscripten compiler - # WARNING: To compile to HTML5, code must be redesigned + # WARNING: To compile to HTML5, code must be redesigned # to use emscripten.h and emscripten_set_main_loop() CC = emcc endif @@ -188,20 +187,24 @@ endif # -std=gnu99 defines C language mode (GNU C from 1999 revision) # -Wno-missing-braces ignore invalid warning (GCC bug 53119) # -D_DEFAULT_SOURCE use with -std=c99 on Linux and PLATFORM_WEB, required for timespec -CFLAGS += -O1 -s -Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces +CFLAGS += -Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces ifeq ($(BUILD_MODE),DEBUG) CFLAGS += -g + ifeq ($(PLATFORM),PLATFORM_WEB) + CFLAGS += -s ASSERTIONS=1 --profiling + endif +else + ifeq ($(PLATFORM),PLATFORM_WEB) + CFLAGS += -Os + else + CFLAGS += -s -O1 + endif endif # Additional flags for compiler (if desired) #CFLAGS += -Wextra -Wmissing-prototypes -Wstrict-prototypes ifeq ($(PLATFORM),PLATFORM_DESKTOP) - ifeq ($(PLATFORM_OS),WINDOWS) - # resource file contains windows executable icon and properties - # -Wl,--subsystem,windows hides the console window - CFLAGS += $(RAYLIB_PATH)/raylib.rc.data -Wl,--subsystem,windows - endif ifeq ($(PLATFORM_OS),LINUX) ifeq ($(RAYLIB_LIBTYPE),STATIC) CFLAGS += -D_DEFAULT_SOURCE @@ -230,10 +233,7 @@ ifeq ($(PLATFORM),PLATFORM_WEB) # --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 += -Os -s USE_GLFW=3 -s TOTAL_MEMORY=67108864 --preload-file resources - ifeq ($(BUILD_MODE), DEBUG) - CFLAGS += -s ASSERTIONS=1 --profiling - endif + CFLAGS += -s USE_GLFW=3 -s TOTAL_MEMORY=67108864 --preload-file resources # Define a custom shell .html and output extension CFLAGS += --shell-file $(RAYLIB_PATH)/src/shell.html @@ -267,6 +267,14 @@ endif 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 + # -Wl,--subsystem,windows hides the console window + ifeq ($(BUILD_MODE), RELEASE) + LDFLAGS += -Wl,--subsystem,windows + endif + endif ifeq ($(PLATFORM_OS),BSD) # Consider -L$(RAYLIB_INSTALL_PATH) LDFLAGS += -L. -Lsrc -L/usr/local/lib @@ -290,18 +298,18 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP) # NOTE: WinMM library required to set high-res timer resolution LDLIBS = -lraylib -lopengl32 -lgdi32 -lwinmm # Required for physac examples - #LDLIBS += -static -lpthread + LDLIBS += -static -lpthread endif ifeq ($(PLATFORM_OS),LINUX) # Libraries for Debian GNU/Linux desktop compiling # NOTE: Required packages: libegl1-mesa-dev LDLIBS = -lraylib -lGL -lm -lpthread -ldl -lrt - + # On X11 requires also below libraries LDLIBS += -lX11 # NOTE: It seems additional libraries are not required any more, latest GLFW just dlopen them #LDLIBS += -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor - + # On Wayland windowing system, additional libraries requires ifeq ($(USE_WAYLAND_DISPLAY),TRUE) LDLIBS += -lwayland-client -lwayland-cursor -lwayland-egl -lxkbcommon @@ -314,7 +322,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 OpenAL -framework Cocoa + 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 @@ -379,7 +387,7 @@ 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' | rev | cut -d ':' -f 2- | rev | xargs rm -fv + 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 endif ifeq ($(PLATFORM_OS),OSX) find . -type f -perm +ugo+x -delete diff --git a/games/repair/Makefile b/games/repair/Makefile index 2b7065e3b..63cb45c3a 100644 --- a/games/repair/Makefile +++ b/games/repair/Makefile @@ -205,14 +205,6 @@ endif # Additional flags for compiler (if desired) #CFLAGS += -Wextra -Wmissing-prototypes -Wstrict-prototypes ifeq ($(PLATFORM),PLATFORM_DESKTOP) - ifeq ($(PLATFORM_OS),WINDOWS) - # resource file contains windows executable icon and properties - # -Wl,--subsystem,windows hides the console window - CFLAGS += $(RAYLIB_PATH)/src/raylib.rc.data - ifeq ($(BUILD_MODE), RELEASE) - CFLAGS += -Wl,--subsystem,windows - endif - endif ifeq ($(PLATFORM_OS),LINUX) ifeq ($(RAYLIB_LIBTYPE),STATIC) CFLAGS += -D_DEFAULT_SOURCE @@ -275,6 +267,14 @@ endif 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 + # -Wl,--subsystem,windows hides the console window + ifeq ($(BUILD_MODE), RELEASE) + LDFLAGS += -Wl,--subsystem,windows + endif + endif ifeq ($(PLATFORM_OS),BSD) # Consider -L$(RAYLIB_INSTALL_PATH) LDFLAGS += -L. -Lsrc -L/usr/local/lib diff --git a/games/repair/repair.c b/games/repair/repair.c index df541e349..437f94f65 100644 --- a/games/repair/repair.c +++ b/games/repair/repair.c @@ -1,14 +1,14 @@ /******************************************************************************************* * -* raylib - Advance Game template +* RE_PAIR [GLOBAL GAME JAM 2020] * -* -* +* Let's find your perfect match! +* Ready for dating? Do you need some face tweaks? Choose wisely! * -* This game has been created using raylib (www.raylib.com) +* This game has been created using raylib 3.0 (www.raylib.com) * raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) * -* Copyright (c) 2014-2020 Ramon Santamaria (@raysan5) +* Copyright (c) 2020 Ramon Santamaria (@raysan5) * ********************************************************************************************/ @@ -28,7 +28,6 @@ Texture2D texNPatch = { 0 }; NPatchInfo npInfo = { 0 }; Texture2D texHead, texHair, texNose, texMouth, texEyes, texComp; -Texture2D texMakeup = { 0 }; Character playerBase = { 0 }; Character datingBase = { 0 }; @@ -70,7 +69,7 @@ int main(void) { // Initialization (Note windowTitle is unused on Android) //--------------------------------------------------------- - InitWindow(screenWidth, screenHeight, "raylib template - advance game"); + InitWindow(screenWidth, screenHeight, "RE-PAIR [GGJ2020]"); // Global data loading (assets that must be available in all screens, i.e. fonts) InitAudioDevice(); @@ -97,7 +96,6 @@ int main(void) texMouth = LoadTexture("resources/mouth_models.png"); texEyes = LoadTexture("resources/eyes_models.png"); //texComp = LoadTexture("resources/comp_models.png"); - texMakeup = LoadTexture("resources/makeup.png"); SetMusicVolume(music, 0.5f); //PlayMusicStream(music); @@ -145,7 +143,6 @@ int main(void) UnloadTexture(texMouth); UnloadTexture(texEyes); //UnloadTexture(texComp); - UnloadTexture(texMakeup); CloseAudioDevice(); // Close audio context @@ -217,7 +214,7 @@ bool GuiButton(Rectangle bounds, const char *text, int forcedState) if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = 2; // PRESSED else state = 1; // FOCUSED - if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) + if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON) || IsGestureDetected(GESTURE_TAP)) { pressed = true; PlaySound(fxCoin); diff --git a/games/repair/resources/makeup.png b/games/repair/resources/makeup.png deleted file mode 100644 index 0b8f606929188a45392150cc33e8d580e389060b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21801 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 diff --git a/games/repair/resources/qmark.png b/games/repair/resources/qmark.png index c782062d9dee260197a780c6b5a61f9793227796..6d5e7869e5d31e64b5a559ffab98595cd5b15c95 100644 GIT binary patch literal 7491 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 diff --git a/games/repair/screens/screen_ending.c b/games/repair/screens/screen_ending.c index 728e3d285..95ff41b40 100644 --- a/games/repair/screens/screen_ending.c +++ b/games/repair/screens/screen_ending.c @@ -135,7 +135,7 @@ void UpdateEndingScreen(void) } // Press enter or tap to return to TITLE screen - if (IsKeyPressed(KEY_ENTER) || IsGestureDetected(GESTURE_TAP)) + if (IsKeyPressed(KEY_ENTER)) { finishScreen = 1; PlaySound(fxCoin); diff --git a/games/repair/screens/screen_logo.c b/games/repair/screens/screen_logo.c index 1d8fa9783..d9548450a 100644 --- a/games/repair/screens/screen_logo.c +++ b/games/repair/screens/screen_logo.c @@ -4,7 +4,7 @@ * * Logo Screen Functions Definitions (Init, Update, Draw, Unload) * -* Copyright (c) 2014-2019 Ramon Santamaria (@raysan5) +* Copyright (c) 2014-2020 Ramon Santamaria (@raysan5) * * This software is provided "as-is", without any express or implied warranty. In no event * will the authors be held liable for any damages arising from the use of this software. @@ -47,9 +47,9 @@ static int leftSideRecHeight = 0; static int bottomSideRecWidth = 0; static int rightSideRecHeight = 0; -static char raylib[8] = { 0 }; // raylib text array, max 8 letters -static int state = 0; // Tracking animation states (State Machine) -static float alpha = 1.0f; // Useful for fading +static char raylib[8] = { 0 }; // raylib text array, max 8 letters +static int state = 0; // Tracking animation states (State Machine) +static float alpha = 1.0f; // Useful for fading //---------------------------------------------------------------------------------- // Logo Screen Functions Definition diff --git a/games/repair/screens/screen_title.c b/games/repair/screens/screen_title.c index 460d30634..1d424ae20 100644 --- a/games/repair/screens/screen_title.c +++ b/games/repair/screens/screen_title.c @@ -109,11 +109,7 @@ void DrawTitleScreen(void) if (titleCounter > 180) { - if (GuiButton((Rectangle){ GetScreenWidth()/2 - 440/2, 580, 440, 80 }, "START DATE!", -1)) - { - finishScreen = 1; // GAMEPLAY - PlaySound(fxCoin); - } + if (GuiButton((Rectangle){ GetScreenWidth()/2 - 440/2, 580, 440, 80 }, "START DATE!", -1)) finishScreen = 1; // GAMEPLAY } DrawText("powered by", 20, GetScreenHeight() - texLogo.height - 35, 10, BLACK); diff --git a/games/repair/screens/screens.h b/games/repair/screens/screens.h index 362a15c9a..a9756bb88 100644 --- a/games/repair/screens/screens.h +++ b/games/repair/screens/screens.h @@ -100,15 +100,6 @@ void DrawTitleScreen(void); void UnloadTitleScreen(void); int FinishTitleScreen(void); -//---------------------------------------------------------------------------------- -// Options Screen Functions Declaration -//---------------------------------------------------------------------------------- -void InitOptionsScreen(void); -void UpdateOptionsScreen(void); -void DrawOptionsScreen(void); -void UnloadOptionsScreen(void); -int FinishOptionsScreen(void); - //---------------------------------------------------------------------------------- // Gameplay Screen Functions Declaration //---------------------------------------------------------------------------------- diff --git a/games/skully_escape/Makefile b/games/skully_escape/Makefile index c785eb280..fa45e2a4c 100644 --- a/games/skully_escape/Makefile +++ b/games/skully_escape/Makefile @@ -2,7 +2,7 @@ # # raylib makefile for Desktop platforms, Raspberry Pi, Android and HTML5 # -# Copyright (c) 2013-2019 Ramon Santamaria (@raysan5) +# Copyright (c) 2013-2020 Ramon Santamaria (@raysan5) # # This software is provided "as-is", without any express or implied warranty. In no event # will the authors be held liable for any damages arising from the use of this software. @@ -25,8 +25,8 @@ # Define required raylib variables PROJECT_NAME ?= skully_escape -RAYLIB_VERSION ?= 2.5.0 -RAYLIB_API_VERSION ?= 2 +RAYLIB_VERSION ?= 3.0.0 +RAYLIB_API_VERSION ?= 3 RAYLIB_PATH ?= C:\GitHub\raylib # Define default options @@ -115,13 +115,12 @@ endif ifeq ($(PLATFORM),PLATFORM_WEB) # Emscripten required variables - EMSDK_PATH ?= C:/emsdk - EMSCRIPTEN_VERSION ?= 1.38.32 - CLANG_VERSION = e$(EMSCRIPTEN_VERSION)_64bit - PYTHON_VERSION = 2.7.13.1_64bit\python-2.7.13.amd64 - NODE_VERSION = 8.9.1_64bit - export PATH = $(EMSDK_PATH);$(EMSDK_PATH)\clang\$(CLANG_VERSION);$(EMSDK_PATH)\node\$(NODE_VERSION)\bin;$(EMSDK_PATH)\python\$(PYTHON_VERSION);$(EMSDK_PATH)\emscripten\$(EMSCRIPTEN_VERSION);C:\raylib\MinGW\bin:$$(PATH) - EMSCRIPTEN = $(EMSDK_PATH)\emscripten\$(EMSCRIPTEN_VERSION) + EMSDK_PATH ?= C:/emsdk + EMSCRIPTEN_PATH ?= $(EMSDK_PATH)/fastcomp/emscripten + CLANG_PATH = $(EMSDK_PATH)/fastcomp/bin + PYTHON_PATH = $(EMSDK_PATH)/python/2.7.13.1_64bit/python-2.7.13.amd64 + NODE_PATH = $(EMSDK_PATH)/node/12.9.1_64bit/bin + export PATH = $(EMSDK_PATH);$(EMSCRIPTEN_PATH);$(CLANG_PATH);$(NODE_PATH);$(PYTHON_PATH);C:\raylib\MinGW\bin:$$(PATH) endif # Define raylib release directory for compiled library. @@ -165,7 +164,7 @@ ifeq ($(PLATFORM),PLATFORM_RPI) endif ifeq ($(PLATFORM),PLATFORM_WEB) # HTML5 emscripten compiler - # WARNING: To compile to HTML5, code must be redesigned + # WARNING: To compile to HTML5, code must be redesigned # to use emscripten.h and emscripten_set_main_loop() CC = emcc endif @@ -188,20 +187,24 @@ endif # -std=gnu99 defines C language mode (GNU C from 1999 revision) # -Wno-missing-braces ignore invalid warning (GCC bug 53119) # -D_DEFAULT_SOURCE use with -std=c99 on Linux and PLATFORM_WEB, required for timespec -CFLAGS += -O1 -s -Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces +CFLAGS += -Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces ifeq ($(BUILD_MODE),DEBUG) CFLAGS += -g + ifeq ($(PLATFORM),PLATFORM_WEB) + CFLAGS += -s ASSERTIONS=1 --profiling + endif +else + ifeq ($(PLATFORM),PLATFORM_WEB) + CFLAGS += -Os + else + CFLAGS += -s -O1 + endif endif # Additional flags for compiler (if desired) #CFLAGS += -Wextra -Wmissing-prototypes -Wstrict-prototypes ifeq ($(PLATFORM),PLATFORM_DESKTOP) - ifeq ($(PLATFORM_OS),WINDOWS) - # resource file contains windows executable icon and properties - # -Wl,--subsystem,windows hides the console window - CFLAGS += $(RAYLIB_PATH)/raylib.rc.data -Wl,--subsystem,windows - endif ifeq ($(PLATFORM_OS),LINUX) ifeq ($(RAYLIB_LIBTYPE),STATIC) CFLAGS += -D_DEFAULT_SOURCE @@ -230,10 +233,7 @@ ifeq ($(PLATFORM),PLATFORM_WEB) # --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 += -Os -s USE_GLFW=3 -s TOTAL_MEMORY=67108864 --preload-file resources - ifeq ($(BUILD_MODE), DEBUG) - CFLAGS += -s ASSERTIONS=1 --profiling - endif + CFLAGS += -s USE_GLFW=3 -s TOTAL_MEMORY=67108864 --preload-file resources # Define a custom shell .html and output extension CFLAGS += --shell-file $(RAYLIB_PATH)/src/shell.html @@ -267,6 +267,14 @@ endif 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 + # -Wl,--subsystem,windows hides the console window + ifeq ($(BUILD_MODE), RELEASE) + LDFLAGS += -Wl,--subsystem,windows + endif + endif ifeq ($(PLATFORM_OS),BSD) # Consider -L$(RAYLIB_INSTALL_PATH) LDFLAGS += -L. -Lsrc -L/usr/local/lib @@ -290,18 +298,18 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP) # NOTE: WinMM library required to set high-res timer resolution LDLIBS = -lraylib -lopengl32 -lgdi32 -lwinmm # Required for physac examples - #LDLIBS += -static -lpthread + LDLIBS += -static -lpthread endif ifeq ($(PLATFORM_OS),LINUX) # Libraries for Debian GNU/Linux desktop compiling # NOTE: Required packages: libegl1-mesa-dev LDLIBS = -lraylib -lGL -lm -lpthread -ldl -lrt - + # On X11 requires also below libraries LDLIBS += -lX11 # NOTE: It seems additional libraries are not required any more, latest GLFW just dlopen them #LDLIBS += -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor - + # On Wayland windowing system, additional libraries requires ifeq ($(USE_WAYLAND_DISPLAY),TRUE) LDLIBS += -lwayland-client -lwayland-cursor -lwayland-egl -lxkbcommon @@ -314,7 +322,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 OpenAL -framework Cocoa + 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 @@ -389,7 +397,7 @@ 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' | rev | cut -d ':' -f 2- | rev | xargs rm -fv + 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 endif ifeq ($(PLATFORM_OS),OSX) find . -type f -perm +ugo+x -delete diff --git a/games/transmission/Makefile b/games/transmission/Makefile index 6df64277b..d84993fdf 100644 --- a/games/transmission/Makefile +++ b/games/transmission/Makefile @@ -2,7 +2,7 @@ # # raylib makefile for Desktop platforms, Raspberry Pi, Android and HTML5 # -# Copyright (c) 2013-2019 Ramon Santamaria (@raysan5) +# Copyright (c) 2013-2020 Ramon Santamaria (@raysan5) # # This software is provided "as-is", without any express or implied warranty. In no event # will the authors be held liable for any damages arising from the use of this software. @@ -25,8 +25,8 @@ # Define required raylib variables PROJECT_NAME ?= transmission -RAYLIB_VERSION ?= 2.5.0 -RAYLIB_API_VERSION ?= 2 +RAYLIB_VERSION ?= 3.0.0 +RAYLIB_API_VERSION ?= 3 RAYLIB_PATH ?= C:\GitHub\raylib # Define default options @@ -115,13 +115,12 @@ endif ifeq ($(PLATFORM),PLATFORM_WEB) # Emscripten required variables - EMSDK_PATH ?= C:/emsdk - EMSCRIPTEN_VERSION ?= 1.38.32 - CLANG_VERSION = e$(EMSCRIPTEN_VERSION)_64bit - PYTHON_VERSION = 2.7.13.1_64bit\python-2.7.13.amd64 - NODE_VERSION = 8.9.1_64bit - export PATH = $(EMSDK_PATH);$(EMSDK_PATH)\clang\$(CLANG_VERSION);$(EMSDK_PATH)\node\$(NODE_VERSION)\bin;$(EMSDK_PATH)\python\$(PYTHON_VERSION);$(EMSDK_PATH)\emscripten\$(EMSCRIPTEN_VERSION);C:\raylib\MinGW\bin:$$(PATH) - EMSCRIPTEN = $(EMSDK_PATH)\emscripten\$(EMSCRIPTEN_VERSION) + EMSDK_PATH ?= C:/emsdk + EMSCRIPTEN_PATH ?= $(EMSDK_PATH)/fastcomp/emscripten + CLANG_PATH = $(EMSDK_PATH)/fastcomp/bin + PYTHON_PATH = $(EMSDK_PATH)/python/2.7.13.1_64bit/python-2.7.13.amd64 + NODE_PATH = $(EMSDK_PATH)/node/12.9.1_64bit/bin + export PATH = $(EMSDK_PATH);$(EMSCRIPTEN_PATH);$(CLANG_PATH);$(NODE_PATH);$(PYTHON_PATH);C:\raylib\MinGW\bin:$$(PATH) endif # Define raylib release directory for compiled library. @@ -165,7 +164,7 @@ ifeq ($(PLATFORM),PLATFORM_RPI) endif ifeq ($(PLATFORM),PLATFORM_WEB) # HTML5 emscripten compiler - # WARNING: To compile to HTML5, code must be redesigned + # WARNING: To compile to HTML5, code must be redesigned # to use emscripten.h and emscripten_set_main_loop() CC = emcc endif @@ -188,20 +187,24 @@ endif # -std=gnu99 defines C language mode (GNU C from 1999 revision) # -Wno-missing-braces ignore invalid warning (GCC bug 53119) # -D_DEFAULT_SOURCE use with -std=c99 on Linux and PLATFORM_WEB, required for timespec -CFLAGS += -O1 -s -Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces +CFLAGS += -Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces ifeq ($(BUILD_MODE),DEBUG) CFLAGS += -g + ifeq ($(PLATFORM),PLATFORM_WEB) + CFLAGS += -s ASSERTIONS=1 --profiling + endif +else + ifeq ($(PLATFORM),PLATFORM_WEB) + CFLAGS += -Os + else + CFLAGS += -s -O1 + endif endif # Additional flags for compiler (if desired) #CFLAGS += -Wextra -Wmissing-prototypes -Wstrict-prototypes ifeq ($(PLATFORM),PLATFORM_DESKTOP) - ifeq ($(PLATFORM_OS),WINDOWS) - # resource file contains windows executable icon and properties - # -Wl,--subsystem,windows hides the console window - CFLAGS += $(RAYLIB_PATH)/raylib.rc.data -Wl,--subsystem,windows - endif ifeq ($(PLATFORM_OS),LINUX) ifeq ($(RAYLIB_LIBTYPE),STATIC) CFLAGS += -D_DEFAULT_SOURCE @@ -230,10 +233,7 @@ ifeq ($(PLATFORM),PLATFORM_WEB) # --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 += -Os -s USE_GLFW=3 -s TOTAL_MEMORY=67108864 --preload-file resources - ifeq ($(BUILD_MODE), DEBUG) - CFLAGS += -s ASSERTIONS=1 --profiling - endif + CFLAGS += -s USE_GLFW=3 -s TOTAL_MEMORY=67108864 --preload-file resources # Define a custom shell .html and output extension CFLAGS += --shell-file $(RAYLIB_PATH)/src/shell.html @@ -267,6 +267,14 @@ endif 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 + # -Wl,--subsystem,windows hides the console window + ifeq ($(BUILD_MODE), RELEASE) + LDFLAGS += -Wl,--subsystem,windows + endif + endif ifeq ($(PLATFORM_OS),BSD) # Consider -L$(RAYLIB_INSTALL_PATH) LDFLAGS += -L. -Lsrc -L/usr/local/lib @@ -290,18 +298,18 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP) # NOTE: WinMM library required to set high-res timer resolution LDLIBS = -lraylib -lopengl32 -lgdi32 -lwinmm # Required for physac examples - #LDLIBS += -static -lpthread + LDLIBS += -static -lpthread endif ifeq ($(PLATFORM_OS),LINUX) # Libraries for Debian GNU/Linux desktop compiling # NOTE: Required packages: libegl1-mesa-dev LDLIBS = -lraylib -lGL -lm -lpthread -ldl -lrt - + # On X11 requires also below libraries LDLIBS += -lX11 # NOTE: It seems additional libraries are not required any more, latest GLFW just dlopen them #LDLIBS += -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor - + # On Wayland windowing system, additional libraries requires ifeq ($(USE_WAYLAND_DISPLAY),TRUE) LDLIBS += -lwayland-client -lwayland-cursor -lwayland-egl -lxkbcommon @@ -314,7 +322,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 OpenAL -framework Cocoa + 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 @@ -381,7 +389,7 @@ 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' | rev | cut -d ':' -f 2- | rev | xargs rm -fv + 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 endif ifeq ($(PLATFORM_OS),OSX) find . -type f -perm +ugo+x -delete diff --git a/games/wave_collector/Makefile b/games/wave_collector/Makefile index 894cc7e7d..092d37d97 100644 --- a/games/wave_collector/Makefile +++ b/games/wave_collector/Makefile @@ -2,7 +2,7 @@ # # raylib makefile for Desktop platforms, Raspberry Pi, Android and HTML5 # -# Copyright (c) 2013-2019 Ramon Santamaria (@raysan5) +# Copyright (c) 2013-2020 Ramon Santamaria (@raysan5) # # This software is provided "as-is", without any express or implied warranty. In no event # will the authors be held liable for any damages arising from the use of this software. @@ -25,8 +25,8 @@ # Define required raylib variables PROJECT_NAME ?= wave_collector -RAYLIB_VERSION ?= 2.5.0 -RAYLIB_API_VERSION ?= 2 +RAYLIB_VERSION ?= 3.0.0 +RAYLIB_API_VERSION ?= 3 RAYLIB_PATH ?= C:\GitHub\raylib # Define default options @@ -115,13 +115,12 @@ endif ifeq ($(PLATFORM),PLATFORM_WEB) # Emscripten required variables - EMSDK_PATH ?= C:/emsdk - EMSCRIPTEN_VERSION ?= 1.38.32 - CLANG_VERSION = e$(EMSCRIPTEN_VERSION)_64bit - PYTHON_VERSION = 2.7.13.1_64bit\python-2.7.13.amd64 - NODE_VERSION = 8.9.1_64bit - export PATH = $(EMSDK_PATH);$(EMSDK_PATH)\clang\$(CLANG_VERSION);$(EMSDK_PATH)\node\$(NODE_VERSION)\bin;$(EMSDK_PATH)\python\$(PYTHON_VERSION);$(EMSDK_PATH)\emscripten\$(EMSCRIPTEN_VERSION);C:\raylib\MinGW\bin:$$(PATH) - EMSCRIPTEN = $(EMSDK_PATH)\emscripten\$(EMSCRIPTEN_VERSION) + EMSDK_PATH ?= C:/emsdk + EMSCRIPTEN_PATH ?= $(EMSDK_PATH)/fastcomp/emscripten + CLANG_PATH = $(EMSDK_PATH)/fastcomp/bin + PYTHON_PATH = $(EMSDK_PATH)/python/2.7.13.1_64bit/python-2.7.13.amd64 + NODE_PATH = $(EMSDK_PATH)/node/12.9.1_64bit/bin + export PATH = $(EMSDK_PATH);$(EMSCRIPTEN_PATH);$(CLANG_PATH);$(NODE_PATH);$(PYTHON_PATH);C:\raylib\MinGW\bin:$$(PATH) endif # Define raylib release directory for compiled library. @@ -165,7 +164,7 @@ ifeq ($(PLATFORM),PLATFORM_RPI) endif ifeq ($(PLATFORM),PLATFORM_WEB) # HTML5 emscripten compiler - # WARNING: To compile to HTML5, code must be redesigned + # WARNING: To compile to HTML5, code must be redesigned # to use emscripten.h and emscripten_set_main_loop() CC = emcc endif @@ -188,20 +187,24 @@ endif # -std=gnu99 defines C language mode (GNU C from 1999 revision) # -Wno-missing-braces ignore invalid warning (GCC bug 53119) # -D_DEFAULT_SOURCE use with -std=c99 on Linux and PLATFORM_WEB, required for timespec -CFLAGS += -O1 -s -Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces +CFLAGS += -Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces ifeq ($(BUILD_MODE),DEBUG) CFLAGS += -g + ifeq ($(PLATFORM),PLATFORM_WEB) + CFLAGS += -s ASSERTIONS=1 --profiling + endif +else + ifeq ($(PLATFORM),PLATFORM_WEB) + CFLAGS += -Os + else + CFLAGS += -s -O1 + endif endif # Additional flags for compiler (if desired) #CFLAGS += -Wextra -Wmissing-prototypes -Wstrict-prototypes ifeq ($(PLATFORM),PLATFORM_DESKTOP) - ifeq ($(PLATFORM_OS),WINDOWS) - # resource file contains windows executable icon and properties - # -Wl,--subsystem,windows hides the console window - CFLAGS += $(RAYLIB_PATH)/raylib.rc.data -Wl,--subsystem,windows - endif ifeq ($(PLATFORM_OS),LINUX) ifeq ($(RAYLIB_LIBTYPE),STATIC) CFLAGS += -D_DEFAULT_SOURCE @@ -230,10 +233,7 @@ ifeq ($(PLATFORM),PLATFORM_WEB) # --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 += -Os -s USE_GLFW=3 -s TOTAL_MEMORY=67108864 --preload-file resources - ifeq ($(BUILD_MODE), DEBUG) - CFLAGS += -s ASSERTIONS=1 --profiling - endif + CFLAGS += -s USE_GLFW=3 -s TOTAL_MEMORY=67108864 --preload-file resources # Define a custom shell .html and output extension CFLAGS += --shell-file $(RAYLIB_PATH)/src/shell.html @@ -267,6 +267,14 @@ endif 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 + # -Wl,--subsystem,windows hides the console window + ifeq ($(BUILD_MODE), RELEASE) + LDFLAGS += -Wl,--subsystem,windows + endif + endif ifeq ($(PLATFORM_OS),BSD) # Consider -L$(RAYLIB_INSTALL_PATH) LDFLAGS += -L. -Lsrc -L/usr/local/lib @@ -290,18 +298,18 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP) # NOTE: WinMM library required to set high-res timer resolution LDLIBS = -lraylib -lopengl32 -lgdi32 -lwinmm # Required for physac examples - #LDLIBS += -static -lpthread + LDLIBS += -static -lpthread endif ifeq ($(PLATFORM_OS),LINUX) # Libraries for Debian GNU/Linux desktop compiling # NOTE: Required packages: libegl1-mesa-dev LDLIBS = -lraylib -lGL -lm -lpthread -ldl -lrt - + # On X11 requires also below libraries LDLIBS += -lX11 # NOTE: It seems additional libraries are not required any more, latest GLFW just dlopen them #LDLIBS += -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor - + # On Wayland windowing system, additional libraries requires ifeq ($(USE_WAYLAND_DISPLAY),TRUE) LDLIBS += -lwayland-client -lwayland-cursor -lwayland-egl -lxkbcommon @@ -314,7 +322,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 OpenAL -framework Cocoa + 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 @@ -380,7 +388,7 @@ 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' | rev | cut -d ':' -f 2- | rev | xargs rm -fv + 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 endif ifeq ($(PLATFORM_OS),OSX) find . -type f -perm +ugo+x -delete diff --git a/templates/advance_game/Makefile b/templates/advance_game/Makefile index 0be208f89..440258a46 100644 --- a/templates/advance_game/Makefile +++ b/templates/advance_game/Makefile @@ -205,14 +205,6 @@ endif # Additional flags for compiler (if desired) #CFLAGS += -Wextra -Wmissing-prototypes -Wstrict-prototypes ifeq ($(PLATFORM),PLATFORM_DESKTOP) - ifeq ($(PLATFORM_OS),WINDOWS) - # resource file contains windows executable icon and properties - # -Wl,--subsystem,windows hides the console window - CFLAGS += $(RAYLIB_PATH)/src/raylib.rc.data - ifeq ($(BUILD_MODE), RELEASE) - CFLAGS += -Wl,--subsystem,windows - endif - endif ifeq ($(PLATFORM_OS),LINUX) ifeq ($(RAYLIB_LIBTYPE),STATIC) CFLAGS += -D_DEFAULT_SOURCE @@ -275,6 +267,14 @@ endif 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 + # -Wl,--subsystem,windows hides the console window + ifeq ($(BUILD_MODE), RELEASE) + LDFLAGS += -Wl,--subsystem,windows + endif + endif ifeq ($(PLATFORM_OS),BSD) # Consider -L$(RAYLIB_INSTALL_PATH) LDFLAGS += -L. -Lsrc -L/usr/local/lib diff --git a/templates/simple_game/Makefile b/templates/simple_game/Makefile index 04345a991..a3fe7eb2d 100644 --- a/templates/simple_game/Makefile +++ b/templates/simple_game/Makefile @@ -205,11 +205,6 @@ endif # Additional flags for compiler (if desired) #CFLAGS += -Wextra -Wmissing-prototypes -Wstrict-prototypes ifeq ($(PLATFORM),PLATFORM_DESKTOP) - ifeq ($(PLATFORM_OS),WINDOWS) - # resource file contains windows executable icon and properties - # -Wl,--subsystem,windows hides the console window - CFLAGS += $(RAYLIB_PATH)/src/raylib.rc.data -Wl,--subsystem,windows - endif ifeq ($(PLATFORM_OS),LINUX) ifeq ($(RAYLIB_LIBTYPE),STATIC) CFLAGS += -D_DEFAULT_SOURCE @@ -277,6 +272,14 @@ endif 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 + # -Wl,--subsystem,windows hides the console window + ifeq ($(BUILD_MODE), RELEASE) + LDFLAGS += -Wl,--subsystem,windows + endif + endif ifeq ($(PLATFORM_OS),BSD) # Consider -L$(RAYLIB_INSTALL_PATH) LDFLAGS += -L. -Lsrc -L/usr/local/lib diff --git a/templates/standard_game/Makefile b/templates/standard_game/Makefile index d2f03ce88..1855ce8d1 100644 --- a/templates/standard_game/Makefile +++ b/templates/standard_game/Makefile @@ -205,11 +205,6 @@ endif # Additional flags for compiler (if desired) #CFLAGS += -Wextra -Wmissing-prototypes -Wstrict-prototypes ifeq ($(PLATFORM),PLATFORM_DESKTOP) - ifeq ($(PLATFORM_OS),WINDOWS) - # resource file contains windows executable icon and properties - # -Wl,--subsystem,windows hides the console window - CFLAGS += $(RAYLIB_PATH)/src/raylib.rc.data -Wl,--subsystem,windows - endif ifeq ($(PLATFORM_OS),LINUX) ifeq ($(RAYLIB_LIBTYPE),STATIC) CFLAGS += -D_DEFAULT_SOURCE @@ -277,6 +272,14 @@ endif 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 + # -Wl,--subsystem,windows hides the console window + ifeq ($(BUILD_MODE), RELEASE) + LDFLAGS += -Wl,--subsystem,windows + endif + endif ifeq ($(PLATFORM_OS),BSD) # Consider -L$(RAYLIB_INSTALL_PATH) LDFLAGS += -L. -Lsrc -L/usr/local/lib