############## # Works on hosts Linux, Windows and Darwin # Download the Android NDK, unpack somewhere, and set NDK_ROOT_DIR to it ######################### # Check the host platform HOST_PLATFORM = linux ifeq ($(shell uname -a),) HOST_PLATFORM = windows else ifneq ($(findstring MINGW,$(shell uname -a)),) HOST_PLATFORM = windows else ifneq ($(findstring Darwin,$(shell uname -a)),) HOST_PLATFORM = darwin else ifneq ($(findstring win,$(shell uname -a)),) HOST_PLATFORM = windows endif ######################### # Set the target platform TARGET_PLATFORM = android_mips64 ################# # Toolchain setup CC = $(NDK_ROOT_DIR)/toolchains/mips64el-linux-android-$(NDK_TOOLCHAIN_VERSION)/prebuilt/$(HOST_PLATFORM)-x86_64/bin/mips64el-linux-android-gcc CXX = $(NDK_ROOT_DIR)/toolchains/mips64el-linux-android-$(NDK_TOOLCHAIN_VERSION)/prebuilt/$(HOST_PLATFORM)-x86_64/bin/mips64el-linux-android-g++ AS = $(NDK_ROOT_DIR)/toolchains/mips64el-linux-android-$(NDK_TOOLCHAIN_VERSION)/prebuilt/$(HOST_PLATFORM)-x86_64/bin/mips64el-linux-android-as AR = $(NDK_ROOT_DIR)/toolchains/mips64el-linux-android-$(NDK_TOOLCHAIN_VERSION)/prebuilt/$(HOST_PLATFORM)-x86_64/bin/mips64el-linux-android-ar ############ # Extensions OBJEXT = .android_mips64.o SOEXT = .android_mips64.so LIBEXT = .android_mips64.a ################ # Platform setup STATIC_LINKING = 0 platform = android PLATDEFS = -DANDROID -DINLINE=inline -DHAVE_STDINT_H -DBSPF_UNIX -DHAVE_INTTYPES -DLSB_FIRST PLATCFLAGS = -fpic -fno-strict-aliasing -finline-functions -ffunction-sections -funwind-tables -fmessage-length=0 -fno-inline-functions-called-once -fgcse-after-reload -frerun-cse-after-loop -frename-registers -no-canonical-prefixes -fomit-frame-pointer -funswitch-loops -finline-limit=300 -Wa,--noexecstack -Wformat -Werror=format-security PLATCXXFLAGS = -fpic -fno-strict-aliasing -finline-functions -ffunction-sections -funwind-tables -fmessage-length=0 -fno-inline-functions-called-once -fgcse-after-reload -frerun-cse-after-loop -frename-registers -no-canonical-prefixes -fomit-frame-pointer -funswitch-loops -finline-limit=300 -Wa,--noexecstack -Wformat -Werror=format-security -fno-exceptions -fno-rtti PLATLDFLAGS = -shared --sysroot=$(NDK_ROOT_DIR)/platforms/android-21/arch-mips64 -lgcc -no-canonical-prefixes -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -lc -lm PLATLDXFLAGS = -shared --sysroot=$(NDK_ROOT_DIR)/platforms/android-21/arch-mips64 -lgcc -no-canonical-prefixes -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -lc -lm $(NDK_ROOT_DIR)/sources/cxx-stl/gnu-libstdc++/$(NDK_TOOLCHAIN_VERSION)/libs/mips64/libgnustl_static.a ################ # libretro setup RETRODEFS = -D__LIBRETRO__ RETROCFLAGS = RETROCXXFLAGS = RETROLDFLAGS = RETROLDXFLAGS = ################# # Final variables DEFINES = $(PLATDEFS) $(RETRODEFS) CFLAGS = $(PLATCFLAGS) $(RETROCFLAGS) $(DEFINES) $(INCLUDES) CXXFLAGS = $(PLATCXXFLAGS) $(RETROCXXFLAGS) $(DEFINES) $(INCLUDES) LDFLAGS = $(PLATLDFLAGS) $(RETROLDFLAGS) LDXFLAGS = $(PLATLDXFLAGS) $(RETROLDXFLAGS) ######## # Tuning ifneq ($(DEBUG),) CFLAGS += -O0 -g CXXFLAGS += -O0 -g else CFLAGS += -O3 -DNDEBUG CXXFLAGS += -O3 -DNDEBUG endif ifneq ($(LOG_PERFORMANCE),) CFLAGS += -DLOG_PERFORMANCE CXXFLAGS += -DLOG_PERFORMANCE endif #################################### # Variable setup for Makefile.common CORE_DIR ?= .. BUILD_DIR ?= . INCLUDES = -I$(NDK_ROOT_DIR)/platforms/android-21/arch-mips64/usr/include -I$(NDK_ROOT_DIR)/sources/cxx-stl/gnu-libstdc++/$(NDK_TOOLCHAIN_VERSION)/include -I$(NDK_ROOT_DIR)/sources/cxx-stl/gnu-libstdc++/$(NDK_TOOLCHAIN_VERSION)/libs/mips64/include -I$(NDK_ROOT_DIR)/sources/cxx-stl/gnu-libstdc++/$(NDK_TOOLCHAIN_VERSION)/include/backward include $(BUILD_DIR)/Makefile.common ############### # Include rules include $(BUILD_DIR)/Makefile.rules