mirror of
https://github.com/rn10950/RetroZilla.git
synced 2024-11-14 03:30:17 +01:00
44b7f056d9
bug1001332, 56b691c003ad, bug1086145, bug1054069, bug1155922, bug991783, bug1125025, bug1162521, bug1162644, bug1132941, bug1164364, bug1166205, bug1166163, bug1166515, bug1138554, bug1167046, bug1167043, bug1169451, bug1172128, bug1170322, bug102794, bug1128184, bug557830, bug1174648, bug1180244, bug1177784, bug1173413, bug1169174, bug1084669, bug951455, bug1183395, bug1177430, bug1183827, bug1160139, bug1154106, bug1142209, bug1185033, bug1193467, bug1182667(with sha512 changes backed out, which breaks VC6 compilation), bug1158489, bug337796
248 lines
6.2 KiB
Makefile
248 lines
6.2 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
|
|
|
|
#
|
|
# The default implementation strategy for Linux is now pthreads
|
|
#
|
|
ifneq ($(OS_TARGET),Android)
|
|
USE_PTHREADS = 1
|
|
endif
|
|
|
|
ifeq ($(USE_PTHREADS),1)
|
|
IMPL_STRATEGY = _PTH
|
|
endif
|
|
|
|
CC = gcc
|
|
CCC = g++
|
|
RANLIB = ranlib
|
|
|
|
DEFAULT_COMPILER = gcc
|
|
|
|
ifeq ($(OS_TARGET),Android)
|
|
ifndef ANDROID_NDK
|
|
$(error Must set ANDROID_NDK to the path to the android NDK first)
|
|
endif
|
|
ANDROID_PREFIX=$(OS_TEST)-linux-androideabi
|
|
ANDROID_TARGET=$(ANDROID_PREFIX)-4.4.3
|
|
# should autodetect which linux we are on, currently android only
|
|
# supports linux-x86 prebuilts
|
|
ANDROID_TOOLCHAIN=$(ANDROID_NDK)/toolchains/$(ANDROID_TARGET)/prebuilt/linux-x86
|
|
ANDROID_SYSROOT=$(ANDROID_NDK)/platforms/android-$(OS_TARGET_RELEASE)/arch-$(OS_TEST)
|
|
ANDROID_CC=$(ANDROID_TOOLCHAIN)/bin/$(ANDROID_PREFIX)-gcc
|
|
# internal tools need to be built with the native compiler
|
|
ifndef INTERNAL_TOOLS
|
|
CC = $(ANDROID_CC) --sysroot=$(ANDROID_SYSROOT)
|
|
DEFAULT_COMPILER=$(ANDROID_PREFIX)-gcc
|
|
ARCHFLAG = --sysroot=$(ANDROID_SYSROOT)
|
|
DEFINES += -DNO_SYSINFO -DNO_FORK_CHECK -DANDROID
|
|
CROSS_COMPILE = 1
|
|
endif
|
|
endif
|
|
ifeq ($(OS_TEST),ppc64)
|
|
CPU_ARCH = ppc
|
|
ifeq ($(USE_64),1)
|
|
ARCHFLAG = -m64
|
|
endif
|
|
else
|
|
ifeq ($(OS_TEST),alpha)
|
|
OS_REL_CFLAGS = -D_ALPHA_
|
|
CPU_ARCH = alpha
|
|
else
|
|
ifeq ($(OS_TEST),x86_64)
|
|
ifeq ($(USE_64),1)
|
|
CPU_ARCH = x86_64
|
|
ARCHFLAG = -m64
|
|
else
|
|
ifeq ($(USE_X32),1)
|
|
CPU_ARCH = x86_64
|
|
ARCHFLAG = -mx32
|
|
64BIT_TAG = _x32
|
|
else
|
|
OS_REL_CFLAGS = -Di386
|
|
CPU_ARCH = x86
|
|
ARCHFLAG = -m32
|
|
endif
|
|
endif
|
|
else
|
|
ifeq ($(OS_TEST),sparc64)
|
|
CPU_ARCH = sparc
|
|
else
|
|
ifeq (,$(filter-out arm% sa110,$(OS_TEST)))
|
|
CPU_ARCH = arm
|
|
else
|
|
ifeq (,$(filter-out parisc%,$(OS_TEST)))
|
|
CPU_ARCH = hppa
|
|
else
|
|
ifeq (,$(filter-out i%86,$(OS_TEST)))
|
|
OS_REL_CFLAGS = -Di386
|
|
CPU_ARCH = x86
|
|
else
|
|
ifeq ($(OS_TEST),sh4a)
|
|
CPU_ARCH = sh4
|
|
else
|
|
# $(OS_TEST) == m68k, ppc, ia64, sparc, s390, s390x, mips, sh3, sh4
|
|
CPU_ARCH = $(OS_TEST)
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
|
|
ifneq ($(OS_TARGET),Android)
|
|
LIBC_TAG = _glibc
|
|
endif
|
|
|
|
ifeq ($(OS_RELEASE),2.0)
|
|
OS_REL_CFLAGS += -DLINUX2_0
|
|
MKSHLIB = $(CC) -shared -Wl,-soname -Wl,$(@:$(OBJDIR)/%.so=%.so) $(RPATH)
|
|
ifdef MAPFILE
|
|
MKSHLIB += -Wl,--version-script,$(MAPFILE)
|
|
endif
|
|
PROCESS_MAP_FILE = grep -v ';-' $< | \
|
|
sed -e 's,;+,,' -e 's; DATA ;;' -e 's,;;,,' -e 's,;.*,;,' > $@
|
|
endif
|
|
|
|
ifdef BUILD_OPT
|
|
ifeq (11,$(ALLOW_OPT_CODE_SIZE)$(OPT_CODE_SIZE))
|
|
OPTIMIZER = -Os
|
|
else
|
|
OPTIMIZER = -O2
|
|
endif
|
|
ifdef MOZ_DEBUG_SYMBOLS
|
|
ifdef MOZ_DEBUG_FLAGS
|
|
OPTIMIZER += $(MOZ_DEBUG_FLAGS)
|
|
else
|
|
OPTIMIZER += -gdwarf-2
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifndef COMPILER_TAG
|
|
COMPILER_TAG = _$(shell $(CC) -? 2>&1 >/dev/null | sed -e 's/:.*//;1q')
|
|
CCC_COMPILER_TAG = _$(shell $(CCC) -? 2>&1 >/dev/null | sed -e 's/:.*//;1q')
|
|
endif
|
|
|
|
ifeq ($(USE_PTHREADS),1)
|
|
OS_PTHREAD = -lpthread
|
|
endif
|
|
|
|
OS_CFLAGS = $(DSO_CFLAGS) $(OS_REL_CFLAGS) $(ARCHFLAG) -Wall -Werror -pipe -ffunction-sections -fdata-sections -DLINUX -Dlinux -DHAVE_STRERROR
|
|
OS_LIBS = $(OS_PTHREAD) -ldl -lc
|
|
|
|
ifeq ($(COMPILER_TAG),_clang)
|
|
# -Qunused-arguments : clang objects to arguments that it doesn't understand
|
|
# and fixing this would require rearchitecture
|
|
# -Wno-parentheses-equality : because clang warns about macro expansions
|
|
OS_CFLAGS += -Qunused-arguments -Wno-parentheses-equality
|
|
ifdef BUILD_OPT
|
|
# clang is unable to handle glib's expansion of strcmp and similar for optimized
|
|
# builds, so ignore the resulting errors.
|
|
# See https://llvm.org/bugs/show_bug.cgi?id=20144
|
|
OS_CFLAGS += -Wno-array-bounds -Wno-unevaluated-expression
|
|
endif
|
|
# Clang reports its version as an older gcc, but it's OK
|
|
NSS_HAS_GCC48 = true
|
|
endif
|
|
|
|
# Check for the existence of gcc 4.8
|
|
ifndef NSS_HAS_GCC48
|
|
define GCC48_TEST =
|
|
int main() {\n
|
|
#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8)\n
|
|
return 1;\n
|
|
#else\n
|
|
return 0;\n
|
|
#endif\n
|
|
}\n
|
|
endef
|
|
TEST_GCC48 := /tmp/test_gcc48_$(shell echo $$$$)
|
|
NSS_HAS_GCC48 := (,$(shell echo -e "$(GCC48_TEST)" > $(TEST_GCC48).c && \
|
|
$(CC) -o $(TEST_GCC48) $(TEST_GCC48).c && \
|
|
$(TEST_GCC48) && echo true || echo false; \
|
|
rm -f $(TEST_GCC48) $(TEST_GCC48).c))
|
|
export NSS_HAS_GCC48
|
|
endif
|
|
|
|
ifeq (true,$(NSS_HAS_GCC48))
|
|
# Old versions of gcc (< 4.8) don't support #pragma diagnostic in functions.
|
|
# Here, we disable use of that #pragma and the warnings it suppresses.
|
|
OS_CFLAGS += -DNSS_NO_GCC48 -Wno-unused-variable
|
|
endif
|
|
|
|
ifdef USE_PTHREADS
|
|
DEFINES += -D_REENTRANT
|
|
endif
|
|
|
|
ARCH = linux
|
|
|
|
DSO_CFLAGS = -fPIC
|
|
DSO_LDOPTS = -shared $(ARCHFLAG) -Wl,--gc-sections
|
|
# The linker on Red Hat Linux 7.2 and RHEL 2.1 (GNU ld version 2.11.90.0.8)
|
|
# incorrectly reports undefined references in the libraries we link with, so
|
|
# we don't use -z defs there.
|
|
ZDEFS_FLAG = -Wl,-z,defs
|
|
DSO_LDOPTS += $(if $(findstring 2.11.90.0.8,$(shell ld -v)),,$(ZDEFS_FLAG))
|
|
LDFLAGS += $(ARCHFLAG)
|
|
|
|
# On Maemo, we need to use the -rpath-link flag for even the standard system
|
|
# library directories.
|
|
ifdef _SBOX_DIR
|
|
LDFLAGS += -Wl,-rpath-link,/usr/lib:/lib
|
|
endif
|
|
|
|
# INCLUDES += -I/usr/include -Y/usr/include/linux
|
|
G++INCLUDES = -I/usr/include/g++
|
|
|
|
#
|
|
# Always set CPU_TAG on Linux.
|
|
#
|
|
CPU_TAG = _$(CPU_ARCH)
|
|
|
|
#
|
|
# On Linux 2.6 or later, build libfreebl3.so with no NSPR and libnssutil3.so
|
|
# dependencies by default. Set FREEBL_NO_DEPEND to 0 in the environment to
|
|
# override this.
|
|
#
|
|
ifneq ($(OS_TARGET),Android)
|
|
ifeq (2.6,$(firstword $(sort 2.6 $(OS_RELEASE))))
|
|
ifndef FREEBL_NO_DEPEND
|
|
FREEBL_NO_DEPEND = 1
|
|
FREEBL_LOWHASH = 1
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
USE_SYSTEM_ZLIB = 1
|
|
ZLIB_LIBS = -lz
|
|
|
|
# The -rpath '$$ORIGIN' linker option instructs this library to search for its
|
|
# dependencies in the same directory where it resides.
|
|
ifeq ($(BUILD_SUN_PKG), 1)
|
|
ifeq ($(USE_64), 1)
|
|
RPATH = -Wl,-rpath,'$$ORIGIN:/opt/sun/private/lib64:/opt/sun/private/lib'
|
|
else
|
|
RPATH = -Wl,-rpath,'$$ORIGIN:/opt/sun/private/lib'
|
|
endif
|
|
endif
|
|
|
|
OS_REL_CFLAGS += -DLINUX2_1
|
|
MKSHLIB = $(CC) $(DSO_LDOPTS) -Wl,-soname -Wl,$(@:$(OBJDIR)/%.so=%.so) $(RPATH)
|
|
|
|
ifdef MAPFILE
|
|
MKSHLIB += -Wl,--version-script,$(MAPFILE)
|
|
endif
|
|
PROCESS_MAP_FILE = grep -v ';-' $< | \
|
|
sed -e 's,;+,,' -e 's; DATA ;;' -e 's,;;,,' -e 's,;.*,;,' > $@
|
|
|
|
ifeq ($(OS_RELEASE),2.4)
|
|
DEFINES += -DNO_FORK_CHECK
|
|
endif
|