21
21
# Makefile for mupen64plus-video-arachnoid
23
23
# detect operation system
24
UNAME = $(shell uname -s)
24
UNAME ?= $(shell uname -s)
25
25
ifeq ("$(UNAME)","Linux")
62
ifeq ("$(patsubst MINGW%,MINGW,$(UNAME))","MINGW")
69
$(error OS type "$(UNAME)" not supported. Please file bug report at 'http://code.google.com/p/mupen64plus/issues')
63
72
# detect system architecture
64
73
HOST_CPU ?= $(shell uname -m)
91
100
$(warning Architecture "$(HOST_CPU)" not officially supported.')
102
ifneq ("$(filter arm%,$(HOST_CPU))","")
103
ifeq ("$(filter arm%b,$(HOST_CPU))","")
105
ARCH_DETECTED := 32BITS
107
$(warning Architecture "$(HOST_CPU)" not officially supported.')
94
111
# base CFLAGS, LDLIBS, and LDFLAGS
96
CFLAGS += $(OPTFLAGS) -ffast-math -fno-strict-aliasing -fvisibility=hidden -I../../src \
112
OPTFLAGS ?= -O3 -flto
114
CFLAGS += $(OPTFLAGS) $(WARNFLAGS) -ffast-math -fno-strict-aliasing -fvisibility=hidden -I../../src \
97
115
-I../../src/hash -I../../src/ucodes -I../../src/GBI -I../../src/RDP -I../../src/utils \
98
116
-I../../src/log -I../../src/RSP -I../../src/framebuffer -I../../src/math -I../../src/renderer \
99
117
-I../../src/Assembler -I../../src/texture -I../../src/config -I../../src/Combiner
103
121
# On OS X, add a few extra flags to elegantly support cross-compilation and backward
104
122
# compatibility (and also the flags to link against OpenGL)
105
123
ifeq ($(OS), OSX)
124
# Select the proper SDK
125
# Also, SDKs are stored in a different location since XCode 4.3
126
OSX_SDK ?= $(shell sw_vers -productVersion | cut -f1 -f2 -d .)
127
OSX_XCODEMAJ = $(shell xcodebuild -version | grep '[0-9]*\.[0-9]*' | cut -f2 -d ' ' | cut -f1 -d .)
128
OSX_XCODEMIN = $(shell xcodebuild -version | grep '[0-9]*\.[0-9]*' | cut -f2 -d ' ' | cut -f2 -d .)
129
OSX_XCODEGE43 = $(shell echo "`expr $(OSX_XCODEMAJ) \>= 4``expr $(OSX_XCODEMIN) \>= 3`")
130
ifeq ($(OSX_XCODEGE43), 11)
131
OSX_SYSROOT := /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
133
OSX_SYSROOT := /Developer/SDKs
106
136
ifeq ($(CPU), X86)
107
137
ifeq ($(ARCH_DETECTED), 64BITS)
108
CFLAGS += -arch x86_64 -mmacosx-version-min=10.5 -isysroot /Developer/SDKs/MacOSX10.5.sdk
109
LDFLAGS += -bundle -framework OpenGL -arch x86_64 -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.5.sdk
138
CFLAGS += -arch x86_64 -mmacosx-version-min=$(OSX_SDK) -isysroot $(OSX_SYSROOT)/MacOSX$(OSX_SDK).sdk
111
CFLAGS += -arch i686 -mmacosx-version-min=10.5 -isysroot /Developer/SDKs/MacOSX10.5.sdk
112
LDFLAGS += -bundle -framework OpenGL -arch i686 -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.5.sdk
141
CFLAGS += -arch i686 -mmacosx-version-min=$(OSX_SDK) -isysroot $(OSX_SYSROOT)/MacOSX$(OSX_SDK).sdk
116
# test for essential build dependencies
117
ifeq ($(shell which pkg-config 2>/dev/null),)
118
$(error pkg-config not found)
120
ifeq ($(shell pkg-config --modversion gl 2>/dev/null),)
121
$(error No OpenGL development libraries found!)
124
CFLAGS += -pthread $(shell pkg-config --cflags gl)
125
LDLIBS += -pthread $(shell pkg-config --libs gl)
146
# search for OpenGL libraries
148
GL_LDLIBS = -framework OpenGL
151
GL_LDLIBS = -lopengl32
154
ifeq ($(origin GL_CFLAGS) $(origin GL_LDLIBS), undefined undefined)
155
ifeq ($(origin PKG_CONFIG), undefined)
156
PKG_CONFIG = $(CROSS_COMPILE)pkg-config
157
ifeq ($(shell which $(PKG_CONFIG) 2>/dev/null),)
158
$(error $(PKG_CONFIG) not found)
162
ifeq ($(shell $(PKG_CONFIG) --modversion gl 2>/dev/null),)
163
$(error No OpenGL development libraries found!)
165
GL_CFLAGS += $(shell $(PKG_CONFIG) --cflags gl)
166
GL_LDLIBS += $(shell $(PKG_CONFIG) --libs gl)
168
CFLAGS += $(GL_CFLAGS)
169
LDLIBS += $(GL_LDLIBS)
127
173
ifeq ($(OS), LINUX)
176
220
# tweak flags for 32-bit build on 64-bit system
177
221
ifeq ($(ARCH_DETECTED), 64BITS_32)
179
LDFLAGS += -m32 -Wl,-m,elf_i386
223
LDFLAGS += -Wl,-m,elf_i386
197
241
# set base program pointers and flags
242
CC = $(CROSS_COMPILE)gcc
243
CXX = $(CROSS_COMPILE)g++
201
245
INSTALL ?= install
202
246
MKDIR ?= mkdir -p
203
247
COMPILE.c = $(Q_CC)$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
204
248
COMPILE.cc = $(Q_CXX)$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
205
LINK.o = $(Q_LD)$(CXX) $(LDFLAGS) $(TARGET_ARCH)
249
LINK.o = $(Q_LD)$(CXX) $(CXXFLAGS) $(LDFLAGS) $(TARGET_ARCH)
207
251
# set special flags for given Makefile parameters
208
252
ifeq ($(DEBUG),1)
282
326
$(SRCDIR)/Combiner/CombinerCache.cpp \
283
327
$(SRCDIR)/RomDetector.cpp \
284
328
$(SRCDIR)/RDP/RDP.cpp \
285
$(SRCDIR)/RDP/RDPInstructions.cpp \
286
$(SRCDIR)/osal_dynamiclib_unix.cpp
329
$(SRCDIR)/RDP/RDPInstructions.cpp
332
SOURCE += $(SRCDIR)/osal_dynamiclib_win32.cpp
334
SOURCE += $(SRCDIR)/osal_dynamiclib_unix.cpp
289
338
# generate a list of object files build, make a temporary directory for them
305
354
@echo " Options:"
306
355
@echo " BITS=32 == build 32-bit binaries on 64-bit machine"
307
356
@echo " APIDIR=path == path to find Mupen64Plus Core headers"
308
@echo " OPTFLAGS=flag == compiler optimization (default: -O3)"
357
@echo " OPTFLAGS=flag == compiler optimization (default: -O3 -flto)"
358
@echo " WARNFLAGS=flag == compiler warning levels (default: -Wall)"
309
359
@echo " PIC=(1|0) == Force enable/disable of position independent code"
360
@echo " POSTFIX=name == String added to the name of the the build (default: '')"
310
361
@echo " Install Options:"
311
362
@echo " PREFIX=path == install/uninstall prefix (default: /usr/local)"
312
363
@echo " LIBDIR=path == library prefix (default: PREFIX/lib)"
314
365
@echo " DESTDIR=path == path to prepend to all installation paths (only for packagers)"
315
366
@echo " Debugging Options:"
316
367
@echo " DEBUG=1 == add debugging symbols"
317
@echo " LTO=1 == enable experimental build with link-time optimization"
318
368
@echo " V=1 == show verbose compiler output"