mirror of
https://github.com/rn10950/RetroZilla.git
synced 2024-11-15 20:10:33 +01:00
a572ea8ca3
bug1095307, bug1073330(backout), bug1084986, bug1050069, bug942172, bug1054547, bug532081, bug1096348, bug1058870, bug1093940, bug1102985, bug1112461, bug1094492, bug112029, bug1119983, bug1120685, bug1120691, bug1113632, bug863076, bug1082973, bug1124539, bug1117617, bug1117621, bug1121273, bug753136, bug921684, bug1132818, bug1125375, bug647690, bug1055441, bug1134455, bug975010, bug950369, bug1128367, bug1129573, bug1136095, bug1117897, bug1113453, bug1061725, bug1073330, bug1111901, bug1083900, bug1136095, bug1138820, bug1096741, bug1134548, bug345725, bug950348, bug950344, bug1151037, bug991783, bug1153994
138 lines
5.0 KiB
Makefile
138 lines
5.0 KiB
Makefile
#
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
include $(CORE_DEPTH)/coreconf/UNIX.mk
|
|
|
|
DEFAULT_COMPILER = gcc
|
|
|
|
CC = gcc
|
|
CCC = g++
|
|
RANLIB = ranlib
|
|
|
|
ifndef CPU_ARCH
|
|
# When cross-compiling, CPU_ARCH should already be defined as the target
|
|
# architecture, set to powerpc or i386.
|
|
CPU_ARCH := $(shell uname -p)
|
|
endif
|
|
|
|
ifeq (,$(filter-out i%86,$(CPU_ARCH)))
|
|
ifdef USE_64
|
|
CC += -arch x86_64
|
|
override CPU_ARCH = x86_64
|
|
else
|
|
OS_REL_CFLAGS = -Di386
|
|
CC += -arch i386
|
|
override CPU_ARCH = x86
|
|
endif
|
|
else
|
|
ifeq (arm,$(CPU_ARCH))
|
|
# Nothing set for arm currently.
|
|
else
|
|
OS_REL_CFLAGS = -Dppc
|
|
CC += -arch ppc
|
|
endif
|
|
endif
|
|
|
|
ifneq (,$(MACOS_SDK_DIR))
|
|
GCC_VERSION_FULL := $(shell $(CC) -dumpversion)
|
|
GCC_VERSION_MAJOR := $(shell echo $(GCC_VERSION_FULL) | awk -F. '{ print $$1 }')
|
|
GCC_VERSION_MINOR := $(shell echo $(GCC_VERSION_FULL) | awk -F. '{ print $$2 }')
|
|
GCC_VERSION = $(GCC_VERSION_MAJOR).$(GCC_VERSION_MINOR)
|
|
|
|
ifeq (,$(filter-out 2 3,$(GCC_VERSION_MAJOR)))
|
|
# GCC <= 3
|
|
DARWIN_SDK_FRAMEWORKS = -F$(MACOS_SDK_DIR)/System/Library/Frameworks
|
|
ifneq (,$(shell find $(MACOS_SDK_DIR)/Library/Frameworks -maxdepth 0))
|
|
DARWIN_SDK_FRAMEWORKS += -F$(MACOS_SDK_DIR)/Library/Frameworks
|
|
endif
|
|
DARWIN_SDK_CFLAGS = -nostdinc -isystem $(MACOS_SDK_DIR)/usr/include/gcc/darwin/$(GCC_VERSION) -isystem $(MACOS_SDK_DIR)/usr/include $(DARWIN_SDK_FRAMEWORKS)
|
|
DARWIN_SDK_LDFLAGS = -L$(MACOS_SDK_DIR)/usr/lib/gcc/darwin -L$(MACOS_SDK_DIR)/usr/lib/gcc/darwin/$(GCC_VERSION_FULL) -L$(MACOS_SDK_DIR)/usr/lib
|
|
DARWIN_SDK_SHLIBFLAGS = $(DARWIN_SDK_LDFLAGS) $(DARWIN_SDK_FRAMEWORKS)
|
|
NEXT_ROOT = $(MACOS_SDK_DIR)
|
|
export NEXT_ROOT
|
|
else
|
|
# GCC >= 4
|
|
DARWIN_SDK_CFLAGS = -isysroot $(MACOS_SDK_DIR)
|
|
ifneq (4.0.0,$(GCC_VERSION_FULL))
|
|
# gcc > 4.0.0 passes -syslibroot to ld based on -isysroot.
|
|
# Don't add -isysroot to DARWIN_SDK_LDFLAGS, because the programs
|
|
# that are linked with those flags also get DARWIN_SDK_CFLAGS.
|
|
DARWIN_SDK_SHLIBFLAGS = -isysroot $(MACOS_SDK_DIR)
|
|
else
|
|
# gcc 4.0.0 doesn't pass -syslibroot to ld, it needs to be
|
|
# explicit.
|
|
DARWIN_SDK_LDFLAGS = -Wl,-syslibroot,$(MACOS_SDK_DIR)
|
|
DARWIN_SDK_SHLIBFLAGS = $(DARWIN_SDK_LDFLAGS)
|
|
endif
|
|
endif
|
|
|
|
LDFLAGS += $(DARWIN_SDK_LDFLAGS)
|
|
endif
|
|
|
|
# "Commons" are tentative definitions in a global scope, like this:
|
|
# int x;
|
|
# The meaning of a common is ambiguous. It may be a true definition:
|
|
# int x = 0;
|
|
# or it may be a declaration of a symbol defined in another file:
|
|
# extern int x;
|
|
# Use the -fno-common option to force all commons to become true
|
|
# definitions so that the linker can catch multiply-defined symbols.
|
|
# Also, common symbols are not allowed with Darwin dynamic libraries.
|
|
|
|
OS_CFLAGS = $(DSO_CFLAGS) $(OS_REL_CFLAGS) -Wall -fno-common -pipe -DDARWIN -DHAVE_STRERROR -DHAVE_BSD_FLOCK $(DARWIN_SDK_CFLAGS)
|
|
|
|
ifdef BUILD_OPT
|
|
ifeq (11,$(ALLOW_OPT_CODE_SIZE)$(OPT_CODE_SIZE))
|
|
OPTIMIZER = -Oz
|
|
else
|
|
OPTIMIZER = -O2
|
|
endif
|
|
ifdef MOZ_DEBUG_SYMBOLS
|
|
ifdef MOZ_DEBUG_FLAGS
|
|
OPTIMIZER += $(MOZ_DEBUG_FLAGS)
|
|
else
|
|
OPTIMIZER += -gdwarf-2 -gfull
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ARCH = darwin
|
|
|
|
DSO_CFLAGS = -fPIC
|
|
# May override this with different compatibility and current version numbers.
|
|
DARWIN_DYLIB_VERSIONS = -compatibility_version 1 -current_version 1
|
|
# May override this with -bundle to create a loadable module.
|
|
DSO_LDOPTS = -dynamiclib $(DARWIN_DYLIB_VERSIONS) -install_name @executable_path/$(notdir $@) -headerpad_max_install_names
|
|
|
|
MKSHLIB = $(CC) $(DSO_LDOPTS) $(DARWIN_SDK_SHLIBFLAGS)
|
|
DLL_SUFFIX = dylib
|
|
ifdef MAPFILE
|
|
MKSHLIB += -exported_symbols_list $(MAPFILE)
|
|
endif
|
|
PROCESS_MAP_FILE = grep -v ';+' $< | grep -v ';-' | \
|
|
sed -e 's; DATA ;;' -e 's,;;,,' -e 's,;.*,,' -e 's,^,_,' > $@
|
|
|
|
USE_SYSTEM_ZLIB = 1
|
|
ZLIB_LIBS = -lz
|
|
|
|
# The system sqlite library in the latest version of Mac OS X often becomes
|
|
# newer than the sqlite library in NSS. This may result in certain Mac OS X
|
|
# system libraries having unresolved sqlite symbols during the shlibsign step
|
|
# of the NSS build when we set DYLD_LIBRARY_PATH to the NSS lib directory and
|
|
# the NSS libsqlite3.dylib is used instead of the system one. So just use the
|
|
# system sqlite library on Mac, if it's sufficiently new.
|
|
|
|
SYS_SQLITE3_VERSION_FULL := $(shell /usr/bin/sqlite3 -version | awk '{print $$1}')
|
|
SYS_SQLITE3_VERSION_MAJOR := $(shell echo $(SYS_SQLITE3_VERSION_FULL) | awk -F. '{ print $$1 }')
|
|
SYS_SQLITE3_VERSION_MINOR := $(shell echo $(SYS_SQLITE3_VERSION_FULL) | awk -F. '{ print $$2 }')
|
|
|
|
ifeq (3,$(SYS_SQLITE3_VERSION_MAJOR))
|
|
ifeq (,$(filter-out 0 1 2 3 4,$(SYS_SQLITE3_VERSION_MINOR)))
|
|
# sqlite <= 3.4.x is too old, it doesn't provide sqlite3_file_control
|
|
else
|
|
NSS_USE_SYSTEM_SQLITE = 1
|
|
endif
|
|
endif
|