2008-06-06 16:40:11 +04:00
|
|
|
#
|
2012-10-01 22:02:15 +04:00
|
|
|
# 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/.
|
2008-06-06 16:40:11 +04:00
|
|
|
|
|
|
|
include $(CORE_DEPTH)/coreconf/UNIX.mk
|
|
|
|
|
|
|
|
#
|
|
|
|
# The default implementation strategy for Linux is now pthreads
|
|
|
|
#
|
2013-01-25 20:26:46 +04:00
|
|
|
ifneq ($(OS_TARGET),Android)
|
|
|
|
USE_PTHREADS = 1
|
|
|
|
endif
|
2008-06-06 16:40:11 +04:00
|
|
|
|
|
|
|
ifeq ($(USE_PTHREADS),1)
|
|
|
|
IMPL_STRATEGY = _PTH
|
|
|
|
endif
|
|
|
|
|
|
|
|
CC = gcc
|
|
|
|
CCC = g++
|
|
|
|
RANLIB = ranlib
|
|
|
|
|
|
|
|
DEFAULT_COMPILER = gcc
|
|
|
|
|
2013-01-25 20:26:46 +04:00
|
|
|
ifeq ($(OS_TARGET),Android)
|
|
|
|
ifndef ANDROID_NDK
|
|
|
|
$(error Must set ANDROID_NDK to the path to the android NDK first)
|
2015-10-23 21:39:23 +03:00
|
|
|
endif
|
|
|
|
ifndef ANDROID_TOOLCHAIN_VERSION
|
|
|
|
$(error Must set ANDROID_TOOLCHAIN_VERSION to the requested version number)
|
2013-01-25 20:26:46 +04:00
|
|
|
endif
|
|
|
|
ANDROID_PREFIX=$(OS_TEST)-linux-androideabi
|
2015-10-23 21:39:23 +03:00
|
|
|
ANDROID_TARGET=$(ANDROID_PREFIX)-$(ANDROID_TOOLCHAIN_VERSION)
|
2013-01-25 20:26:46 +04:00
|
|
|
# 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
|
2015-10-23 21:39:23 +03:00
|
|
|
ANDROID_CCC=$(ANDROID_TOOLCHAIN)/bin/$(ANDROID_PREFIX)-g++
|
|
|
|
NSS_DISABLE_GTESTS=1
|
2013-01-25 20:26:46 +04:00
|
|
|
# internal tools need to be built with the native compiler
|
|
|
|
ifndef INTERNAL_TOOLS
|
|
|
|
CC = $(ANDROID_CC) --sysroot=$(ANDROID_SYSROOT)
|
2015-10-23 21:39:23 +03:00
|
|
|
CCC = $(ANDROID_CCC) --sysroot=$(ANDROID_SYSROOT)
|
2013-01-25 20:26:46 +04:00
|
|
|
DEFAULT_COMPILER=$(ANDROID_PREFIX)-gcc
|
|
|
|
ARCHFLAG = --sysroot=$(ANDROID_SYSROOT)
|
|
|
|
DEFINES += -DNO_SYSINFO -DNO_FORK_CHECK -DANDROID
|
|
|
|
CROSS_COMPILE = 1
|
|
|
|
endif
|
|
|
|
endif
|
2014-09-05 19:18:18 +04:00
|
|
|
ifeq (,$(filter-out ppc64 ppc64le,$(OS_TEST)))
|
2008-06-06 16:40:11 +04:00
|
|
|
CPU_ARCH = ppc
|
|
|
|
ifeq ($(USE_64),1)
|
|
|
|
ARCHFLAG = -m64
|
|
|
|
endif
|
|
|
|
else
|
|
|
|
ifeq ($(OS_TEST),alpha)
|
2010-02-07 14:54:28 +03:00
|
|
|
OS_REL_CFLAGS = -D_ALPHA_
|
2008-06-06 16:40:11 +04:00
|
|
|
CPU_ARCH = alpha
|
|
|
|
else
|
|
|
|
ifeq ($(OS_TEST),x86_64)
|
|
|
|
ifeq ($(USE_64),1)
|
|
|
|
CPU_ARCH = x86_64
|
2014-03-10 06:40:25 +04:00
|
|
|
ARCHFLAG = -m64
|
|
|
|
else
|
|
|
|
ifeq ($(USE_X32),1)
|
|
|
|
CPU_ARCH = x86_64
|
|
|
|
ARCHFLAG = -mx32
|
|
|
|
64BIT_TAG = _x32
|
2008-06-06 16:40:11 +04:00
|
|
|
else
|
2010-02-07 14:54:28 +03:00
|
|
|
OS_REL_CFLAGS = -Di386
|
2008-06-06 16:40:11 +04:00
|
|
|
CPU_ARCH = x86
|
|
|
|
ARCHFLAG = -m32
|
|
|
|
endif
|
2014-03-10 06:40:25 +04:00
|
|
|
endif
|
2008-06-06 16:40:11 +04:00
|
|
|
else
|
|
|
|
ifeq ($(OS_TEST),sparc64)
|
|
|
|
CPU_ARCH = sparc
|
|
|
|
else
|
|
|
|
ifeq (,$(filter-out arm% sa110,$(OS_TEST)))
|
|
|
|
CPU_ARCH = arm
|
|
|
|
else
|
2009-07-29 04:01:39 +04:00
|
|
|
ifeq (,$(filter-out parisc%,$(OS_TEST)))
|
2008-06-06 16:40:11 +04:00
|
|
|
CPU_ARCH = hppa
|
|
|
|
else
|
2008-08-15 08:12:54 +04:00
|
|
|
ifeq (,$(filter-out i%86,$(OS_TEST)))
|
2010-02-07 14:54:28 +03:00
|
|
|
OS_REL_CFLAGS = -Di386
|
2008-06-06 16:40:11 +04:00
|
|
|
CPU_ARCH = x86
|
2008-08-15 08:12:54 +04:00
|
|
|
else
|
2009-07-29 04:01:39 +04:00
|
|
|
ifeq ($(OS_TEST),sh4a)
|
|
|
|
CPU_ARCH = sh4
|
|
|
|
else
|
|
|
|
# $(OS_TEST) == m68k, ppc, ia64, sparc, s390, s390x, mips, sh3, sh4
|
2008-08-15 08:12:54 +04:00
|
|
|
CPU_ARCH = $(OS_TEST)
|
|
|
|
endif
|
2008-06-06 16:40:11 +04:00
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
2013-01-25 20:26:46 +04:00
|
|
|
ifneq ($(OS_TARGET),Android)
|
2008-06-06 16:40:11 +04:00
|
|
|
LIBC_TAG = _glibc
|
2013-01-25 20:26:46 +04:00
|
|
|
endif
|
2008-06-06 16:40:11 +04:00
|
|
|
|
|
|
|
ifeq ($(OS_RELEASE),2.0)
|
|
|
|
OS_REL_CFLAGS += -DLINUX2_0
|
2009-07-29 04:01:39 +04:00
|
|
|
MKSHLIB = $(CC) -shared -Wl,-soname -Wl,$(@:$(OBJDIR)/%.so=%.so) $(RPATH)
|
2008-06-06 16:40:11 +04:00
|
|
|
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
|
2009-08-19 17:59:06 +04:00
|
|
|
ifdef MOZ_DEBUG_SYMBOLS
|
2010-08-03 00:49:18 +04:00
|
|
|
ifdef MOZ_DEBUG_FLAGS
|
|
|
|
OPTIMIZER += $(MOZ_DEBUG_FLAGS)
|
|
|
|
else
|
|
|
|
OPTIMIZER += -gdwarf-2
|
|
|
|
endif
|
2008-06-06 16:40:11 +04:00
|
|
|
endif
|
2009-08-19 17:59:06 +04:00
|
|
|
endif
|
|
|
|
|
2015-10-23 21:39:23 +03:00
|
|
|
ifndef COMPILER_TAG
|
2015-11-13 20:03:01 +03:00
|
|
|
COMPILER_TAG := _$(CC_NAME)
|
2015-10-23 21:39:23 +03:00
|
|
|
endif
|
2008-06-06 16:40:11 +04:00
|
|
|
|
|
|
|
ifeq ($(USE_PTHREADS),1)
|
|
|
|
OS_PTHREAD = -lpthread
|
|
|
|
endif
|
|
|
|
|
2016-02-08 18:16:25 +03:00
|
|
|
OS_CFLAGS = $(DSO_CFLAGS) $(OS_REL_CFLAGS) $(ARCHFLAG) -pipe -ffunction-sections -fdata-sections -DLINUX -Dlinux -DHAVE_STRERROR
|
2008-06-06 16:40:11 +04:00
|
|
|
OS_LIBS = $(OS_PTHREAD) -ldl -lc
|
|
|
|
|
|
|
|
ifdef USE_PTHREADS
|
|
|
|
DEFINES += -D_REENTRANT
|
|
|
|
endif
|
|
|
|
|
|
|
|
ARCH = linux
|
|
|
|
|
|
|
|
DSO_CFLAGS = -fPIC
|
2014-05-22 23:31:09 +04:00
|
|
|
DSO_LDOPTS = -shared $(ARCHFLAG) -Wl,--gc-sections
|
2009-08-19 17:59:06 +04:00
|
|
|
# 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.
|
2016-04-12 15:40:44 +03:00
|
|
|
# Also, -z defs conflicts with Address Sanitizer, which emits relocations
|
|
|
|
# against the libsanitizer runtime built into the main executable.
|
2009-08-19 17:59:06 +04:00
|
|
|
ZDEFS_FLAG = -Wl,-z,defs
|
2016-04-12 15:40:44 +03:00
|
|
|
ifneq ($(USE_ASAN),1)
|
2009-08-19 17:59:06 +04:00
|
|
|
DSO_LDOPTS += $(if $(findstring 2.11.90.0.8,$(shell ld -v)),,$(ZDEFS_FLAG))
|
2016-04-12 15:40:44 +03:00
|
|
|
endif
|
2008-06-06 16:40:11 +04:00
|
|
|
LDFLAGS += $(ARCHFLAG)
|
|
|
|
|
2010-08-13 01:12:05 +04:00
|
|
|
# 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
|
|
|
|
|
2008-06-06 16:40:11 +04:00
|
|
|
# INCLUDES += -I/usr/include -Y/usr/include/linux
|
|
|
|
G++INCLUDES = -I/usr/include/g++
|
|
|
|
|
|
|
|
#
|
2012-12-06 03:19:18 +04:00
|
|
|
# Always set CPU_TAG on Linux.
|
2008-06-06 16:40:11 +04:00
|
|
|
#
|
|
|
|
CPU_TAG = _$(CPU_ARCH)
|
2008-10-23 04:38:29 +04:00
|
|
|
|
2010-07-19 09:45:52 +04:00
|
|
|
#
|
|
|
|
# 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.
|
|
|
|
#
|
2013-01-25 20:26:46 +04:00
|
|
|
ifneq ($(OS_TARGET),Android)
|
2010-07-19 09:45:52 +04:00
|
|
|
ifeq (2.6,$(firstword $(sort 2.6 $(OS_RELEASE))))
|
|
|
|
ifndef FREEBL_NO_DEPEND
|
|
|
|
FREEBL_NO_DEPEND = 1
|
2012-01-19 11:19:44 +04:00
|
|
|
FREEBL_LOWHASH = 1
|
2010-07-19 09:45:52 +04:00
|
|
|
endif
|
|
|
|
endif
|
2013-01-25 20:26:46 +04:00
|
|
|
endif
|
2010-07-19 09:45:52 +04:00
|
|
|
|
2008-10-23 04:38:29 +04:00
|
|
|
USE_SYSTEM_ZLIB = 1
|
|
|
|
ZLIB_LIBS = -lz
|
2009-07-29 04:01:39 +04:00
|
|
|
|
|
|
|
# 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
|
|
|
|
|
Bug 673382: Update NSS to NSS_3_12_11_BETA1, which includes the fixes for
Bug 661609, Bug 650276 (code not used by Mozilla), Bug 602509, Bug 655411,
Bug 655850, Bug 671711, Bug 617565, Bug 668001, Bug 346583, Bug 661061.
2011-07-27 20:07:32 +04:00
|
|
|
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)
|
2011-08-19 19:27:10 +04:00
|
|
|
DEFINES += -DNO_FORK_CHECK
|
Bug 673382: Update NSS to NSS_3_12_11_BETA1, which includes the fixes for
Bug 661609, Bug 650276 (code not used by Mozilla), Bug 602509, Bug 655411,
Bug 655850, Bug 671711, Bug 617565, Bug 668001, Bug 346583, Bug 661061.
2011-07-27 20:07:32 +04:00
|
|
|
endif
|
2016-04-12 15:40:44 +03:00
|
|
|
|
2016-09-26 03:47:58 +03:00
|
|
|
ifdef USE_GCOV
|
|
|
|
OS_CFLAGS += --coverage
|
|
|
|
LDFLAGS += --coverage
|
|
|
|
DSO_LDOPTS += --coverage
|
|
|
|
endif
|
|
|
|
|
2016-04-12 15:40:44 +03:00
|
|
|
include $(CORE_DEPTH)/coreconf/sanitizers.mk
|