From 945f1410d28f2505475300877d83ee0d2123b854 Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 4 Aug 2025 23:24:43 +0200 Subject: [PATCH] MOVED: `rexm` to tools directory --- tools/rexm/LICENSE | 16 ++ tools/rexm/Makefile | 366 ++++++++++++++++++++++++++++++++ tools/rexm/README.md | 20 ++ {examples => tools/rexm}/rexm.c | 0 tools/rexm/rexm.ico | Bin 0 -> 9752 bytes tools/rexm/rexm.rc | 27 +++ 6 files changed, 429 insertions(+) create mode 100644 tools/rexm/LICENSE create mode 100644 tools/rexm/Makefile create mode 100644 tools/rexm/README.md rename {examples => tools/rexm}/rexm.c (100%) create mode 100644 tools/rexm/rexm.ico create mode 100644 tools/rexm/rexm.rc diff --git a/tools/rexm/LICENSE b/tools/rexm/LICENSE new file mode 100644 index 000000000..7d8c7bfc5 --- /dev/null +++ b/tools/rexm/LICENSE @@ -0,0 +1,16 @@ +Copyright (c) 2025 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. + +Permission is granted to anyone to use this software for any purpose, including commercial +applications, and to alter it and redistribute it freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not claim that you + wrote the original software. If you use this software in a product, an acknowledgment + in the product documentation would be appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be misrepresented + as being the original software. + + 3. This notice may not be removed or altered from any source distribution. diff --git a/tools/rexm/Makefile b/tools/rexm/Makefile new file mode 100644 index 000000000..4ac96a1ab --- /dev/null +++ b/tools/rexm/Makefile @@ -0,0 +1,366 @@ +#************************************************************************************************** +# +# raylib makefile for Desktop platforms, Web (Wasm), Raspberry Pi (DRM mode) and Android +# +# Copyright (c) 2013-2025 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. +# +# Permission is granted to anyone to use this software for any purpose, including commercial +# applications, and to alter it and redistribute it freely, subject to the following restrictions: +# +# 1. The origin of this software must not be misrepresented; you must not claim that you +# wrote the original software. If you use this software in a product, an acknowledgment +# in the product documentation would be appreciated but is not required. +# +# 2. Altered source versions must be plainly marked as such, and must not be misrepresented +# as being the original software. +# +# 3. This notice may not be removed or altered from any source distribution. +# +#************************************************************************************************** + +.PHONY: all clean + +# Define required environment variables +#------------------------------------------------------------------------------------------------ +# Define target platform: PLATFORM_DESKTOP, PLATFORM_WEB, PLATFORM_DRM, PLATFORM_ANDROID +PLATFORM ?= PLATFORM_DESKTOP + +# Define project variables +PROJECT_NAME ?= rexm +PROJECT_VERSION ?= 1.0 +PROJECT_BUILD_PATH ?= . +PROJECT_SOURCE_FILES ?= rexm.c + +# raylib library variables +RAYLIB_SRC_PATH ?= C:\raylib\raylib\src +RAYLIB_INCLUDE_PATH ?= $(RAYLIB_SRC_PATH) +RAYLIB_LIB_PATH ?= $(RAYLIB_SRC_PATH) + +# Library type used for raylib: STATIC (.a) or SHARED (.so/.dll) +RAYLIB_LIBTYPE ?= STATIC + +# Define compiler path on Windows +COMPILER_PATH ?= C:\raylib\w64devkit\bin + +# Build mode for project: DEBUG or RELEASE +BUILD_MODE ?= RELEASE + +# PLATFORM_WEB: Default properties +BUILD_WEB_ASYNCIFY ?= FALSE +BUILD_WEB_SHELL ?= minshell.html +BUILD_WEB_HEAP_SIZE ?= 128MB +BUILD_WEB_STACK_SIZE ?= 1MB +BUILD_WEB_ASYNCIFY_STACK_SIZE ?= 1048576 +BUILD_WEB_RESOURCES ?= FALSE +BUILD_WEB_RESOURCES_PATH ?= resources + +# Determine PLATFORM_OS in case PLATFORM_DESKTOP selected +ifeq ($(PLATFORM),PLATFORM_DESKTOP) + # No uname.exe on MinGW!, but OS=Windows_NT on Windows! + # ifeq ($(UNAME),Msys) -> Windows + ifeq ($(OS),Windows_NT) + PLATFORM_OS = WINDOWS + export PATH := $(COMPILER_PATH):$(PATH) + else + UNAMEOS = $(shell uname) + ifeq ($(UNAMEOS),Linux) + PLATFORM_OS = LINUX + endif + ifeq ($(UNAMEOS),FreeBSD) + PLATFORM_OS = BSD + endif + ifeq ($(UNAMEOS),OpenBSD) + PLATFORM_OS = BSD + endif + ifeq ($(UNAMEOS),NetBSD) + PLATFORM_OS = BSD + endif + ifeq ($(UNAMEOS),DragonFly) + PLATFORM_OS = BSD + endif + ifeq ($(UNAMEOS),Darwin) + PLATFORM_OS = OSX + endif + endif +endif +ifeq ($(PLATFORM),PLATFORM_DRM) + UNAMEOS = $(shell uname) + ifeq ($(UNAMEOS),Linux) + PLATFORM_OS = LINUX + endif +endif + +ifeq ($(PLATFORM_OS),WINDOWS) + ifeq ($(PLATFORM),PLATFORM_WEB) + # Emscripten required variables + EMSDK_PATH ?= C:/raylib/emsdk + EMSCRIPTEN_PATH ?= $(EMSDK_PATH)/upstream/emscripten + CLANG_PATH = $(EMSDK_PATH)/upstream/bin + PYTHON_PATH = $(EMSDK_PATH)/python/3.9.2-nuget_64bit + NODE_PATH = $(EMSDK_PATH)/node/20.18.0_64bit/bin + export PATH = $(EMSDK_PATH);$(EMSCRIPTEN_PATH);$(CLANG_PATH);$(NODE_PATH);$(PYTHON_PATH):$$(PATH) + endif +endif + +# Define default C compiler: CC +#------------------------------------------------------------------------------------------------ +CC = gcc + +ifeq ($(PLATFORM),PLATFORM_DESKTOP) + ifeq ($(PLATFORM_OS),OSX) + # OSX default compiler + CC = clang + endif + ifeq ($(PLATFORM_OS),BSD) + # FreeBSD, OpenBSD, NetBSD, DragonFly default compiler + CC = clang + endif +endif +ifeq ($(PLATFORM),PLATFORM_WEB) + # HTML5 emscripten compiler + # WARNING: To compile to HTML5, code must be redesigned + # to use emscripten.h and emscripten_set_main_loop() + CC = emcc +endif +ifeq ($(PLATFORM),PLATFORM_DRM) + ifeq ($(USE_RPI_CROSS_COMPILER),TRUE) + # Define RPI cross-compiler + #CC = armv6j-hardfloat-linux-gnueabi-gcc + CC = $(RPI_TOOLCHAIN)/bin/arm-linux-gnueabihf-gcc + endif +endif + + +# Define default make program: MAKE +#------------------------------------------------------------------------------------------------ +MAKE ?= make + +ifeq ($(PLATFORM),PLATFORM_DESKTOP) + ifeq ($(PLATFORM_OS),WINDOWS) + MAKE = mingw32-make + endif +endif + +# Define compiler flags: CFLAGS +#------------------------------------------------------------------------------------------------ +# -O1 defines optimization level +# -g include debug information on compilation +# -s strip unnecessary data from build +# -Wall turns on most, but not all, compiler warnings +# -std=c99 defines C language mode (standard C from 1999 revision) +# -std=gnu99 defines C language mode (GNU C from 1999 revision) +# -Wno-missing-braces ignore invalid warning (GCC bug 53119) +# -Wno-unused-value ignore unused return values of some functions (i.e. fread()) +# -D_DEFAULT_SOURCE use with -std=c99 on Linux and PLATFORM_WEB, required for timespec +CFLAGS = -std=c99 -Wall -Wno-missing-braces -Wno-unused-value -Wno-pointer-sign -D_DEFAULT_SOURCE $(PROJECT_CUSTOM_FLAGS) +#CFLAGS += -Wextra -Wmissing-prototypes -Wstrict-prototypes + +ifeq ($(BUILD_MODE),DEBUG) + CFLAGS += -g -D_DEBUG +else + ifeq ($(PLATFORM),PLATFORM_WEB) + ifeq ($(BUILD_WEB_ASYNCIFY),TRUE) + CFLAGS += -O3 + else + CFLAGS += -Os + endif + else + ifeq ($(PLATFORM_OS),OSX) + CFLAGS += -O2 + else + CFLAGS += -s -O2 + endif + endif +endif +ifeq ($(PLATFORM),PLATFORM_DRM) + CFLAGS += -std=gnu99 -DEGL_NO_X11 +endif + +# Define include paths for required headers: INCLUDE_PATHS +#------------------------------------------------------------------------------------------------ +INCLUDE_PATHS += -I. -Iexternal -I$(RAYLIB_INCLUDE_PATH) + +# Define additional directories containing required header files +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) + INCLUDE_PATHS += -I/usr/local/include + endif +endif + +# Define library paths containing required libs: LDFLAGS +#------------------------------------------------------------------------------------------------ +LDFLAGS = -L. -L$(RAYLIB_LIB_PATH) + +ifeq ($(PLATFORM),PLATFORM_DESKTOP) + ifeq ($(PLATFORM_OS),WINDOWS) + # NOTE: The resource .rc file contains windows executable icon and properties + LDFLAGS += $(PROJECT_NAME).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 += -Lsrc -L/usr/local/lib + endif + ifeq ($(PLATFORM_OS),LINUX) + # Reset everything. + # Precedence: immediately local, installed version, raysan5 provided libs + #LDFLAGS += -L$(RAYLIB_RELEASE_PATH) + endif +endif +ifeq ($(PLATFORM),PLATFORM_WEB) + # -Os # size optimization + # -O2 # optimization level 2, if used, also set --memory-init-file 0 + # -sUSE_GLFW=3 # Use glfw3 library (context/input management) + # -sALLOW_MEMORY_GROWTH=1 # to allow memory resizing -> WARNING: Audio buffers could FAIL! + # -sTOTAL_MEMORY=16777216 # to specify heap memory size (default = 16MB) (67108864 = 64MB) + # -sUSE_PTHREADS=1 # multithreading support + # -sWASM=0 # disable Web Assembly, emitted by default + # -sASYNCIFY # lets synchronous C/C++ code interact with asynchronous JS + # -sFORCE_FILESYSTEM=1 # force filesystem to load/save files data + # -sASSERTIONS=1 # enable runtime checks for common memory allocation errors (-O1 and above turn it off) + # -sMINIFY_HTML=0 # minify generated html from shell.html + # --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 + # --source-map-base # allow debugging in browser with source map + # --shell-file shell.html # define a custom shell .html and output extension + LDFLAGS += -sUSE_GLFW=3 -sTOTAL_MEMORY=$(BUILD_WEB_HEAP_SIZE) -sSTACK_SIZE=$(BUILD_WEB_STACK_SIZE) -sFORCE_FILESYSTEM=1 -sMINIFY_HTML=0 + + # Build using asyncify + ifeq ($(BUILD_WEB_ASYNCIFY),TRUE) + LDFLAGS += -sASYNCIFY -sASYNCIFY_STACK_SIZE=$(BUILD_WEB_ASYNCIFY_STACK_SIZE) + endif + + # Add resources building if required + ifeq ($(BUILD_WEB_RESOURCES),TRUE) + LDFLAGS += --preload-file $(BUILD_WEB_RESOURCES_PATH) + endif + + # Add debug mode flags if required + ifeq ($(BUILD_MODE),DEBUG) + LDFLAGS += -sASSERTIONS=1 --profiling + endif + + # Define a custom shell .html and output extension + LDFLAGS += --shell-file $(BUILD_WEB_SHELL) + EXT = .html +endif + +# Define libraries required on linking: LDLIBS +# NOTE: To link libraries (lib.so or lib.a), use -l +#------------------------------------------------------------------------------------------------ +ifeq ($(PLATFORM),PLATFORM_DESKTOP) + ifeq ($(PLATFORM_OS),WINDOWS) + # Libraries for Windows desktop compilation + # NOTE: WinMM library required to set high-res timer resolution + LDLIBS = -lraylib -lopengl32 -lgdi32 -lwinmm -lcomdlg32 -lole32 + # Required for physac examples + 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 Wayland windowing system, additional libraries requires + ifeq ($(USE_WAYLAND_DISPLAY),TRUE) + LDLIBS += -lwayland-client -lwayland-cursor -lwayland-egl -lxkbcommon + else + # 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 + endif + # Explicit link to libc + ifeq ($(RAYLIB_LIBTYPE),SHARED) + LDLIBS += -lc + endif + endif + 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 + endif + ifeq ($(PLATFORM_OS),BSD) + # Libraries for FreeBSD, OpenBSD, NetBSD, DragonFly desktop compiling + # NOTE: Required packages: mesa-libs + LDLIBS = -lraylib -lGL -lpthread -lm + + # On XWindow requires also below libraries + LDLIBS += -lX11 -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor + endif +endif +ifeq ($(PLATFORM),PLATFORM_WEB) + # Libraries for web (HTML5) compiling + LDLIBS = $(RAYLIB_LIB_PATH)/libraylib.a +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 + + +# Define all object files from source files +#------------------------------------------------------------------------------------------------ +OBJS = $(patsubst %.c, %.o, $(PROJECT_SOURCE_FILES)) + +# Define processes to execute +#------------------------------------------------------------------------------------------------ +# For Android platform we call a custom Makefile.Android +ifeq ($(PLATFORM),PLATFORM_ANDROID) + MAKEFILE_TARGET = -f Makefile.Android + export PROJECT_NAME + export PROJECT_SOURCE_FILES +else + MAKEFILE_TARGET = $(PROJECT_NAME) +endif + +# Default target entry +# NOTE: We call this Makefile target or Makefile.Android target +all: + $(MAKE) $(MAKEFILE_TARGET) + +# Project target defined by PROJECT_NAME +$(PROJECT_NAME): $(OBJS) + $(CC) -o $(PROJECT_BUILD_PATH)/$(PROJECT_NAME)$(EXT) $(OBJS) $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) + +# Compile source files +# NOTE: This pattern will compile every module defined on $(OBJS) +%.o: %.c + $(CC) -c $< -o $@ $(CFLAGS) $(INCLUDE_PATHS) -D$(PLATFORM) + +# Clean everything +clean: +ifeq ($(PLATFORM),PLATFORM_DESKTOP) + ifeq ($(PLATFORM_OS),WINDOWS) + del *.o *.exe /s + endif + ifeq ($(PLATFORM_OS),LINUX) + find . -type f -executable -delete + rm -fv *.o + endif + ifeq ($(PLATFORM_OS),OSX) + rm -f *.o external/*.o $(PROJECT_NAME) + endif +endif +ifeq ($(PLATFORM),PLATFORM_DRM) + find . -type f -executable -delete + rm -fv *.o +endif +ifeq ($(PLATFORM),PLATFORM_WEB) + del *.o *.html *.js +endif + @echo Cleaning done + diff --git a/tools/rexm/README.md b/tools/rexm/README.md new file mode 100644 index 000000000..101a5b92e --- /dev/null +++ b/tools/rexm/README.md @@ -0,0 +1,20 @@ +## rexm + +### Description + +raylib examples manager + +### Features + + - $(Project Feature 01) + - $(Project Feature 02) + - $(Project Feature 03) + +### Command line + + +### License + +This project sources are licensed under an unmodified zlib/libpng license, which is an OSI-certified, BSD-like license that allows static linking with closed source software. Check [LICENSE](LICENSE) for further details. + +*Copyright (c) 2025 Ramon Santamaria (@raysan5)* diff --git a/examples/rexm.c b/tools/rexm/rexm.c similarity index 100% rename from examples/rexm.c rename to tools/rexm/rexm.c diff --git a/tools/rexm/rexm.ico b/tools/rexm/rexm.ico new file mode 100644 index 0000000000000000000000000000000000000000..0cedcc55cee7da0e5784256078a93f2901e5d734 GIT binary patch literal 9752 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 literal 0 HcmV?d00001 diff --git a/tools/rexm/rexm.rc b/tools/rexm/rexm.rc new file mode 100644 index 000000000..ad125f796 --- /dev/null +++ b/tools/rexm/rexm.rc @@ -0,0 +1,27 @@ +GLFW_ICON ICON "rexm.ico" + +1 VERSIONINFO +FILEVERSION 1,0,0,0 +PRODUCTVERSION 1,0,0,0 +BEGIN + BLOCK "StringFileInfo" + BEGIN + //BLOCK "080904E4" // English UK + BLOCK "040904E4" // English US + BEGIN + VALUE "CompanyName", "Ramon Santamaria" + VALUE "FileDescription", "rexm | raylib examples manager" + VALUE "FileVersion", "1.0" + VALUE "InternalName", "rexm" + VALUE "LegalCopyright", "(c) 2025 Ramon Santamaria" + //VALUE "OriginalFilename", "rexm.exe" + VALUE "rexm", "rexm" + VALUE "ProductVersion", "1.0" + END + END + BLOCK "VarFileInfo" + BEGIN + //VALUE "Translation", 0x809, 1252 // English UK + VALUE "Translation", 0x409, 1252 // English US + END +END