mirror of
				https://github.com/raysan5/raylib.git
				synced 2025-10-26 12:27:01 +00:00 
			
		
		
		
	Updated makefiles for templates
Now support multiple platforms
This commit is contained in:
		| @@ -23,7 +23,7 @@ | |||||||
|  |  | ||||||
| # define raylib platform to compile for | # define raylib platform to compile for | ||||||
| # possible platforms: PLATFORM_DESKTOP PLATFORM_RPI PLATFORM_WEB | # possible platforms: PLATFORM_DESKTOP PLATFORM_RPI PLATFORM_WEB | ||||||
| # WARNING: To compile examples to HTML5, they must be redesigned to use emscripten.h and emscripten_set_main_loop() | # WARNING: To compile to HTML5, code must be redesigned to use emscripten.h and emscripten_set_main_loop() | ||||||
| PLATFORM ?= PLATFORM_DESKTOP | PLATFORM ?= PLATFORM_DESKTOP | ||||||
|  |  | ||||||
| # determine PLATFORM_OS in case PLATFORM_DESKTOP selected | # determine PLATFORM_OS in case PLATFORM_DESKTOP selected | ||||||
|   | |||||||
| @@ -2,7 +2,7 @@ | |||||||
| # | # | ||||||
| #   raylib - Advance Game | #   raylib - Advance Game | ||||||
| # | # | ||||||
| #   makefile to compile advance game | #   makefile to compile advance game for desktop platforms, Raspberry Pi and HTML5 (emscripten) | ||||||
| # | # | ||||||
| #   Copyright (c) 2014 Ramon Santamaria (Ray San - raysan@raysanweb.com) | #   Copyright (c) 2014 Ramon Santamaria (Ray San - raysan@raysanweb.com) | ||||||
| #     | #     | ||||||
| @@ -23,49 +23,133 @@ | |||||||
| # | # | ||||||
| #************************************************************************************************** | #************************************************************************************************** | ||||||
|  |  | ||||||
| # define raylib platform if not defined (by default, compile for RPI) | # define raylib platform to compile for | ||||||
| # Other possible platform: PLATFORM_DESKTOP | # possible platforms: PLATFORM_DESKTOP PLATFORM_RPI PLATFORM_WEB | ||||||
| PLATFORM ?= PLATFORM_RPI | # WARNING: To compile to HTML5, code must be redesigned to use emscripten.h and emscripten_set_main_loop() | ||||||
|  | PLATFORM ?= PLATFORM_DESKTOP | ||||||
|  |  | ||||||
|  | # 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 | ||||||
|  |         LIBPATH=win32 | ||||||
|  |     else | ||||||
|  |         UNAMEOS:=$(shell uname) | ||||||
|  |         ifeq ($(UNAMEOS),Linux) | ||||||
|  |             PLATFORM_OS=LINUX | ||||||
|  |             LIBPATH=linux | ||||||
|  |         else | ||||||
|  |         ifeq ($(UNAMEOS),Darwin) | ||||||
|  |             PLATFORM_OS=OSX | ||||||
|  |             LIBPATH=osx | ||||||
|  |         endif | ||||||
|  |         endif | ||||||
|  |     endif | ||||||
|  | endif | ||||||
|  |  | ||||||
| # define compiler: gcc for C program, define as g++ for C++ | # define compiler: gcc for C program, define as g++ for C++ | ||||||
| CC = gcc | ifeq ($(PLATFORM),PLATFORM_WEB) | ||||||
|  |     # define emscripten compiler | ||||||
|  |     CC = emcc | ||||||
|  | else | ||||||
|  | ifeq ($(PLATFORM_OS),OSX) | ||||||
|  |     # define llvm compiler for mac | ||||||
|  |     CC = clang | ||||||
|  | else | ||||||
|  |     # define default gcc compiler | ||||||
|  |     CC = gcc | ||||||
|  | endif | ||||||
|  | endif | ||||||
|  |  | ||||||
| # define compiler flags: | # define compiler flags: | ||||||
| #  -O2         defines optimization level | #  -O2         defines optimization level | ||||||
| #  -Wall       turns on most, but not all, compiler warnings | #  -Wall       turns on most, but not all, compiler warnings | ||||||
| #  -std=c99    use standard C from 1999 revision | #  -std=c99    use standard C from 1999 revision | ||||||
| CFLAGS = -O2 -Wall -std=c99 | ifeq ($(PLATFORM),PLATFORM_RPI) | ||||||
|  |     CFLAGS = -O2 -Wall -std=gnu99 -fgnu89-inline | ||||||
|  | else | ||||||
|  |     CFLAGS = -O2 -Wall -std=c99 | ||||||
|  | endif | ||||||
|  | ifeq ($(PLATFORM),PLATFORM_WEB) | ||||||
|  |     CFLAGS = -O1 -Wall -std=c99 -s USE_GLFW=3 -s ASSERTIONS=1 --preload-file resources | ||||||
|  |     #-s ALLOW_MEMORY_GROWTH=1   # to allow memory resizing | ||||||
|  |     #-s TOTAL_MEMORY=16777216   # to specify heap memory size (default = 16MB) | ||||||
|  | endif | ||||||
|  |  | ||||||
| #CFLAGSEXTRA = -Wextra -Wmissing-prototypes -Wstrict-prototypes | #CFLAGSEXTRA = -Wextra -Wmissing-prototypes -Wstrict-prototypes | ||||||
|  |  | ||||||
| # define any directories containing required header files | # define any directories containing required header files | ||||||
| ifeq ($(PLATFORM),PLATFORM_RPI) | ifeq ($(PLATFORM),PLATFORM_RPI) | ||||||
|     INCLUDES = -I. -I./screens -I../../src -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads |     INCLUDES = -I. -I../../src -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads | ||||||
| else | else | ||||||
|     INCLUDES = -I. -I./screens -I../../src |     INCLUDES = -I. -I../../src | ||||||
|  | # external libraries headers | ||||||
|  | # GLFW3 | ||||||
|  |     INCLUDES += -I../../external/glfw3/include | ||||||
|  | # GLEW | ||||||
|  |     INCLUDES += -I../../external/glew/include | ||||||
|  | # OpenAL Soft | ||||||
|  |     INCLUDES += -I../../external/openal_soft/include | ||||||
| endif | endif | ||||||
|  |  | ||||||
| # define library paths containing required libs | # define library paths containing required libs | ||||||
| LFLAGS = -L. -L../../src -L/opt/vc/lib | ifeq ($(PLATFORM),PLATFORM_RPI) | ||||||
|  |     LFLAGS = -L. -L../../src -L/opt/vc/lib | ||||||
|  | else | ||||||
|  |     LFLAGS = -L. -L../../src | ||||||
|  |     # external libraries to link with | ||||||
|  |     # GLFW3 | ||||||
|  |     LFLAGS += -L../../external/glfw3/lib/$(LIBPATH) | ||||||
|  |     ifneq ($(PLATFORM_OS),OSX) | ||||||
|  |     # OpenAL Soft | ||||||
|  |         LFLAGS += -L../../external/openal_soft/lib/$(LIBPATH) | ||||||
|  | 	# GLEW | ||||||
|  |         LFLAGS += -L../../external/glew/lib/$(LIBPATH) | ||||||
|  |     endif | ||||||
|  | endif | ||||||
|  |  | ||||||
| # define any libraries to link into executable | # define any libraries to link into executable | ||||||
| # if you want to link libraries (libname.so or libname.a), use the -lname | # if you want to link libraries (libname.so or libname.a), use the -lname | ||||||
|  | ifeq ($(PLATFORM),PLATFORM_DESKTOP) | ||||||
|  |     ifeq ($(PLATFORM_OS),LINUX) | ||||||
|  |         # libraries for Debian GNU/Linux desktop compiling | ||||||
|  |         # requires the following packages: | ||||||
|  |         # libglfw3-dev libopenal-dev libglew-dev libegl1-mesa-dev | ||||||
|  |         LIBS = -lraylib -lglfw -lGLEW -lGL -lopenal | ||||||
|  |     endif | ||||||
|  |     ifeq ($(PLATFORM_OS),OSX) | ||||||
|  |     	# libraries for OS X 10.9 desktop compiling | ||||||
|  | 	# requires the following packages: | ||||||
|  | 	# libglfw3-dev libopenal-dev libglew-dev libegl1-mesa-dev | ||||||
|  | 	LIBS = -lraylib -lglfw -framework OpenGL -framework OpenAl -framework Cocoa | ||||||
|  |  | ||||||
|  |     else | ||||||
|  |         # libraries for Windows desktop compiling | ||||||
|  |         # NOTE: GLFW3 and OpenAL Soft libraries should be installed | ||||||
|  |         LIBS = -lraylib -lglfw3 -lglew32 -lopengl32 -lopenal32 -lgdi32 | ||||||
|  |     endif | ||||||
|  | endif | ||||||
| ifeq ($(PLATFORM),PLATFORM_RPI) | ifeq ($(PLATFORM),PLATFORM_RPI) | ||||||
|     # libraries for Raspberry Pi compiling |     # libraries for Raspberry Pi compiling | ||||||
|     # NOTE: OpenAL Soft library should be installed (libopenal1 package) |     # NOTE: OpenAL Soft library should be installed (libopenal1 package) | ||||||
|     LIBS = -lraylib -lGLESv2 -lEGL -lpthread -lrt -lm -lbcm_host -lopenal |     LIBS = -lraylib -lGLESv2 -lEGL -lpthread -lrt -lm -lbcm_host -lopenal | ||||||
| else | endif | ||||||
|     # libraries for Windows desktop compiling | ifeq ($(PLATFORM),PLATFORM_WEB) | ||||||
|     # NOTE: GLFW3 and OpenAL Soft libraries should be installed |     LIBS = ../../src/libraylib.bc | ||||||
|     LIBS = -lraylib -lglfw3 -lglew32 -lopengl32 -lopenal32 -lgdi32 |  | ||||||
| endif | endif | ||||||
|  |  | ||||||
| # define additional parameters and flags for windows | # define additional parameters and flags for windows | ||||||
| ifeq ($(PLATFORM),PLATFORM_DESKTOP) | ifeq ($(PLATFORM_OS),WINDOWS) | ||||||
|     # resources file contains windows exe icon |     # resources file contains windows exe icon | ||||||
|     # -Wl,--subsystem,windows hides the console window |     # -Wl,--subsystem,windows hides the console window | ||||||
|     WINFLAGS = ../../src/resources -Wl,--subsystem,windows |     WINFLAGS = ../../src/resources -Wl,--subsystem,windows | ||||||
| endif | endif | ||||||
|  |  | ||||||
|  | ifeq ($(PLATFORM),PLATFORM_WEB) | ||||||
|  |     EXT = .html | ||||||
|  | endif | ||||||
|  |  | ||||||
| # define all screen object files required | # define all screen object files required | ||||||
| SCREENS = \ | SCREENS = \ | ||||||
| 	screens/screen_logo.o \ | 	screens/screen_logo.o \ | ||||||
| @@ -80,7 +164,7 @@ default: advance_game | |||||||
|  |  | ||||||
| # compile template - advance_game | # compile template - advance_game | ||||||
| advance_game: advance_game.c $(SCREENS) | advance_game: advance_game.c $(SCREENS) | ||||||
| 	$(CC) -o $@ $< $(SCREENS) $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) | 	$(CC) -o $@$(EXT) $< $(SCREENS) $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) | ||||||
|  |  | ||||||
| # compile screen LOGO | # compile screen LOGO | ||||||
| screens/screen_logo.o: screens/screen_logo.c | screens/screen_logo.o: screens/screen_logo.c | ||||||
| @@ -104,11 +188,25 @@ screens/screen_ending.o: screens/screen_ending.c | |||||||
|  |  | ||||||
| # clean everything | # clean everything | ||||||
| clean: | clean: | ||||||
|  | ifeq ($(PLATFORM),PLATFORM_DESKTOP) | ||||||
|  |     ifeq ($(PLATFORM_OS),OSX) | ||||||
|  | 		find . -type f -perm +ugo+x -delete | ||||||
|  | 		rm -f *.o | ||||||
|  |     else | ||||||
|  |     ifeq ($(PLATFORM_OS),LINUX) | ||||||
|  | 		find . -type f -executable -delete | ||||||
|  | 		rm -f *.o | ||||||
|  |     else | ||||||
|  | 		del *.o *.exe | ||||||
|  |     endif | ||||||
|  |     endif | ||||||
|  | endif | ||||||
| ifeq ($(PLATFORM),PLATFORM_RPI) | ifeq ($(PLATFORM),PLATFORM_RPI) | ||||||
| 	rm -f screens/*.o | 	find . -type f -executable -delete | ||||||
| #	find . -executable -delete | 	rm -f *.o | ||||||
| else | endif | ||||||
| 	del screens/*.o *.exe | ifeq ($(PLATFORM),PLATFORM_WEB) | ||||||
|  | 	del *.o *.html *.js | ||||||
| endif | endif | ||||||
| 	@echo Cleaning done | 	@echo Cleaning done | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,7 +2,7 @@ | |||||||
| # | # | ||||||
| #   raylib - Basic Game | #   raylib - Basic Game | ||||||
| # | # | ||||||
| #   makefile to compile basic game | #   makefile to compile basic game for desktop platforms, Raspberry Pi and HTML5 (emscripten) | ||||||
| # | # | ||||||
| #   Copyright (c) 2014 Ramon Santamaria (Ray San - raysan@raysanweb.com) | #   Copyright (c) 2014 Ramon Santamaria (Ray San - raysan@raysanweb.com) | ||||||
| #     | #     | ||||||
| @@ -23,18 +23,60 @@ | |||||||
| # | # | ||||||
| #************************************************************************************************** | #************************************************************************************************** | ||||||
|  |  | ||||||
| # define raylib platform (by default, compile for RPI) | # define raylib platform to compile for | ||||||
| # Other possible platform: PLATFORM_DESKTOP | # possible platforms: PLATFORM_DESKTOP PLATFORM_RPI PLATFORM_WEB | ||||||
| PLATFORM ?= PLATFORM_RPI | # WARNING: To compile to HTML5, code must be redesigned to use emscripten.h and emscripten_set_main_loop() | ||||||
|  | PLATFORM ?= PLATFORM_DESKTOP | ||||||
|  |  | ||||||
|  | # 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 | ||||||
|  |         LIBPATH=win32 | ||||||
|  |     else | ||||||
|  |         UNAMEOS:=$(shell uname) | ||||||
|  |         ifeq ($(UNAMEOS),Linux) | ||||||
|  |             PLATFORM_OS=LINUX | ||||||
|  |             LIBPATH=linux | ||||||
|  |         else | ||||||
|  |         ifeq ($(UNAMEOS),Darwin) | ||||||
|  |             PLATFORM_OS=OSX | ||||||
|  |             LIBPATH=osx | ||||||
|  |         endif | ||||||
|  |         endif | ||||||
|  |     endif | ||||||
|  | endif | ||||||
|  |  | ||||||
| # define compiler: gcc for C program, define as g++ for C++ | # define compiler: gcc for C program, define as g++ for C++ | ||||||
| CC = gcc | ifeq ($(PLATFORM),PLATFORM_WEB) | ||||||
|  |     # define emscripten compiler | ||||||
|  |     CC = emcc | ||||||
|  | else | ||||||
|  | ifeq ($(PLATFORM_OS),OSX) | ||||||
|  |     # define llvm compiler for mac | ||||||
|  |     CC = clang | ||||||
|  | else | ||||||
|  |     # define default gcc compiler | ||||||
|  |     CC = gcc | ||||||
|  | endif | ||||||
|  | endif | ||||||
|  |  | ||||||
| # define compiler flags: | # define compiler flags: | ||||||
| #  -O2         defines optimization level | #  -O2         defines optimization level | ||||||
| #  -Wall       turns on most, but not all, compiler warnings | #  -Wall       turns on most, but not all, compiler warnings | ||||||
| #  -std=c99    use standard C from 1999 revision | #  -std=c99    use standard C from 1999 revision | ||||||
| CFLAGS = -O2 -Wall -std=c99 | ifeq ($(PLATFORM),PLATFORM_RPI) | ||||||
|  |     CFLAGS = -O2 -Wall -std=gnu99 -fgnu89-inline | ||||||
|  | else | ||||||
|  |     CFLAGS = -O2 -Wall -std=c99 | ||||||
|  | endif | ||||||
|  | ifeq ($(PLATFORM),PLATFORM_WEB) | ||||||
|  |     CFLAGS = -O1 -Wall -std=c99 -s USE_GLFW=3 -s ASSERTIONS=1 --preload-file resources | ||||||
|  |     #-s ALLOW_MEMORY_GROWTH=1   # to allow memory resizing | ||||||
|  |     #-s TOTAL_MEMORY=16777216   # to specify heap memory size (default = 16MB) | ||||||
|  | endif | ||||||
|  |  | ||||||
| #CFLAGSEXTRA = -Wextra -Wmissing-prototypes -Wstrict-prototypes | #CFLAGSEXTRA = -Wextra -Wmissing-prototypes -Wstrict-prototypes | ||||||
|  |  | ||||||
| # define any directories containing required header files | # define any directories containing required header files | ||||||
| @@ -42,45 +84,101 @@ ifeq ($(PLATFORM),PLATFORM_RPI) | |||||||
|     INCLUDES = -I. -I../../src -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads |     INCLUDES = -I. -I../../src -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads | ||||||
| else | else | ||||||
|     INCLUDES = -I. -I../../src |     INCLUDES = -I. -I../../src | ||||||
|  | # external libraries headers | ||||||
|  | # GLFW3 | ||||||
|  |     INCLUDES += -I../../external/glfw3/include | ||||||
|  | # GLEW | ||||||
|  |     INCLUDES += -I../../external/glew/include | ||||||
|  | # OpenAL Soft | ||||||
|  |     INCLUDES += -I../../external/openal_soft/include | ||||||
| endif | endif | ||||||
|  |  | ||||||
| # define library paths containing required libs | # define library paths containing required libs | ||||||
| LFLAGS = -L. -L../../src -L/opt/vc/lib | ifeq ($(PLATFORM),PLATFORM_RPI) | ||||||
|  |     LFLAGS = -L. -L../../src -L/opt/vc/lib | ||||||
|  | else | ||||||
|  |     LFLAGS = -L. -L../../src | ||||||
|  |     # external libraries to link with | ||||||
|  |     # GLFW3 | ||||||
|  |     LFLAGS += -L../../external/glfw3/lib/$(LIBPATH) | ||||||
|  |     ifneq ($(PLATFORM_OS),OSX) | ||||||
|  |     # OpenAL Soft | ||||||
|  |         LFLAGS += -L../../external/openal_soft/lib/$(LIBPATH) | ||||||
|  | 	# GLEW | ||||||
|  |         LFLAGS += -L../../external/glew/lib/$(LIBPATH) | ||||||
|  |     endif | ||||||
|  | endif | ||||||
|  |  | ||||||
| # define any libraries to link into executable | # define any libraries to link into executable | ||||||
| # if you want to link libraries (libname.so or libname.a), use the -lname | # if you want to link libraries (libname.so or libname.a), use the -lname | ||||||
|  | ifeq ($(PLATFORM),PLATFORM_DESKTOP) | ||||||
|  |     ifeq ($(PLATFORM_OS),LINUX) | ||||||
|  |         # libraries for Debian GNU/Linux desktop compiling | ||||||
|  |         # requires the following packages: | ||||||
|  |         # libglfw3-dev libopenal-dev libglew-dev libegl1-mesa-dev | ||||||
|  |         LIBS = -lraylib -lglfw -lGLEW -lGL -lopenal | ||||||
|  |     endif | ||||||
|  |     ifeq ($(PLATFORM_OS),OSX) | ||||||
|  |     	# libraries for OS X 10.9 desktop compiling | ||||||
|  | 	# requires the following packages: | ||||||
|  | 	# libglfw3-dev libopenal-dev libglew-dev libegl1-mesa-dev | ||||||
|  | 	LIBS = -lraylib -lglfw -framework OpenGL -framework OpenAl -framework Cocoa | ||||||
|  |  | ||||||
|  |     else | ||||||
|  |         # libraries for Windows desktop compiling | ||||||
|  |         # NOTE: GLFW3 and OpenAL Soft libraries should be installed | ||||||
|  |         LIBS = -lraylib -lglfw3 -lglew32 -lopengl32 -lopenal32 -lgdi32 | ||||||
|  |     endif | ||||||
|  | endif | ||||||
| ifeq ($(PLATFORM),PLATFORM_RPI) | ifeq ($(PLATFORM),PLATFORM_RPI) | ||||||
|     # libraries for Raspberry Pi compiling |     # libraries for Raspberry Pi compiling | ||||||
|     # NOTE: OpenAL Soft library should be installed (libopenal1 package) |     # NOTE: OpenAL Soft library should be installed (libopenal1 package) | ||||||
|     LIBS = -lraylib -lGLESv2 -lEGL -lpthread -lrt -lm -lbcm_host -lopenal |     LIBS = -lraylib -lGLESv2 -lEGL -lpthread -lrt -lm -lbcm_host -lopenal | ||||||
| else | endif | ||||||
|     # libraries for Windows desktop compiling | ifeq ($(PLATFORM),PLATFORM_WEB) | ||||||
|     # NOTE: GLFW3 and OpenAL Soft libraries should be installed |     LIBS = ../../src/libraylib.bc | ||||||
|     LIBS = -lraylib -lglfw3 -lglew32 -lopengl32 -lopenal32 -lgdi32 |  | ||||||
| endif | endif | ||||||
|  |  | ||||||
| # define additional parameters and flags for windows | # define additional parameters and flags for windows | ||||||
| ifeq ($(PLATFORM),PLATFORM_DESKTOP) | ifeq ($(PLATFORM_OS),WINDOWS) | ||||||
|     # resources file contains windows exe icon |     # resources file contains windows exe icon | ||||||
|     # -Wl,--subsystem,windows hides the console window |     # -Wl,--subsystem,windows hides the console window | ||||||
|     WINFLAGS = ../../src/resources -Wl,--subsystem,windows |     WINFLAGS = ../../src/resources -Wl,--subsystem,windows | ||||||
| endif | endif | ||||||
|  |  | ||||||
|  | ifeq ($(PLATFORM),PLATFORM_WEB) | ||||||
|  |     EXT = .html | ||||||
|  | endif | ||||||
|  |  | ||||||
| # typing 'make' will invoke the first target entry in the file, | # typing 'make' will invoke the first target entry in the file, | ||||||
| # in this case, the 'default' target entry is basic_game | # in this case, the 'default' target entry is basic_game | ||||||
| default: basic_game | default: basic_game | ||||||
|  |  | ||||||
| # compile template - basic_game | # compile template - basic_game | ||||||
| basic_game: basic_game.c | basic_game: basic_game.c | ||||||
| 	$(CC) -o $@ $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) | 	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) | ||||||
|  |  | ||||||
| # clean everything | # clean everything | ||||||
| clean: | clean: | ||||||
|  | ifeq ($(PLATFORM),PLATFORM_DESKTOP) | ||||||
|  |     ifeq ($(PLATFORM_OS),OSX) | ||||||
|  | 		find . -type f -perm +ugo+x -delete | ||||||
|  | 		rm -f *.o | ||||||
|  |     else | ||||||
|  |     ifeq ($(PLATFORM_OS),LINUX) | ||||||
|  | 		find . -type f -executable -delete | ||||||
|  | 		rm -f *.o | ||||||
|  |     else | ||||||
|  | 		del *.o *.exe | ||||||
|  |     endif | ||||||
|  |     endif | ||||||
|  | endif | ||||||
| ifeq ($(PLATFORM),PLATFORM_RPI) | ifeq ($(PLATFORM),PLATFORM_RPI) | ||||||
|  | 	find . -type f -executable -delete | ||||||
| 	rm -f *.o | 	rm -f *.o | ||||||
| #	find . -executable -delete | endif | ||||||
| else | ifeq ($(PLATFORM),PLATFORM_WEB) | ||||||
| 	del *.o *.exe | 	del *.o *.html *.js | ||||||
| endif | endif | ||||||
| 	@echo Cleaning done | 	@echo Cleaning done | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,7 +2,7 @@ | |||||||
| # | # | ||||||
| #   raylib - Basic Test | #   raylib - Basic Test | ||||||
| # | # | ||||||
| #   makefile to compile basic test | #   makefile to compile basic test for desktop platforms, Raspberry Pi and HTML5 (emscripten) | ||||||
| # | # | ||||||
| #   Copyright (c) 2014 Ramon Santamaria (Ray San - raysan@raysanweb.com) | #   Copyright (c) 2014 Ramon Santamaria (Ray San - raysan@raysanweb.com) | ||||||
| #     | #     | ||||||
| @@ -23,18 +23,60 @@ | |||||||
| # | # | ||||||
| #************************************************************************************************** | #************************************************************************************************** | ||||||
|  |  | ||||||
| # define raylib platform if not defined (by default, compile for RPI) | # define raylib platform to compile for | ||||||
| # Other possible platform: PLATFORM_DESKTOP | # possible platforms: PLATFORM_DESKTOP PLATFORM_RPI PLATFORM_WEB | ||||||
| PLATFORM ?= PLATFORM_RPI | # WARNING: To compile to HTML5, code must be redesigned to use emscripten.h and emscripten_set_main_loop() | ||||||
|  | PLATFORM ?= PLATFORM_DESKTOP | ||||||
|  |  | ||||||
|  | # 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 | ||||||
|  |         LIBPATH=win32 | ||||||
|  |     else | ||||||
|  |         UNAMEOS:=$(shell uname) | ||||||
|  |         ifeq ($(UNAMEOS),Linux) | ||||||
|  |             PLATFORM_OS=LINUX | ||||||
|  |             LIBPATH=linux | ||||||
|  |         else | ||||||
|  |         ifeq ($(UNAMEOS),Darwin) | ||||||
|  |             PLATFORM_OS=OSX | ||||||
|  |             LIBPATH=osx | ||||||
|  |         endif | ||||||
|  |         endif | ||||||
|  |     endif | ||||||
|  | endif | ||||||
|  |  | ||||||
| # define compiler: gcc for C program, define as g++ for C++ | # define compiler: gcc for C program, define as g++ for C++ | ||||||
| CC = gcc | ifeq ($(PLATFORM),PLATFORM_WEB) | ||||||
|  |     # define emscripten compiler | ||||||
|  |     CC = emcc | ||||||
|  | else | ||||||
|  | ifeq ($(PLATFORM_OS),OSX) | ||||||
|  |     # define llvm compiler for mac | ||||||
|  |     CC = clang | ||||||
|  | else | ||||||
|  |     # define default gcc compiler | ||||||
|  |     CC = gcc | ||||||
|  | endif | ||||||
|  | endif | ||||||
|  |  | ||||||
| # define compiler flags: | # define compiler flags: | ||||||
| #  -O2         defines optimization level | #  -O2         defines optimization level | ||||||
| #  -Wall       turns on most, but not all, compiler warnings | #  -Wall       turns on most, but not all, compiler warnings | ||||||
| #  -std=c99    use standard C from 1999 revision | #  -std=c99    use standard C from 1999 revision | ||||||
| CFLAGS = -O2 -Wall -std=c99 | ifeq ($(PLATFORM),PLATFORM_RPI) | ||||||
|  |     CFLAGS = -O2 -Wall -std=gnu99 -fgnu89-inline | ||||||
|  | else | ||||||
|  |     CFLAGS = -O2 -Wall -std=c99 | ||||||
|  | endif | ||||||
|  | ifeq ($(PLATFORM),PLATFORM_WEB) | ||||||
|  |     CFLAGS = -O1 -Wall -std=c99 -s USE_GLFW=3 -s ASSERTIONS=1 --preload-file resources | ||||||
|  |     #-s ALLOW_MEMORY_GROWTH=1   # to allow memory resizing | ||||||
|  |     #-s TOTAL_MEMORY=16777216   # to specify heap memory size (default = 16MB) | ||||||
|  | endif | ||||||
|  |  | ||||||
| #CFLAGSEXTRA = -Wextra -Wmissing-prototypes -Wstrict-prototypes | #CFLAGSEXTRA = -Wextra -Wmissing-prototypes -Wstrict-prototypes | ||||||
|  |  | ||||||
| # define any directories containing required header files | # define any directories containing required header files | ||||||
| @@ -42,45 +84,101 @@ ifeq ($(PLATFORM),PLATFORM_RPI) | |||||||
|     INCLUDES = -I. -I../../src -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads |     INCLUDES = -I. -I../../src -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads | ||||||
| else | else | ||||||
|     INCLUDES = -I. -I../../src |     INCLUDES = -I. -I../../src | ||||||
|  | # external libraries headers | ||||||
|  | # GLFW3 | ||||||
|  |     INCLUDES += -I../../external/glfw3/include | ||||||
|  | # GLEW | ||||||
|  |     INCLUDES += -I../../external/glew/include | ||||||
|  | # OpenAL Soft | ||||||
|  |     INCLUDES += -I../../external/openal_soft/include | ||||||
| endif | endif | ||||||
|  |  | ||||||
| # define library paths containing required libs | # define library paths containing required libs | ||||||
| LFLAGS = -L. -L../../src -L/opt/vc/lib | ifeq ($(PLATFORM),PLATFORM_RPI) | ||||||
|  |     LFLAGS = -L. -L../../src -L/opt/vc/lib | ||||||
|  | else | ||||||
|  |     LFLAGS = -L. -L../../src | ||||||
|  |     # external libraries to link with | ||||||
|  |     # GLFW3 | ||||||
|  |     LFLAGS += -L../../external/glfw3/lib/$(LIBPATH) | ||||||
|  |     ifneq ($(PLATFORM_OS),OSX) | ||||||
|  |     # OpenAL Soft | ||||||
|  |         LFLAGS += -L../../external/openal_soft/lib/$(LIBPATH) | ||||||
|  | 	# GLEW | ||||||
|  |         LFLAGS += -L../../external/glew/lib/$(LIBPATH) | ||||||
|  |     endif | ||||||
|  | endif | ||||||
|  |  | ||||||
| # define any libraries to link into executable | # define any libraries to link into executable | ||||||
| # if you want to link libraries (libname.so or libname.a), use the -lname | # if you want to link libraries (libname.so or libname.a), use the -lname | ||||||
|  | ifeq ($(PLATFORM),PLATFORM_DESKTOP) | ||||||
|  |     ifeq ($(PLATFORM_OS),LINUX) | ||||||
|  |         # libraries for Debian GNU/Linux desktop compiling | ||||||
|  |         # requires the following packages: | ||||||
|  |         # libglfw3-dev libopenal-dev libglew-dev libegl1-mesa-dev | ||||||
|  |         LIBS = -lraylib -lglfw -lGLEW -lGL -lopenal | ||||||
|  |     endif | ||||||
|  |     ifeq ($(PLATFORM_OS),OSX) | ||||||
|  |     	# libraries for OS X 10.9 desktop compiling | ||||||
|  | 	# requires the following packages: | ||||||
|  | 	# libglfw3-dev libopenal-dev libglew-dev libegl1-mesa-dev | ||||||
|  | 	LIBS = -lraylib -lglfw -framework OpenGL -framework OpenAl -framework Cocoa | ||||||
|  |  | ||||||
|  |     else | ||||||
|  |         # libraries for Windows desktop compiling | ||||||
|  |         # NOTE: GLFW3 and OpenAL Soft libraries should be installed | ||||||
|  |         LIBS = -lraylib -lglfw3 -lglew32 -lopengl32 -lopenal32 -lgdi32 | ||||||
|  |     endif | ||||||
|  | endif | ||||||
| ifeq ($(PLATFORM),PLATFORM_RPI) | ifeq ($(PLATFORM),PLATFORM_RPI) | ||||||
|     # libraries for Raspberry Pi compiling |     # libraries for Raspberry Pi compiling | ||||||
|     # NOTE: OpenAL Soft library should be installed (libopenal1 package) |     # NOTE: OpenAL Soft library should be installed (libopenal1 package) | ||||||
|     LIBS = -lraylib -lGLESv2 -lEGL -lpthread -lrt -lm -lbcm_host -lopenal |     LIBS = -lraylib -lGLESv2 -lEGL -lpthread -lrt -lm -lbcm_host -lopenal | ||||||
| else | endif | ||||||
|     # libraries for Windows desktop compiling | ifeq ($(PLATFORM),PLATFORM_WEB) | ||||||
|     # NOTE: GLFW3 and OpenAL Soft libraries should be installed |     LIBS = ../../src/libraylib.bc | ||||||
|     LIBS = -lraylib -lglfw3 -lglew32 -lopengl32 -lopenal32 -lgdi32 |  | ||||||
| endif | endif | ||||||
|  |  | ||||||
| # define additional parameters and flags for windows | # define additional parameters and flags for windows | ||||||
| ifeq ($(PLATFORM),PLATFORM_DESKTOP) | ifeq ($(PLATFORM_OS),WINDOWS) | ||||||
|     # resources file contains windows exe icon |     # resources file contains windows exe icon | ||||||
|     # -Wl,--subsystem,windows hides the console window |     # -Wl,--subsystem,windows hides the console window | ||||||
|     WINFLAGS = ../../src/resources -Wl,--subsystem,windows |     WINFLAGS = ../../src/resources -Wl,--subsystem,windows | ||||||
| endif | endif | ||||||
|  |  | ||||||
|  | ifeq ($(PLATFORM),PLATFORM_WEB) | ||||||
|  |     EXT = .html | ||||||
|  | endif | ||||||
|  |  | ||||||
| # typing 'make' will invoke the first target entry in the file, | # typing 'make' will invoke the first target entry in the file, | ||||||
| # in this case, the 'default' target entry is basic_test | # in this case, the 'default' target entry is basic_test | ||||||
| default: basic_test | default: basic_test | ||||||
|  |  | ||||||
| # compile template - basic_test | # compile template - basic_test | ||||||
| basic_test: basic_test.c | basic_test: basic_test.c | ||||||
| 	$(CC) -o $@ $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) | 	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) | ||||||
|  |  | ||||||
| # clean everything | # clean everything | ||||||
| clean: | clean: | ||||||
|  | ifeq ($(PLATFORM),PLATFORM_DESKTOP) | ||||||
|  |     ifeq ($(PLATFORM_OS),OSX) | ||||||
|  | 		find . -type f -perm +ugo+x -delete | ||||||
|  | 		rm -f *.o | ||||||
|  |     else | ||||||
|  |     ifeq ($(PLATFORM_OS),LINUX) | ||||||
|  | 		find . -type f -executable -delete | ||||||
|  | 		rm -f *.o | ||||||
|  |     else | ||||||
|  | 		del *.o *.exe | ||||||
|  |     endif | ||||||
|  |     endif | ||||||
|  | endif | ||||||
| ifeq ($(PLATFORM),PLATFORM_RPI) | ifeq ($(PLATFORM),PLATFORM_RPI) | ||||||
|  | 	find . -type f -executable -delete | ||||||
| 	rm -f *.o | 	rm -f *.o | ||||||
| #	find . -executable -delete | endif | ||||||
| else | ifeq ($(PLATFORM),PLATFORM_WEB) | ||||||
| 	del *.o *.exe | 	del *.o *.html *.js | ||||||
| endif | endif | ||||||
| 	@echo Cleaning done | 	@echo Cleaning done | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,7 +2,7 @@ | |||||||
| # | # | ||||||
| #   raylib - Simple Game | #   raylib - Simple Game | ||||||
| # | # | ||||||
| #   makefile to compile simple game | #   makefile to compile simple game for desktop platforms, Raspberry Pi and HTML5 (emscripten) | ||||||
| # | # | ||||||
| #   Copyright (c) 2014 Ramon Santamaria (Ray San - raysan@raysanweb.com) | #   Copyright (c) 2014 Ramon Santamaria (Ray San - raysan@raysanweb.com) | ||||||
| #     | #     | ||||||
| @@ -23,12 +23,44 @@ | |||||||
| # | # | ||||||
| #************************************************************************************************** | #************************************************************************************************** | ||||||
|  |  | ||||||
| # define raylib platform (by default, compile for RPI) | # define raylib platform to compile for | ||||||
| # Other possible platform: PLATFORM_DESKTOP | # possible platforms: PLATFORM_DESKTOP PLATFORM_RPI PLATFORM_WEB | ||||||
| PLATFORM ?= PLATFORM_RPI | # WARNING: To compile to HTML5, code must be redesigned to use emscripten.h and emscripten_set_main_loop() | ||||||
|  | PLATFORM ?= PLATFORM_DESKTOP | ||||||
|  |  | ||||||
|  | # 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 | ||||||
|  |         LIBPATH=win32 | ||||||
|  |     else | ||||||
|  |         UNAMEOS:=$(shell uname) | ||||||
|  |         ifeq ($(UNAMEOS),Linux) | ||||||
|  |             PLATFORM_OS=LINUX | ||||||
|  |             LIBPATH=linux | ||||||
|  |         else | ||||||
|  |         ifeq ($(UNAMEOS),Darwin) | ||||||
|  |             PLATFORM_OS=OSX | ||||||
|  |             LIBPATH=osx | ||||||
|  |         endif | ||||||
|  |         endif | ||||||
|  |     endif | ||||||
|  | endif | ||||||
|  |  | ||||||
| # define compiler: gcc for C program, define as g++ for C++ | # define compiler: gcc for C program, define as g++ for C++ | ||||||
| CC = gcc | ifeq ($(PLATFORM),PLATFORM_WEB) | ||||||
|  |     # define emscripten compiler | ||||||
|  |     CC = emcc | ||||||
|  | else | ||||||
|  | ifeq ($(PLATFORM_OS),OSX) | ||||||
|  |     # define llvm compiler for mac | ||||||
|  |     CC = clang | ||||||
|  | else | ||||||
|  |     # define default gcc compiler | ||||||
|  |     CC = gcc | ||||||
|  | endif | ||||||
|  | endif | ||||||
|  |  | ||||||
| # define compiler flags: | # define compiler flags: | ||||||
| #  -O2         defines optimization level | #  -O2         defines optimization level | ||||||
| @@ -39,6 +71,12 @@ ifeq ($(PLATFORM),PLATFORM_RPI) | |||||||
| else | else | ||||||
|     CFLAGS = -O2 -Wall -std=c99 |     CFLAGS = -O2 -Wall -std=c99 | ||||||
| endif | endif | ||||||
|  | ifeq ($(PLATFORM),PLATFORM_WEB) | ||||||
|  |     CFLAGS = -O1 -Wall -std=c99 -s USE_GLFW=3 -s ASSERTIONS=1 --preload-file resources | ||||||
|  |     #-s ALLOW_MEMORY_GROWTH=1   # to allow memory resizing | ||||||
|  |     #-s TOTAL_MEMORY=16777216   # to specify heap memory size (default = 16MB) | ||||||
|  | endif | ||||||
|  |  | ||||||
| #CFLAGSEXTRA = -Wextra -Wmissing-prototypes -Wstrict-prototypes | #CFLAGSEXTRA = -Wextra -Wmissing-prototypes -Wstrict-prototypes | ||||||
|  |  | ||||||
| # define any directories containing required header files | # define any directories containing required header files | ||||||
| @@ -46,37 +84,79 @@ ifeq ($(PLATFORM),PLATFORM_RPI) | |||||||
|     INCLUDES = -I. -I../../src -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads |     INCLUDES = -I. -I../../src -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads | ||||||
| else | else | ||||||
|     INCLUDES = -I. -I../../src |     INCLUDES = -I. -I../../src | ||||||
|  | # external libraries headers | ||||||
|  | # GLFW3 | ||||||
|  |     INCLUDES += -I../../external/glfw3/include | ||||||
|  | # GLEW | ||||||
|  |     INCLUDES += -I../../external/glew/include | ||||||
|  | # OpenAL Soft | ||||||
|  |     INCLUDES += -I../../external/openal_soft/include | ||||||
| endif | endif | ||||||
|  |  | ||||||
| # define library paths containing required libs | # define library paths containing required libs | ||||||
| LFLAGS = -L. -L../../src -L/opt/vc/lib | ifeq ($(PLATFORM),PLATFORM_RPI) | ||||||
|  |     LFLAGS = -L. -L../../src -L/opt/vc/lib | ||||||
|  | else | ||||||
|  |     LFLAGS = -L. -L../../src | ||||||
|  |     # external libraries to link with | ||||||
|  |     # GLFW3 | ||||||
|  |     LFLAGS += -L../../external/glfw3/lib/$(LIBPATH) | ||||||
|  |     ifneq ($(PLATFORM_OS),OSX) | ||||||
|  |     # OpenAL Soft | ||||||
|  |         LFLAGS += -L../../external/openal_soft/lib/$(LIBPATH) | ||||||
|  | 	# GLEW | ||||||
|  |         LFLAGS += -L../../external/glew/lib/$(LIBPATH) | ||||||
|  |     endif | ||||||
|  | endif | ||||||
|  |  | ||||||
| # define any libraries to link into executable | # define any libraries to link into executable | ||||||
| # if you want to link libraries (libname.so or libname.a), use the -lname | # if you want to link libraries (libname.so or libname.a), use the -lname | ||||||
|  | ifeq ($(PLATFORM),PLATFORM_DESKTOP) | ||||||
|  |     ifeq ($(PLATFORM_OS),LINUX) | ||||||
|  |         # libraries for Debian GNU/Linux desktop compiling | ||||||
|  |         # requires the following packages: | ||||||
|  |         # libglfw3-dev libopenal-dev libglew-dev libegl1-mesa-dev | ||||||
|  |         LIBS = -lraylib -lglfw -lGLEW -lGL -lopenal | ||||||
|  |     endif | ||||||
|  |     ifeq ($(PLATFORM_OS),OSX) | ||||||
|  |     	# libraries for OS X 10.9 desktop compiling | ||||||
|  | 	# requires the following packages: | ||||||
|  | 	# libglfw3-dev libopenal-dev libglew-dev libegl1-mesa-dev | ||||||
|  | 	LIBS = -lraylib -lglfw -framework OpenGL -framework OpenAl -framework Cocoa | ||||||
|  |  | ||||||
|  |     else | ||||||
|  |         # libraries for Windows desktop compiling | ||||||
|  |         # NOTE: GLFW3 and OpenAL Soft libraries should be installed | ||||||
|  |         LIBS = -lraylib -lglfw3 -lglew32 -lopengl32 -lopenal32 -lgdi32 | ||||||
|  |     endif | ||||||
|  | endif | ||||||
| ifeq ($(PLATFORM),PLATFORM_RPI) | ifeq ($(PLATFORM),PLATFORM_RPI) | ||||||
|     # libraries for Raspberry Pi compiling |     # libraries for Raspberry Pi compiling | ||||||
|     # NOTE: OpenAL Soft library should be installed (libopenal1 package) |     # NOTE: OpenAL Soft library should be installed (libopenal1 package) | ||||||
|     LIBS = -lraylib -lGLESv2 -lEGL -lpthread -lrt -lm -lbcm_host -lopenal |     LIBS = -lraylib -lGLESv2 -lEGL -lpthread -lrt -lm -lbcm_host -lopenal | ||||||
| else | endif | ||||||
|     # libraries for Windows desktop compiling | ifeq ($(PLATFORM),PLATFORM_WEB) | ||||||
|     # NOTE: GLFW3 and OpenAL Soft libraries should be installed |     LIBS = ../../src/libraylib.bc | ||||||
|     LIBS = -lraylib -lglfw3 -lglew32 -lopengl32 -lopenal32 -lgdi32 |  | ||||||
| endif | endif | ||||||
|  |  | ||||||
| # define additional parameters and flags for windows | # define additional parameters and flags for windows | ||||||
| ifeq ($(PLATFORM),PLATFORM_DESKTOP) | ifeq ($(PLATFORM_OS),WINDOWS) | ||||||
|     # resources file contains windows exe icon |     # resources file contains windows exe icon | ||||||
|     # -Wl,--subsystem,windows hides the console window |     # -Wl,--subsystem,windows hides the console window | ||||||
|     WINFLAGS = ../../src/resources -Wl,--subsystem,windows |     WINFLAGS = ../../src/resources -Wl,--subsystem,windows | ||||||
| endif | endif | ||||||
|  |  | ||||||
|  | ifeq ($(PLATFORM),PLATFORM_WEB) | ||||||
|  |     EXT = .html | ||||||
|  | endif | ||||||
|  |  | ||||||
| # typing 'make' will invoke the first target entry in the file, | # typing 'make' will invoke the first target entry in the file, | ||||||
| # in this case, the 'default' target entry is simple_game | # in this case, the 'default' target entry is simple_game | ||||||
| default: simple_game | default: simple_game | ||||||
|  |  | ||||||
| # compile template - simple_game | # compile template - simple_game | ||||||
| simple_game: simple_game.c screens.o | simple_game: simple_game.c screens.o | ||||||
| 	$(CC) -o $@ $< screens.o $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) | 	$(CC) -o $@$(EXT) $< screens.o $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) | ||||||
|  |  | ||||||
| # compile screens | # compile screens | ||||||
| screens.o: screens.c | screens.o: screens.c | ||||||
| @@ -84,11 +164,25 @@ screens.o: screens.c | |||||||
|  |  | ||||||
| # clean everything | # clean everything | ||||||
| clean: | clean: | ||||||
|  | ifeq ($(PLATFORM),PLATFORM_DESKTOP) | ||||||
|  |     ifeq ($(PLATFORM_OS),OSX) | ||||||
|  | 		find . -type f -perm +ugo+x -delete | ||||||
|  | 		rm -f *.o | ||||||
|  |     else | ||||||
|  |     ifeq ($(PLATFORM_OS),LINUX) | ||||||
|  | 		find . -type f -executable -delete | ||||||
|  | 		rm -f *.o | ||||||
|  |     else | ||||||
|  | 		del *.o *.exe | ||||||
|  |     endif | ||||||
|  |     endif | ||||||
|  | endif | ||||||
| ifeq ($(PLATFORM),PLATFORM_RPI) | ifeq ($(PLATFORM),PLATFORM_RPI) | ||||||
|  | 	find . -type f -executable -delete | ||||||
| 	rm -f *.o | 	rm -f *.o | ||||||
| #	find . -executable -delete | endif | ||||||
| else | ifeq ($(PLATFORM),PLATFORM_WEB) | ||||||
| 	del *.o *.exe | 	del *.o *.html *.js | ||||||
| endif | endif | ||||||
| 	@echo Cleaning done | 	@echo Cleaning done | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,7 +2,7 @@ | |||||||
| # | # | ||||||
| #   raylib - Standard Game | #   raylib - Standard Game | ||||||
| # | # | ||||||
| #   makefile to compile standard game | #   makefile to compile standard game for desktop platforms, Raspberry Pi and HTML5 (emscripten) | ||||||
| # | # | ||||||
| #   Copyright (c) 2014 Ramon Santamaria (Ray San - raysan@raysanweb.com) | #   Copyright (c) 2014 Ramon Santamaria (Ray San - raysan@raysanweb.com) | ||||||
| #     | #     | ||||||
| @@ -23,49 +23,133 @@ | |||||||
| # | # | ||||||
| #************************************************************************************************** | #************************************************************************************************** | ||||||
|  |  | ||||||
| # define raylib platform if not defined (by default, compile for RPI) | # define raylib platform to compile for | ||||||
| # Other possible platform: PLATFORM_DESKTOP | # possible platforms: PLATFORM_DESKTOP PLATFORM_RPI PLATFORM_WEB | ||||||
| PLATFORM ?= PLATFORM_RPI | # WARNING: To compile to HTML5, code must be redesigned to use emscripten.h and emscripten_set_main_loop() | ||||||
|  | PLATFORM ?= PLATFORM_DESKTOP | ||||||
|  |  | ||||||
|  | # 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 | ||||||
|  |         LIBPATH=win32 | ||||||
|  |     else | ||||||
|  |         UNAMEOS:=$(shell uname) | ||||||
|  |         ifeq ($(UNAMEOS),Linux) | ||||||
|  |             PLATFORM_OS=LINUX | ||||||
|  |             LIBPATH=linux | ||||||
|  |         else | ||||||
|  |         ifeq ($(UNAMEOS),Darwin) | ||||||
|  |             PLATFORM_OS=OSX | ||||||
|  |             LIBPATH=osx | ||||||
|  |         endif | ||||||
|  |         endif | ||||||
|  |     endif | ||||||
|  | endif | ||||||
|  |  | ||||||
| # define compiler: gcc for C program, define as g++ for C++ | # define compiler: gcc for C program, define as g++ for C++ | ||||||
| CC = gcc | ifeq ($(PLATFORM),PLATFORM_WEB) | ||||||
|  |     # define emscripten compiler | ||||||
|  |     CC = emcc | ||||||
|  | else | ||||||
|  | ifeq ($(PLATFORM_OS),OSX) | ||||||
|  |     # define llvm compiler for mac | ||||||
|  |     CC = clang | ||||||
|  | else | ||||||
|  |     # define default gcc compiler | ||||||
|  |     CC = gcc | ||||||
|  | endif | ||||||
|  | endif | ||||||
|  |  | ||||||
| # define compiler flags: | # define compiler flags: | ||||||
| #  -O2         defines optimization level | #  -O2         defines optimization level | ||||||
| #  -Wall       turns on most, but not all, compiler warnings | #  -Wall       turns on most, but not all, compiler warnings | ||||||
| #  -std=c99    use standard C from 1999 revision | #  -std=c99    use standard C from 1999 revision | ||||||
| CFLAGS = -O2 -Wall -std=c99 | ifeq ($(PLATFORM),PLATFORM_RPI) | ||||||
|  |     CFLAGS = -O2 -Wall -std=gnu99 -fgnu89-inline | ||||||
|  | else | ||||||
|  |     CFLAGS = -O2 -Wall -std=c99 | ||||||
|  | endif | ||||||
|  | ifeq ($(PLATFORM),PLATFORM_WEB) | ||||||
|  |     CFLAGS = -O1 -Wall -std=c99 -s USE_GLFW=3 -s ASSERTIONS=1 --preload-file resources | ||||||
|  |     #-s ALLOW_MEMORY_GROWTH=1   # to allow memory resizing | ||||||
|  |     #-s TOTAL_MEMORY=16777216   # to specify heap memory size (default = 16MB) | ||||||
|  | endif | ||||||
|  |  | ||||||
| #CFLAGSEXTRA = -Wextra -Wmissing-prototypes -Wstrict-prototypes | #CFLAGSEXTRA = -Wextra -Wmissing-prototypes -Wstrict-prototypes | ||||||
|  |  | ||||||
| # define any directories containing required header files | # define any directories containing required header files | ||||||
| ifeq ($(PLATFORM),PLATFORM_RPI) | ifeq ($(PLATFORM),PLATFORM_RPI) | ||||||
|     INCLUDES = -I. -I./screens -I../../src -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads |     INCLUDES = -I. -I../../src -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads | ||||||
| else | else | ||||||
|     INCLUDES = -I. -I./screens -I../../src |     INCLUDES = -I. -I../../src | ||||||
|  | # external libraries headers | ||||||
|  | # GLFW3 | ||||||
|  |     INCLUDES += -I../../external/glfw3/include | ||||||
|  | # GLEW | ||||||
|  |     INCLUDES += -I../../external/glew/include | ||||||
|  | # OpenAL Soft | ||||||
|  |     INCLUDES += -I../../external/openal_soft/include | ||||||
| endif | endif | ||||||
|  |  | ||||||
| # define library paths containing required libs | # define library paths containing required libs | ||||||
| LFLAGS = -L. -L../../src -L/opt/vc/lib | ifeq ($(PLATFORM),PLATFORM_RPI) | ||||||
|  |     LFLAGS = -L. -L../../src -L/opt/vc/lib | ||||||
|  | else | ||||||
|  |     LFLAGS = -L. -L../../src | ||||||
|  |     # external libraries to link with | ||||||
|  |     # GLFW3 | ||||||
|  |     LFLAGS += -L../../external/glfw3/lib/$(LIBPATH) | ||||||
|  |     ifneq ($(PLATFORM_OS),OSX) | ||||||
|  |     # OpenAL Soft | ||||||
|  |         LFLAGS += -L../../external/openal_soft/lib/$(LIBPATH) | ||||||
|  | 	# GLEW | ||||||
|  |         LFLAGS += -L../../external/glew/lib/$(LIBPATH) | ||||||
|  |     endif | ||||||
|  | endif | ||||||
|  |  | ||||||
| # define any libraries to link into executable | # define any libraries to link into executable | ||||||
| # if you want to link libraries (libname.so or libname.a), use the -lname | # if you want to link libraries (libname.so or libname.a), use the -lname | ||||||
|  | ifeq ($(PLATFORM),PLATFORM_DESKTOP) | ||||||
|  |     ifeq ($(PLATFORM_OS),LINUX) | ||||||
|  |         # libraries for Debian GNU/Linux desktop compiling | ||||||
|  |         # requires the following packages: | ||||||
|  |         # libglfw3-dev libopenal-dev libglew-dev libegl1-mesa-dev | ||||||
|  |         LIBS = -lraylib -lglfw -lGLEW -lGL -lopenal | ||||||
|  |     endif | ||||||
|  |     ifeq ($(PLATFORM_OS),OSX) | ||||||
|  |     	# libraries for OS X 10.9 desktop compiling | ||||||
|  | 	# requires the following packages: | ||||||
|  | 	# libglfw3-dev libopenal-dev libglew-dev libegl1-mesa-dev | ||||||
|  | 	LIBS = -lraylib -lglfw -framework OpenGL -framework OpenAl -framework Cocoa | ||||||
|  |  | ||||||
|  |     else | ||||||
|  |         # libraries for Windows desktop compiling | ||||||
|  |         # NOTE: GLFW3 and OpenAL Soft libraries should be installed | ||||||
|  |         LIBS = -lraylib -lglfw3 -lglew32 -lopengl32 -lopenal32 -lgdi32 | ||||||
|  |     endif | ||||||
|  | endif | ||||||
| ifeq ($(PLATFORM),PLATFORM_RPI) | ifeq ($(PLATFORM),PLATFORM_RPI) | ||||||
|     # libraries for Raspberry Pi compiling |     # libraries for Raspberry Pi compiling | ||||||
|     # NOTE: OpenAL Soft library should be installed (libopenal1 package) |     # NOTE: OpenAL Soft library should be installed (libopenal1 package) | ||||||
|     LIBS = -lraylib -lGLESv2 -lEGL -lpthread -lrt -lm -lbcm_host -lopenal |     LIBS = -lraylib -lGLESv2 -lEGL -lpthread -lrt -lm -lbcm_host -lopenal | ||||||
| else | endif | ||||||
|     # libraries for Windows desktop compiling | ifeq ($(PLATFORM),PLATFORM_WEB) | ||||||
|     # NOTE: GLFW3 and OpenAL Soft libraries should be installed |     LIBS = ../../src/libraylib.bc | ||||||
|     LIBS = -lraylib -lglfw3 -lglew32 -lopengl32 -lopenal32 -lgdi32 |  | ||||||
| endif | endif | ||||||
|  |  | ||||||
| # define additional parameters and flags for windows | # define additional parameters and flags for windows | ||||||
| ifeq ($(PLATFORM),PLATFORM_DESKTOP) | ifeq ($(PLATFORM_OS),WINDOWS) | ||||||
|     # resources file contains windows exe icon |     # resources file contains windows exe icon | ||||||
|     # -Wl,--subsystem,windows hides the console window |     # -Wl,--subsystem,windows hides the console window | ||||||
|     WINFLAGS = ../../src/resources -Wl,--subsystem,windows |     WINFLAGS = ../../src/resources -Wl,--subsystem,windows | ||||||
| endif | endif | ||||||
|  |  | ||||||
|  | ifeq ($(PLATFORM),PLATFORM_WEB) | ||||||
|  |     EXT = .html | ||||||
|  | endif | ||||||
|  |  | ||||||
| # define all screen object files required | # define all screen object files required | ||||||
| SCREENS = \ | SCREENS = \ | ||||||
| 	screens/screen_logo.o \ | 	screens/screen_logo.o \ | ||||||
| @@ -80,7 +164,7 @@ default: standard_game | |||||||
|  |  | ||||||
| # compile template - standard_game | # compile template - standard_game | ||||||
| standard_game: standard_game.c $(SCREENS) | standard_game: standard_game.c $(SCREENS) | ||||||
| 	$(CC) -o $@ $< $(SCREENS) $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) | 	$(CC) -o $@$(EXT) $< $(SCREENS) $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS) | ||||||
|  |  | ||||||
| # compile screen LOGO | # compile screen LOGO | ||||||
| screens/screen_logo.o: screens/screen_logo.c | screens/screen_logo.o: screens/screen_logo.c | ||||||
| @@ -104,11 +188,25 @@ screens/screen_ending.o: screens/screen_ending.c | |||||||
|  |  | ||||||
| # clean everything | # clean everything | ||||||
| clean: | clean: | ||||||
|  | ifeq ($(PLATFORM),PLATFORM_DESKTOP) | ||||||
|  |     ifeq ($(PLATFORM_OS),OSX) | ||||||
|  | 		find . -type f -perm +ugo+x -delete | ||||||
|  | 		rm -f *.o | ||||||
|  |     else | ||||||
|  |     ifeq ($(PLATFORM_OS),LINUX) | ||||||
|  | 		find . -type f -executable -delete | ||||||
|  | 		rm -f *.o | ||||||
|  |     else | ||||||
|  | 		del *.o *.exe | ||||||
|  |     endif | ||||||
|  |     endif | ||||||
|  | endif | ||||||
| ifeq ($(PLATFORM),PLATFORM_RPI) | ifeq ($(PLATFORM),PLATFORM_RPI) | ||||||
| 	rm -f screens/*.o | 	find . -type f -executable -delete | ||||||
| #	find . -executable -delete | 	rm -f *.o | ||||||
| else | endif | ||||||
| 	del screens/*.o *.exe | ifeq ($(PLATFORM),PLATFORM_WEB) | ||||||
|  | 	del *.o *.html *.js | ||||||
| endif | endif | ||||||
| 	@echo Cleaning done | 	@echo Cleaning done | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 raysan5
					raysan5