summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRay <[email protected]>2022-01-11 11:20:04 +0100
committerRay <[email protected]>2022-01-11 11:20:04 +0100
commitcabb5518e5e5f738264ed2eb1f18bfa1b3dc8511 (patch)
tree138011689a89ba57b89c668f11ba3084f0340dd9
parentaaf0175d0700698c3c582b78f3683b7085d4226a (diff)
downloadraylib-cabb5518e5e5f738264ed2eb1f18bfa1b3dc8511.tar.gz
raylib-cabb5518e5e5f738264ed2eb1f18bfa1b3dc8511.zip
Improve Makefile organization
-rw-r--r--examples/Makefile56
-rw-r--r--src/Makefile58
2 files changed, 63 insertions, 51 deletions
diff --git a/examples/Makefile b/examples/Makefile
index f0bb6404..d33dc212 100644
--- a/examples/Makefile
+++ b/examples/Makefile
@@ -22,18 +22,18 @@
#**************************************************************************************************
.PHONY: all clean
+# Define required environment variables
+#------------------------------------------------------------------------------------------------
# Define required raylib variables
PROJECT_NAME ?= raylib_examples
RAYLIB_VERSION ?= 4.0.0
RAYLIB_PATH ?= ..
-# Define default options
-
# One of PLATFORM_DESKTOP, PLATFORM_RPI, PLATFORM_ANDROID, PLATFORM_WEB
PLATFORM ?= PLATFORM_DESKTOP
-# Locations of your newly installed library and associated headers. See ../src/Makefile
+# Locations of your newly installed library and associated headers.
# On Linux, if you have installed raylib but cannot compile the examples, check that
# the *_INSTALL_PATH values here are the same as those in src/Makefile or point to known locations.
# To enable system-wide compile-time and runtime linking to libraylib.so, run ../src/$ sudo make install RAYLIB_LIBTYPE_SHARED.
@@ -75,39 +75,39 @@ 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
+ PLATFORM_OS = WINDOWS
else
- UNAMEOS=$(shell uname)
+ UNAMEOS = $(shell uname)
ifeq ($(UNAMEOS),Linux)
- PLATFORM_OS=LINUX
+ PLATFORM_OS = LINUX
endif
ifeq ($(UNAMEOS),FreeBSD)
- PLATFORM_OS=BSD
+ PLATFORM_OS = BSD
endif
ifeq ($(UNAMEOS),OpenBSD)
- PLATFORM_OS=BSD
+ PLATFORM_OS = BSD
endif
ifeq ($(UNAMEOS),NetBSD)
- PLATFORM_OS=BSD
+ PLATFORM_OS = BSD
endif
ifeq ($(UNAMEOS),DragonFly)
- PLATFORM_OS=BSD
+ PLATFORM_OS = BSD
endif
ifeq ($(UNAMEOS),Darwin)
- PLATFORM_OS=OSX
+ PLATFORM_OS = OSX
endif
endif
endif
ifeq ($(PLATFORM),PLATFORM_RPI)
- UNAMEOS=$(shell uname)
+ UNAMEOS = $(shell uname)
ifeq ($(UNAMEOS),Linux)
- PLATFORM_OS=LINUX
+ PLATFORM_OS = LINUX
endif
endif
ifeq ($(PLATFORM),PLATFORM_DRM)
- UNAMEOS=$(shell uname)
+ UNAMEOS = $(shell uname)
ifeq ($(UNAMEOS),Linux)
- PLATFORM_OS=LINUX
+ PLATFORM_OS = LINUX
endif
endif
@@ -158,8 +158,8 @@ RAYLIB_RELEASE_PATH ?= $(RAYLIB_PATH)/src
# Look for libraylib.so.1 => $(RAYLIB_INSTALL_PATH)/libraylib.so.1 or similar listing.
EXAMPLE_RUNTIME_PATH ?= $(RAYLIB_RELEASE_PATH)
-# Define default C compiler: gcc
-# NOTE: define g++ compiler if using C++
+# Define default C compiler: CC
+#------------------------------------------------------------------------------------------------
CC = gcc
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
@@ -186,7 +186,8 @@ ifeq ($(PLATFORM),PLATFORM_WEB)
CC = emcc
endif
-# Define default make program
+# Define default make program: MAKE
+#------------------------------------------------------------------------------------------------
MAKE ?= make
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
@@ -201,7 +202,8 @@ ifeq ($(PLATFORM),PLATFORM_WEB)
MAKE = mingw32-make
endif
-# Define compiler flags:
+# Define compiler flags: CFLAGS
+#------------------------------------------------------------------------------------------------
# -O1 defines optimization level
# -g include debug information on compilation
# -s strip unnecessary data from build
@@ -245,7 +247,8 @@ ifeq ($(PLATFORM),PLATFORM_DRM)
CFLAGS += -std=gnu99 -DEGL_NO_X11
endif
-# Define include paths for required headers
+# Define include paths for required headers: INCLUDE_PATHS
+#------------------------------------------------------------------------------------------------
# NOTE: Some external/extras libraries could be required (stb, physac, easings...)
INCLUDE_PATHS = -I. -I$(RAYLIB_PATH)/src -I$(RAYLIB_PATH)/src/external -I$(RAYLIB_PATH)/src/extras
@@ -270,7 +273,8 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP)
endif
endif
-# Define library paths containing required libs.
+# Define library paths containing required libs: LDFLAGS
+#------------------------------------------------------------------------------------------------
LDFLAGS = -L. -L$(RAYLIB_RELEASE_PATH) -L$(RAYLIB_PATH)/src
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
@@ -322,8 +326,9 @@ ifeq ($(PLATFORM),PLATFORM_RPI)
LDFLAGS += -L$(RPI_TOOLCHAIN_SYSROOT)/opt/vc/lib
endif
-# Define any libraries required on linking
-# if you want to link libraries (libname.so or libname.a), use the -lname
+# Define libraries required on linking: LDLIBS
+# NOTE: To link libraries (lib<name>.so or lib<name>.a), use -l<name>
+#------------------------------------------------------------------------------------------------
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
ifeq ($(PLATFORM_OS),WINDOWS)
# Libraries for Windows desktop compilation
@@ -387,7 +392,8 @@ ifeq ($(PLATFORM),PLATFORM_WEB)
LDLIBS = $(RAYLIB_RELEASE_PATH)/libraylib.a
endif
-# Define all object files required
+# Define source code object files required
+#------------------------------------------------------------------------------------------------
CORE = \
core/core_basic_window \
core/core_basic_screen_manager \
@@ -526,6 +532,8 @@ PHYSICS = \
CURRENT_MAKEFILE = $(lastword $(MAKEFILE_LIST))
+# Define processes to execute
+#------------------------------------------------------------------------------------------------
# Default target entry
all: $(CORE) $(SHAPES) $(TEXT) $(TEXTURES) $(MODELS) $(SHADERS) $(AUDIO) $(PHYSICS)
diff --git a/src/Makefile b/src/Makefile
index 4ecad6f8..23eac580 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -15,33 +15,33 @@
# Many thanks to Milan Nikolic (@gen2brain) for implementing Android platform pipeline.
# Many thanks to Emanuele Petriglia for his contribution on GNU/Linux pipeline.
#
-# Copyright (c) 2014-2022 Ramon Santamaria (@raysan5)
+# Copyright (c) 2013-2022 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.
+# 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:
+# 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.
+# 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.
+# 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.
+# 3. This notice may not be removed or altered from any source distribution.
#
-#******************************************************************************
+#**************************************************************************************************
# Please read the wiki to know how to compile raylib, because there are different methods.
# https://github.com/raysan5/raylib/wiki
.PHONY: all clean install uninstall
+# Define required environment variables
+#------------------------------------------------------------------------------------------------
+
# Define required raylib variables
RAYLIB_VERSION = 4.0.0
RAYLIB_API_VERSION = 400
@@ -220,7 +220,8 @@ ifeq ($(PLATFORM),PLATFORM_ANDROID)
GRAPHICS = GRAPHICS_API_OPENGL_ES2
endif
-# Define default C compiler and archiver to pack library
+# Define default C compiler and archiver to pack library: CC, AR
+#------------------------------------------------------------------------------------------------
CC = gcc
AR = ar
@@ -266,7 +267,8 @@ ifeq ($(PLATFORM),PLATFORM_ANDROID)
AR = $(ANDROID_TOOLCHAIN)/bin/llvm-ar
endif
-# Define compiler flags:
+# Define compiler flags: CFLAGS
+#------------------------------------------------------------------------------------------------
# -O1 defines optimization level
# -g include debug information on compilation
# -s strip unnecessary data from build
@@ -377,7 +379,8 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP)
endif
endif
-# Define include paths for required headers
+# Define include paths for required headers: INCLUDE_PATHS
+#------------------------------------------------------------------------------------------------
# NOTE: Several external required libraries (stb and others)
INCLUDE_PATHS = -I. -Iexternal/glfw/include -Iexternal/glfw/deps/mingw
@@ -418,7 +421,9 @@ ifeq ($(PLATFORM),PLATFORM_ANDROID)
endif
endif
-# Define linker flags (required for dynamic library generation)
+# Define library paths containing required libs: LDFLAGS
+# NOTE: This is only required for dynamic library generation
+#------------------------------------------------------------------------------------------------
LDFLAGS = -L. -L$(RAYLIB_RELEASE_PATH)
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
@@ -452,7 +457,9 @@ ifeq ($(PLATFORM),PLATFORM_ANDROID)
LDFLAGS += -Wl,-undefined,dynamic_lookup
endif
-# Define linker libraries (required for dynamic library generation)
+# Define libraries required on linking: LDLIBS
+# NOTE: This is only required for dynamic library generation
+#------------------------------------------------------------------------------------------------
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
ifeq ($(PLATFORM_OS),WINDOWS)
LDLIBS = -static-libgcc -lopengl32 -lgdi32 -lwinmm
@@ -485,13 +492,8 @@ ifeq ($(PLATFORM),PLATFORM_ANDROID)
LDLIBS = -llog -landroid -lEGL -lGLESv2 -lOpenSLES -lc -lm
endif
-# Define all object files required with a wildcard
-# The wildcard takes all files that finish with ".c",
-# and replaces extentions with ".o", that are the object files
-# NOTE: Some objects depend on the PLATFORM to be added or not!
-# OBJS = $(patsubst %.c, %.o, $(wildcard *.c))
-
-# Define object required on compilation
+# Define source code object files required
+#------------------------------------------------------------------------------------------------
OBJS = rcore.o \
rshapes.o \
rtextures.o \
@@ -520,6 +522,8 @@ ifeq ($(PLATFORM),PLATFORM_ANDROID)
OBJS += android_native_app_glue.o
endif
+# Define processes to execute
+#------------------------------------------------------------------------------------------------
# Default target entry
all: raylib