/
Makefile
163 lines (132 loc) · 4.92 KB
1
2
#! gmake
#
3
4
5
# 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/.
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#######################################################################
# (1) Include initial platform-independent assignments (MANDATORY). #
#######################################################################
include manifest.mn
#######################################################################
# (2) Include "global" configuration information. (OPTIONAL) #
#######################################################################
include $(CORE_DEPTH)/coreconf/config.mk
#######################################################################
# (3) Include "component" configuration information. (OPTIONAL) #
#######################################################################
#######################################################################
# (4) Include "local" platform-dependent assignments (OPTIONAL). #
#######################################################################
29
ifdef NSS_DISABLE_GTESTS
30
DIRS := $(filter-out gtests,$(DIRS))
31
DIRS := $(filter-out cpputil,$(DIRS))
32
endif
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#######################################################################
# (5) Execute "global" rules. (OPTIONAL) #
#######################################################################
include $(CORE_DEPTH)/coreconf/rules.mk
#######################################################################
# (6) Execute "component" rules. (OPTIONAL) #
#######################################################################
#######################################################################
# (7) Execute "local" rules. (OPTIONAL). #
#######################################################################
50
nss_build_all:
51
52
53
54
$(MAKE) build_nspr
$(MAKE) all
$(MAKE) latest
55
nss_clean_all:
56
57
$(MAKE) clobber_nspr
$(MAKE) clobber
58
59
60
NSPR_CONFIG_STATUS = $(CORE_DEPTH)/../nspr/$(OBJDIR_NAME)/config.status
NSPR_CONFIGURE = $(CORE_DEPTH)/../nspr/configure
61
62
63
64
65
#
# Translate coreconf build options to NSPR configure options.
#
66
ifeq ($(OS_TARGET),Android)
67
68
69
70
71
NSPR_CONFIGURE_OPTS += --with-android-ndk=$(ANDROID_NDK) \
--target=$(ANDROID_PREFIX) \
--with-android-version=$(OS_TARGET_RELEASE) \
--with-android-toolchain=$(ANDROID_TOOLCHAIN) \
--with-android-platform=$(ANDROID_SYSROOT)
72
endif
73
74
75
ifdef BUILD_OPT
NSPR_CONFIGURE_OPTS += --disable-debug --enable-optimize
endif
76
77
78
ifdef USE_X32
NSPR_CONFIGURE_OPTS += --enable-x32
endif
79
80
81
82
83
84
85
86
87
ifdef USE_64
NSPR_CONFIGURE_OPTS += --enable-64bit
endif
ifeq ($(OS_TARGET),WIN95)
NSPR_CONFIGURE_OPTS += --enable-win32-target=WIN95
endif
ifdef USE_DEBUG_RTL
NSPR_CONFIGURE_OPTS += --enable-debug-rtl
endif
88
89
90
ifdef USE_STATIC_RTL
NSPR_CONFIGURE_OPTS += --enable-static-rtl
endif
91
ifdef NS_USE_GCC
92
93
NSPR_CONFIGURE_ENV = CC=gcc CXX=g++
endif
94
95
# Make sure to remove -arch arguments. NSPR can't handle that.
remove_arch = $(filter-out __REMOVEME%,$(subst $(NULL) -arch , __REMOVEME,$(1)))
96
ifdef CC
97
NSPR_CONFIGURE_ENV = CC="$(call remove_arch,$(CC))"
98
99
endif
ifdef CCC
100
NSPR_CONFIGURE_ENV += CXX="$(call remove_arch,$(CCC))"
101
endif
102
103
104
105
106
107
108
109
#
# Some pwd commands on Windows (for example, the pwd
# command in Cygwin) return a pathname that begins
# with a (forward) slash. When such a pathname is
# passed to Windows build tools (for example, cl), it
# is mistaken as a command-line option. If that is the case,
# we use a relative pathname as NSPR's prefix on Windows.
110
#
111
112
USEABSPATH="YES"
113
ifeq (,$(filter-out WIN%,$(OS_TARGET)))
114
115
ifeq (,$(findstring :,$(shell pwd)))
USEABSPATH="NO"
116
endif
117
118
endif
ifeq ($(USEABSPATH),"YES")
119
NSPR_PREFIX = $(shell pwd)/../dist/$(OBJDIR_NAME)
120
else
121
NSPR_PREFIX = $$(topsrcdir)/../dist/$(OBJDIR_NAME)
122
endif
123
124
ifndef NSS_GYP_PREFIX
125
$(NSPR_CONFIG_STATUS): $(NSPR_CONFIGURE)
126
mkdir -p $(CORE_DEPTH)/../nspr/$(OBJDIR_NAME)
127
cd $(CORE_DEPTH)/../nspr/$(OBJDIR_NAME) ; \
128
$(NSPR_CONFIGURE_ENV) sh ../configure \
129
130
131
$(NSPR_CONFIGURE_OPTS) \
--with-dist-prefix='$(NSPR_PREFIX)' \
--with-dist-includedir='$(NSPR_PREFIX)/include'
132
133
134
135
136
137
else
$(NSPR_CONFIG_STATUS): $(NSPR_CONFIGURE)
mkdir -p $(CORE_DEPTH)/../nspr/$(OBJDIR_NAME)
cd $(CORE_DEPTH)/../nspr/$(OBJDIR_NAME) ; \
$(NSPR_CONFIGURE_ENV) sh ../configure \
$(NSPR_CONFIGURE_OPTS) \
138
--prefix='$(NSS_GYP_PREFIX)'
139
endif
140
141
build_nspr: $(NSPR_CONFIG_STATUS)
142
$(MAKE) -C $(CORE_DEPTH)/../nspr/$(OBJDIR_NAME)
143
$(MAKE) -C $(CORE_DEPTH)/../nspr/$(OBJDIR_NAME)/pr/tests
144
145
146
147
install_nspr: build_nspr
$(MAKE) -C $(CORE_DEPTH)/../nspr/$(OBJDIR_NAME) install
148
clobber_nspr: $(NSPR_CONFIG_STATUS)
149
$(MAKE) -C $(CORE_DEPTH)/../nspr/$(OBJDIR_NAME) clobber
150
151
build_docs:
152
$(MAKE) -C $(CORE_DEPTH)/doc
153
154
clean_docs:
155
$(MAKE) -C $(CORE_DEPTH)/doc clean
156
157
nss_RelEng_bld: import all
158
159
160
package:
$(MAKE) -C pkg publish
161
162
163
latest:
echo $(OBJDIR_NAME) > $(CORE_DEPTH)/../dist/latest