Merge pull request #218 from gen2brain/develop
Integrate Android build into Makefile
This commit is contained in:
commit
7b5f61ddf7
119
src/Makefile
119
src/Makefile
@ -32,7 +32,7 @@
|
|||||||
.PHONY: all clean install unistall
|
.PHONY: all clean install unistall
|
||||||
|
|
||||||
# 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_ANDROID PLATFORM_RPI PLATFORM_WEB
|
||||||
PLATFORM ?= PLATFORM_DESKTOP
|
PLATFORM ?= PLATFORM_DESKTOP
|
||||||
|
|
||||||
# define YES if you want shared/dynamic version of library instead of static (default)
|
# define YES if you want shared/dynamic version of library instead of static (default)
|
||||||
@ -69,7 +69,28 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(PLATFORM),PLATFORM_ANDROID)
|
||||||
|
# path to Android NDK
|
||||||
|
ANDROID_NDK = $(ANDROID_NDK_HOME)
|
||||||
|
|
||||||
|
# possible Android architectures: ARM ARM64
|
||||||
|
ANDROID_ARCH ?= ARM
|
||||||
|
|
||||||
|
# define YES to use clang instead of gcc
|
||||||
|
ANDROID_LLVM ?= NO
|
||||||
|
|
||||||
|
# standalone Android toolchain install dir
|
||||||
|
ANDROID_TOOLCHAIN = $(CURDIR)/toolchain
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(PLATFORM),PLATFORM_RPI)
|
||||||
|
CROSS_COMPILE ?= NO
|
||||||
|
endif
|
||||||
|
|
||||||
# define raylib graphics api depending on selected platform
|
# define raylib graphics api depending on selected platform
|
||||||
|
ifeq ($(PLATFORM),PLATFORM_ANDROID)
|
||||||
|
GRAPHICS = GRAPHICS_API_OPENGL_ES2
|
||||||
|
endif
|
||||||
ifeq ($(PLATFORM),PLATFORM_RPI)
|
ifeq ($(PLATFORM),PLATFORM_RPI)
|
||||||
# define raylib graphics api to use (on RPI, OpenGL ES 2.0 must be used)
|
# define raylib graphics api to use (on RPI, OpenGL ES 2.0 must be used)
|
||||||
GRAPHICS = GRAPHICS_API_OPENGL_ES2
|
GRAPHICS = GRAPHICS_API_OPENGL_ES2
|
||||||
@ -86,12 +107,48 @@ endif
|
|||||||
# NOTE: makefiles targets require tab indentation
|
# NOTE: makefiles targets require tab indentation
|
||||||
|
|
||||||
# define compiler: gcc for C program, define as g++ for C++
|
# define compiler: gcc for C program, define as g++ for C++
|
||||||
|
|
||||||
|
# default gcc compiler
|
||||||
|
CC = gcc
|
||||||
|
|
||||||
|
ifeq ($(PLATFORM),PLATFORM_ANDROID)
|
||||||
|
ifeq ($(ANDROID_ARCH),ARM)
|
||||||
|
ifeq ($(ANDROID_LLVM),YES)
|
||||||
|
CC = $(ANDROID_TOOLCHAIN)/bin/arm-linux-androideabi-clang
|
||||||
|
else
|
||||||
|
CC = $(ANDROID_TOOLCHAIN)/bin/arm-linux-androideabi-gcc
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
ifeq ($(ANDROID_ARCH),ARM64)
|
||||||
|
ifeq ($(ANDROID_LLVM),YES)
|
||||||
|
CC = $(ANDROID_TOOLCHAIN)/bin/aarch64-linux-android-clang
|
||||||
|
else
|
||||||
|
CC = $(ANDROID_TOOLCHAIN)/bin/aarch64-linux-android-gcc
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(PLATFORM),PLATFORM_RPI)
|
||||||
|
ifeq ($(CROSS_COMPILE),YES)
|
||||||
|
# rpi compiler
|
||||||
|
CC = armv6j-hardfloat-linux-gnueabi-gcc
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(PLATFORM),PLATFORM_WEB)
|
ifeq ($(PLATFORM),PLATFORM_WEB)
|
||||||
# emscripten compiler
|
# emscripten compiler
|
||||||
CC = emcc
|
CC = emcc
|
||||||
else
|
endif
|
||||||
# default gcc compiler
|
|
||||||
CC = gcc
|
AR = ar
|
||||||
|
|
||||||
|
ifeq ($(PLATFORM),PLATFORM_ANDROID)
|
||||||
|
ifeq ($(ANDROID_ARCH),ARM)
|
||||||
|
AR = $(ANDROID_TOOLCHAIN)/bin/arm-linux-androideabi-ar
|
||||||
|
endif
|
||||||
|
ifeq ($(ANDROID_ARCH),ARM64)
|
||||||
|
AR = $(ANDROID_TOOLCHAIN)/bin/aarch64-linux-android-ar
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# define compiler flags:
|
# define compiler flags:
|
||||||
@ -124,10 +181,14 @@ 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_ANDROID)
|
||||||
INCLUDES = -I. -Iexternal -I/opt/vc/include \
|
# STB libraries and others
|
||||||
-I/opt/vc/include/interface/vmcs_host/linux \
|
INCLUDES = -I. -Iexternal
|
||||||
-I/opt/vc/include/interface/vcos/pthreads
|
# OpenAL Soft library
|
||||||
|
INCLUDES += -Iexternal/openal_soft/include
|
||||||
|
# Android includes
|
||||||
|
INCLUDES += -I$(ANDROID_TOOLCHAIN)/sysroot/usr/include
|
||||||
|
INCLUDES += -I$(ANDROID_NDK)/sources/android/native_app_glue
|
||||||
else
|
else
|
||||||
# STB libraries and others
|
# STB libraries and others
|
||||||
INCLUDES = -I. -Iexternal
|
INCLUDES = -I. -Iexternal
|
||||||
@ -136,6 +197,16 @@ else
|
|||||||
# OpenAL Soft library
|
# OpenAL Soft library
|
||||||
INCLUDES += -Iexternal/openal_soft/include
|
INCLUDES += -Iexternal/openal_soft/include
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(PLATFORM),PLATFORM_RPI)
|
||||||
|
# STB libraries and others
|
||||||
|
INCLUDES = -I. -Iexternal
|
||||||
|
# RPi libraries
|
||||||
|
INCLUDES += -I/opt/vc/include
|
||||||
|
INCLUDES += -I/opt/vc/include/interface/vmcs_host/linux
|
||||||
|
INCLUDES += -I/opt/vc/include/interface/vcos/pthreads
|
||||||
|
# OpenAL Soft library
|
||||||
|
INCLUDES += -Iexternal/openal_soft/include
|
||||||
|
endif
|
||||||
|
|
||||||
# define output directory for compiled library
|
# define output directory for compiled library
|
||||||
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
||||||
@ -149,6 +220,14 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
|||||||
OUTPUT_PATH = ../release/osx
|
OUTPUT_PATH = ../release/osx
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(PLATFORM),PLATFORM_ANDROID)
|
||||||
|
ifeq ($(ANDROID_ARCH),ARM)
|
||||||
|
OUTPUT_PATH = ../release/android/armeabi-v7a
|
||||||
|
endif
|
||||||
|
ifeq ($(ANDROID_ARCH),ARM64)
|
||||||
|
OUTPUT_PATH = ../release/android/arm64-v8a
|
||||||
|
endif
|
||||||
|
endif
|
||||||
ifeq ($(PLATFORM),PLATFORM_WEB)
|
ifeq ($(PLATFORM),PLATFORM_WEB)
|
||||||
OUTPUT_PATH = ../release/html5
|
OUTPUT_PATH = ../release/html5
|
||||||
endif
|
endif
|
||||||
@ -164,7 +243,18 @@ OBJS += external/stb_vorbis.o
|
|||||||
|
|
||||||
# typing 'make' will invoke the default target entry called 'all',
|
# typing 'make' will invoke the default target entry called 'all',
|
||||||
# in this case, the 'default' target entry is raylib
|
# in this case, the 'default' target entry is raylib
|
||||||
all: raylib
|
all: toolchain raylib
|
||||||
|
|
||||||
|
# make standalone Android toolchain
|
||||||
|
toolchain:
|
||||||
|
ifeq ($(PLATFORM),PLATFORM_ANDROID)
|
||||||
|
ifeq ($(ANDROID_ARCH),ARM)
|
||||||
|
$(ANDROID_NDK)/build/tools/make-standalone-toolchain.sh --platform=android-9 --toolchain=arm-linux-androideabi-4.9 --use-llvm --install-dir=$(ANDROID_TOOLCHAIN)
|
||||||
|
endif
|
||||||
|
ifeq ($(ANDROID_ARCH),ARM64)
|
||||||
|
$(ANDROID_NDK)/build/tools/make-standalone-toolchain.sh --platform=android-21 --toolchain=aarch64-linux-androideabi-4.9 --use-llvm --install-dir=$(ANDROID_TOOLCHAIN)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
# compile raylib library
|
# compile raylib library
|
||||||
raylib: $(OBJS)
|
raylib: $(OBJS)
|
||||||
@ -184,9 +274,13 @@ else
|
|||||||
$(CC) -shared -o $(OUTPUT_PATH)/raylib.dll $(OBJS) $(SHAREDLIBS) -Wl,--out-implib,$(OUTPUT_PATH)/libraylibdll.a
|
$(CC) -shared -o $(OUTPUT_PATH)/raylib.dll $(OBJS) $(SHAREDLIBS) -Wl,--out-implib,$(OUTPUT_PATH)/libraylibdll.a
|
||||||
@echo "raylib dynamic library (raylib.dll) and import library (libraylibdll.a) generated!"
|
@echo "raylib dynamic library (raylib.dll) and import library (libraylibdll.a) generated!"
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(PLATFORM),PLATFORM_ANDROID)
|
||||||
|
$(CC) -shared -o $(OUTPUT_PATH)/libraylib.so $(OBJS)
|
||||||
|
@echo "raylib shared library (libraylib.so) generated!"
|
||||||
|
endif
|
||||||
else
|
else
|
||||||
# compile raylib static library for desktop platforms.
|
# compile raylib static library.
|
||||||
ar rcs $(OUTPUT_PATH)/libraylib.a $(OBJS)
|
$(AR) rcs $(OUTPUT_PATH)/libraylib.a $(OBJS)
|
||||||
@echo "libraylib.a generated (static library)!"
|
@echo "libraylib.a generated (static library)!"
|
||||||
ifeq ($(SHARED_OPENAL),NO)
|
ifeq ($(SHARED_OPENAL),NO)
|
||||||
@echo "expected OpenAL Soft static library linking"
|
@echo "expected OpenAL Soft static library linking"
|
||||||
@ -283,5 +377,8 @@ ifeq ($(PLATFORM_OS),WINDOWS)
|
|||||||
del *.o $(OUTPUT_PATH)/libraylib.a $(OUTPUT_PATH)/libraylib.bc $(OUTPUT_PATH)/libraylib.so external/stb_vorbis.o
|
del *.o $(OUTPUT_PATH)/libraylib.a $(OUTPUT_PATH)/libraylib.bc $(OUTPUT_PATH)/libraylib.so external/stb_vorbis.o
|
||||||
else
|
else
|
||||||
rm -f *.o $(OUTPUT_PATH)/libraylib.a $(OUTPUT_PATH)/libraylib.bc $(OUTPUT_PATH)/libraylib.so external/stb_vorbis.o
|
rm -f *.o $(OUTPUT_PATH)/libraylib.a $(OUTPUT_PATH)/libraylib.bc $(OUTPUT_PATH)/libraylib.so external/stb_vorbis.o
|
||||||
|
endif
|
||||||
|
ifeq ($(PLATFORM),PLATFORM_ANDROID)
|
||||||
|
rm -rf $(ANDROID_TOOLCHAIN)
|
||||||
endif
|
endif
|
||||||
@echo "removed all generated files!"
|
@echo "removed all generated files!"
|
||||||
|
Loading…
Reference in New Issue
Block a user