STATIC_LINKING := 0 AR := ar ifneq ($(V),1) Q := @ endif ifneq ($(SANITIZER),) CFLAGS := -fsanitize=$(SANITIZER) $(CFLAGS) CXXFLAGS := -fsanitize=$(SANITIZER) $(CXXFLAGS) LDFLAGS := -fsanitize=$(SANITIZER) $(LDFLAGS) endif ifeq ($(platform),) platform = unix ifeq ($(shell uname -a),) platform = win else ifneq ($(findstring MINGW,$(shell uname -a)),) platform = win else ifneq ($(findstring Darwin,$(shell uname -a)),) platform = osx else ifneq ($(findstring win,$(shell uname -a)),) platform = win endif endif # system platform system_platform = unix ifeq ($(shell uname -a),) EXE_EXT = .exe system_platform = win else ifneq ($(findstring Darwin,$(shell uname -a)),) system_platform = osx arch = intel ifeq ($(shell uname -p),powerpc) arch = ppc endif else ifneq ($(findstring MINGW,$(shell uname -a)),) system_platform = win endif CORE_DIR += . TARGET_NAME := skeleton LIBM = -lm ifeq ($(ARCHFLAGS),) ifeq ($(archs),ppc) ARCHFLAGS = -arch ppc -arch ppc64 else ARCHFLAGS = -arch i386 -arch x86_64 endif endif ifeq ($(platform), osx) ifndef ($(NOUNIVERSAL)) CXXFLAGS += $(ARCHFLAGS) LFLAGS += $(ARCHFLAGS) endif endif ifeq ($(STATIC_LINKING), 1) EXT := a endif ifeq ($(platform), unix) EXT ?= so TARGET := $(TARGET_NAME)_libretro.$(EXT) fpic := -fPIC SHARED := -shared -Wl,--version-script=$(CORE_DIR)/link.T -Wl,--no-undefined else ifeq ($(platform), linux-portable) TARGET := $(TARGET_NAME)_libretro.$(EXT) fpic := -fPIC -nostdlib SHARED := -shared -Wl,--version-script=$(CORE_DIR)/link.T LIBM := else ifneq (,$(findstring osx,$(platform))) TARGET := $(TARGET_NAME)_libretro.dylib fpic := -fPIC SHARED := -dynamiclib else ifneq (,$(findstring ios,$(platform))) TARGET := $(TARGET_NAME)_libretro_ios.dylib fpic := -fPIC SHARED := -dynamiclib ifeq ($(IOSSDK),) IOSSDK := $(shell xcodebuild -version -sdk iphoneos Path) endif DEFINES := -DIOS CC = cc -arch armv7 -isysroot $(IOSSDK) ifeq ($(platform),ios9) CC += -miphoneos-version-min=8.0 CXXFLAGS += -miphoneos-version-min=8.0 else CC += -miphoneos-version-min=5.0 CXXFLAGS += -miphoneos-version-min=5.0 endif else ifneq (,$(findstring qnx,$(platform))) TARGET := $(TARGET_NAME)_libretro_qnx.so fpic := -fPIC SHARED := -shared -Wl,--version-script=$(CORE_DIR)/link.T -Wl,--no-undefined else ifeq ($(platform), emscripten) TARGET := $(TARGET_NAME)_libretro_emscripten.bc fpic := -fPIC SHARED := -shared -Wl,--version-script=$(CORE_DIR)/link.T -Wl,--no-undefined else ifeq ($(platform), vita) TARGET := $(TARGET_NAME)_vita.a CC = arm-vita-eabi-gcc AR = arm-vita-eabi-ar CXXFLAGS += -Wl,-q -Wall -O3 STATIC_LINKING = 1 else CC = gcc TARGET := $(TARGET_NAME)_libretro.dll SHARED := -shared -static-libgcc -static-libstdc++ -s -Wl,--version-script=$(CORE_DIR)/link.T -Wl,--no-undefined endif LDFLAGS += $(LIBM) ifeq ($(DEBUG), 1) CFLAGS += -O0 -g -DDEBUG CXXFLAGS += -O0 -g -DDEBUG else CFLAGS += -O3 CXXFLAGS += -O3 endif include Makefile.common OBJECTS := $(SOURCES_C:.c=.o) $(SOURCES_CXX:.cpp=.o) CFLAGS += -Wall -D__LIBRETRO__ $(fpic) CXXFLAGS += -Wall -D__LIBRETRO__ $(fpic) all: $(TARGET) $(TARGET): $(OBJECTS) ifeq ($(STATIC_LINKING), 1) $(AR) rcs $@ $(OBJECTS) else @$(if $(Q), $(shell echo echo LD $@),) $(Q)$(CXX) $(fpic) $(SHARED) $(INCLUDES) -o $@ $(OBJECTS) $(LDFLAGS) endif %.o: %.c @$(if $(Q), $(shell echo echo CC $<),) $(Q)$(CXX) $(CFLAGS) $(fpic) -c -o $@ $< clean: rm -f $(OBJECTS) $(TARGET) .PHONY: clean print-%: @echo '$*=$($*)'