1LIBRETRO_SWITCH = 0 2 3INTERNAL_LIBAVCODEC = 0 4INTERNAL_LIBAVFORMAT = 0 5INTERNAL_LIBAVUTIL = 0 6INTERNAL_LIBSWRESAMPLE = 0 7INTERNAL_LIBSWSCALE = 0 8 9INTERNAL_LIBFLAC = 0 10INTERNAL_LIBOGG = 0 11INTERNAL_LIBLAME = 0 12INTERNAL_LIBFAAC = 0 13INTERNAL_LIBSPEEX = 0 14INTERNAL_LIBTHEORA = 0 15INTERNAL_LIBOPUS = 0 16INTERNAL_LIBVORBIS = 0 17INTERNAL_WEBP = 0 18INTERNAL_ZLIB = 0 19INTERNAL_WAVPACK = 0 20INTERNAL_XVIDCORE = 0 21INTERNAL_VPX = 0 22 23WANT_LIBASS = 0 24 25GLFLAGS := 26 27BAKE_IN_FFMPEG := 0 28 29#CPU Optimization flags 30HAVE_SSE2 = 0 31HAVE_MMX = 0 32HAVE_THREADS=1 33 34#Additional codec support for internal FFmpeg 35HAVE_WAVPACK = 0 36HAVE_LIBSPEEX = 0 37HAVE_LIBWEBP = 0 38HAVE_LIBOGG = 0 39HAVE_LIBX264 = 0 40HAVE_LIBX265 = 0 41HAVE_LIBFAAC = 0 42HAVE_LIBFLAC = 0 43HAVE_LIBLAME = 0 44HAVE_LIBTWOLAME = 0 45HAVE_LIBVORBIS = 0 46HAVE_LIBTHEORA = 0 47HAVE_LIBOPUS = 0 48HAVE_ZLIB = 0 49 50#Video support 51OPENGL = 1 52HAVE_CODEC_HW = 0 53 54CORE_DIR := . 55 56ifeq ($(platform),) 57platform = unix 58ifeq ($(shell uname -a),) 59 platform = win 60else ifneq ($(findstring MINGW,$(shell uname -a)),) 61 platform = win 62else ifneq ($(findstring Darwin,$(shell uname -a)),) 63 platform = osx 64else ifneq ($(findstring win,$(shell uname -a)),) 65 platform = win 66endif 67endif 68 69system = $(shell uname -m) 70 71ifeq ($(system),x86_64) 72ARCH_X86 = 1 73ARCH_X86_64 = 1 74endif 75 76TARGET_NAME := ffmpeg 77 78GIT_VERSION ?= " $(shell git rev-parse --short HEAD || echo unknown)" 79ifneq ($(GIT_VERSION)," unknown") 80 CFLAGS += -DGIT_VERSION=\"$(GIT_VERSION)\" 81endif 82 83ifneq (,$(findstring unix,$(platform))) 84 ARCH_X86 = 1 85 TARGET := $(TARGET_NAME)_libretro.so 86 fpic := -fPIC 87 SHARED := -shared -Wl,--version-script=link.T -Wl,--no-undefined -fPIC 88ifeq ($(OPENGL),1) 89 GL_LIB := -lGL 90 HAVE_OPENGL = 1 91 HAVE_GL_FFT := 1 92endif 93 HAVE_SSA := 1 94 95 HAVE_POLL_H = 1 96 HAVE_GETADDRINFO = 1 97 HAVE_NETWORK = 1 98 HAVE_SOCKLEN = 1 99 HAVE_PTHREADS=1 100 101else ifneq (,$(findstring osx,$(platform))) 102 103 ARCH_X86 = 1 104 LIBRETRO_SWITCH = 1 105 TARGET := $(TARGET_NAME)_libretro.dylib 106 fpic := -fPIC 107 SHARED := -dynamiclib 108 CFLAGS += -I. -I.. -DHAVE_FMINF 109 110ifeq ($(OPENGL),1) 111 GL_LIB := -framework OpenGL 112 HAVE_GL_FFT := 1 113 HAVE_OPENGL = 1 114endif 115 OSXVER = `sw_vers -productVersion | cut -d. -f 2` 116 OSX_LT_MAVERICKS = `(( $(OSXVER) <= 9)) && echo "YES"` 117 fpic += -mmacosx-version-min=10.1 118 HAVE_POLL_H = 1 119 HAVE_GETADDRINFO = 1 120 HAVE_NETWORK = 1 121 HAVE_SOCKLEN = 1 122 HAVE_PTHREADS=1 123 124else ifneq (,$(findstring ios,$(platform))) 125 126 #ARCH_ARM = 1 127 LIBRETRO_SWITCH = 1 128 TARGET := $(TARGET_NAME)_libretro_ios.dylib 129 fpic := -fPIC 130 SHARED := -dynamiclib 131 CFLAGS += -I. -I.. -DHAVE_FMINF -DIOS -DHAVE_UNISTD_H 132ifeq ($(OPENGL),1) 133 HAVE_OPENGL = 1 134 GLES = 1 135 GL_LIB := -framework OpenGLES 136 HAVE_GL_FFT := 1 137 CFLAGS += -DHAVE_OPENGLES -DHAVE_OPENGLES3 138endif 139 HAVE_ARMV7=1 140 HAVE_PTHREADS=1 141 ARCH_X86 = 0 142 ARCH_X86_64 = 0 143 144ifeq ($(IOSSDK),) 145 IOSSDK := $(shell xcodebuild -version -sdk iphoneos Path) 146endif 147 148ifeq ($(platform),ios-arm64) 149 CC = cc -arch arm64 -isysroot $(IOSSDK) 150 CXX = c++ -arch arm64 -isysroot $(IOSSDK) 151else 152 CC = cc -arch armv7 -isysroot $(IOSSDK) 153 CXX = c++ -arch armv7 -isysroot $(IOSSDK) 154 LD = armv7-apple-darwin11-ld 155endif 156 157ifeq ($(platform),$(filter $(platform),ios9 ios-arm64)) 158 CC += -miphoneos-version-min=8.0 159 CFLAGS += -miphoneos-version-min=8.0 160else 161 CC += -miphoneos-version-min=5.0 162 CFLAGS += -miphoneos-version-min=5.0 163endif 164 CFLAGS += -DHAVE_STRUCT_SOCKADDR_STORAGE -DHAVE_STRUCT_ADDRINFO 165 HAVE_POLL_H = 1 166 HAVE_GETADDRINFO = 1 167 HAVE_NETWORK = 1 168 HAVE_SOCKLEN = 1 169 170else ifeq ($(platform), emscripten) 171 ARCH_X86 = 0 172 ARCH_X86_64=0 173 ARCH_ARM = 0 174 TARGET := $(TARGET_NAME)_libretro_$(platform).bc 175 STATIC_LINKING=1 176 HAVE_PTHREADS=1 177 LIBRETRO_SWITCH = 1 178 CFLAGS += -DHAVE_UNISTD_H 179 CFLAGS += -DHAVE_STRUCT_SOCKADDR_STORAGE -DHAVE_STRUCT_ADDRINFO 180 HAVE_POLL_H = 1 181 HAVE_GETADDRINFO = 1 182 HAVE_NETWORK = 1 183 HAVE_SOCKLEN = 1 184 HAVE_PTHREADS=1 185 186# Windows 187else 188 189 ARCH_X86 = 1 190 TARGET := $(TARGET_NAME)_libretro.dll 191 SHARED := -shared -static-libgcc -static-libstdc++ -s -Wl,--version-script=link.T -Wl,--no-undefined 192 CFLAGS += -Iffmpeg 193ifeq ($(OPENGL),1) 194 GL_LIB := -lopengl32 195 CFLAGS += -DHAVE_OPENGL 196 HAVE_OPENGL = 1 197 HAVE_GL_FFT := 1 198 WIN32_PLATFORM := 1 199endif 200 LIBS += -L. 201endif 202 203ifeq ($(LIBRETRO_SWITCH), 1) 204 CFLAGS += -DUPSTREAM_VERSION=\"$(shell cat ../RELEASE)\" 205endif 206 207CFLAGS += -D__LIBRETRO__ 208 209include Makefile.common 210 211CFLAGS += $(DEFINES) $(INCFLAGS) $(GLFLAGS) $(DEF_FLAGS) 212CFLAGS += -Wall $(fpic) 213 214ifeq ($(DEBUG), 1) 215 CFLAGS += -O0 -g 216else 217 CFLAGS += -O3 218endif 219 220OBJECTS := $(SOURCES_C:.c=.o) $(SOURCES_CXX:.cpp=.o) 221 222all: $(TARGET) 223 224%.o: %.c 225 $(CC) -c -std=gnu99 -o $@ $< $(CFLAGS) 226 227%.o: %.cpp 228 $(CXX) -c -fno-strict-aliasing -o $@ $< $(CFLAGS) 229 230$(TARGET): $(OBJECTS) 231ifeq ($(STATIC_LINKING),1) 232 $(AR) rcs $@ $(OBJECTS) 233else 234 $(CXX) -o $@ $^ $(LIBS) $(SHARED) 235endif 236 237clean: 238 rm -f $(OBJECTS) 239 rm -f $(TARGET) 240 241.PHONY: clean 242