1 # vim:set ts=8 sw=8 sts=8 noet:
3 # ***** BEGIN LICENSE BLOCK *****
4 # Version: MPL 1.1/GPL 2.0/LGPL 2.1
6 # The contents of this file are subject to the Mozilla Public License Version
7 # 1.1 (the "License"); you may not use this file except in compliance with
8 # the License. You may obtain a copy of the License at
9 # http://www.mozilla.org/MPL/
11 # Software distributed under the License is distributed on an "AS IS" basis,
12 # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13 # for the specific language governing rights and limitations under the
16 # The Original Code is mozilla.org code.
18 # The Initial Developer of the Original Code is
19 # Netscape Communications Corporation.
20 # Portions created by the Initial Developer are Copyright (C) 1998
21 # the Initial Developer. All Rights Reserved.
24 # Chase Phillips <chase@mozilla.org>
25 # Benjamin Smedberg <benjamin@smedbergs.us>
26 # Jeff Walden <jwalden+code@mit.edu>
28 # Alternatively, the contents of this file may be used under the terms of
29 # either of the GNU General Public License Version 2 or later (the "GPL"),
30 # or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
31 # in which case the provisions of the GPL or the LGPL are applicable instead
32 # of those above. If you wish to allow use of your version of this file only
33 # under the terms of either the GPL or the LGPL, and not to allow others to
34 # use your version of this file under the terms of the MPL, indicate your
35 # decision by deleting the provisions above and replace them with the notice
36 # and other provisions required by the GPL or the LGPL. If you do not delete
37 # the provisions above, a recipient may use your version of this file under
38 # the terms of any one of the MPL, the GPL or the LGPL.
40 # ***** END LICENSE BLOCK *****
43 $(error topsrcdir was not set
))
47 MOZILLA_DIR
= $(topsrcdir
)
50 ifndef INCLUDED_CONFIG_MK
51 include $(topsrcdir
)/config
/config.mk
54 ifndef INCLUDED_VERSION_MK
55 include $(topsrcdir
)/config
/version.mk
59 XPIDLSRCS
+= $(SDK_XPIDLSRCS
)
62 EXPORTS
+= $(SDK_HEADERS
)
65 REPORT_BUILD
= @echo
$(notdir $<)
73 # Don't copy xulrunner files at install time, when using system xulrunner
78 # ELOG prints out failed command when building silently (gmake -s).
79 ifneq (,$(findstring -s
,$(MAKEFLAGS
)))
80 ELOG
:= $(EXEC
) sh
$(BUILD_TOOLS
)/print-failed-commands.sh
85 ifeq (,$(filter-out WINNT WINCE
,$(OS_ARCH
)))
87 _LIBNAME_RELATIVE_PATHS
=1
91 ifeq (,$(filter-out WINNT WINCE
,$(OS_ARCH
)))
92 _VPATH_SRCS
= $(if
$(filter /%,$<),$<,$(CURDIR
)/$<)
97 # Add $(DIST)/lib to VPATH so that -lfoo dependencies are followed
100 VPATH
+= $(LIBXUL_SDK
)/lib
103 # EXPAND_LIBNAME - $(call EXPAND_LIBNAME,foo)
104 # expands to foo.lib on platforms with import libs and -lfoo otherwise
106 # EXPAND_LIBNAME_PATH - $(call EXPAND_LIBNAME_PATH,foo,dir)
107 # expands to dir/foo.lib on platforms with import libs and
108 # -Ldir -lfoo otherwise
110 # EXPAND_MOZLIBNAME - $(call EXPAND_MOZLIBNAME,foo)
111 # expands to $(DIST)/lib/foo.lib on platforms with import libs and
114 ifdef _LIBNAME_RELATIVE_PATHS
115 EXPAND_LIBNAME
= $(foreach lib
,$(1),$(LIB_PREFIX
)$(lib
).
$(LIB_SUFFIX
))
116 EXPAND_LIBNAME_PATH
= $(foreach lib
,$(1),$(2)/$(LIB_PREFIX
)$(lib
).
$(LIB_SUFFIX
))
117 EXPAND_MOZLIBNAME
= $(foreach lib
,$(1),$(DIST
)/lib
/$(LIB_PREFIX
)$(lib
).
$(LIB_SUFFIX
))
119 EXPAND_LIBNAME
= $(addprefix -l
,$(1))
120 EXPAND_LIBNAME_PATH
= -L
$(2) $(addprefix -l
,$(1))
121 EXPAND_MOZLIBNAME
= $(addprefix -l
,$(1))
125 EXTRA_DSO_LIBS
:= $(call EXPAND_MOZLIBNAME
,$(EXTRA_DSO_LIBS
))
128 ################################################################################
129 # Testing frameworks support
130 ################################################################################
136 $(error Must
define MODULE when defining XPCSHELL_TESTS.
)
139 testxpcobjdir
= $(DEPTH
)/_tests
/xpcshell
141 # Test file installation
142 ifneq (,$(filter WINNT os2-emx
,$(HOST_OS_ARCH
)))
143 # Windows and OS/2 nsinstall can't recursively copy directories, so use nsinstall.py
144 TEST_INSTALLER
= $(PYTHON
) $(topsrcdir
)/config
/nsinstall.py
146 TEST_INSTALLER
= $(INSTALL
)
149 define _INSTALL_TESTS
150 $(TEST_INSTALLER
) $(wildcard $(srcdir)/$(dir)/*) $(testxpcobjdir
)/$(MODULE
)/$(dir)
152 endef # do not remove the blank line!
154 SOLO_FILE ?
= $(error Specify a
test filename in SOLO_FILE when using check-interactive or check-one
)
157 $(foreach dir,$(XPCSHELL_TESTS
),$(_INSTALL_TESTS
))
158 $(PERL
) -I
$(MOZILLA_DIR
)/config
$(MOZILLA_DIR
)/config
/build-list.pl \
159 $(testxpcobjdir
)/all-test-dirs.list \
160 $(addprefix $(MODULE
)/,$(XPCSHELL_TESTS
))
162 testxpcsrcdir
= $(topsrcdir
)/testing
/xpcshell
164 # Execute all tests in the $(XPCSHELL_TESTS) directories.
165 # See also testsuite-targets.mk 'xpcshell-tests' target for global execution.
167 $(PYTHON
) -u
$(topsrcdir
)/config
/pythonpath.py \
168 -I
$(topsrcdir
)/build \
169 $(testxpcsrcdir
)/runxpcshelltests.py \
170 --symbols-path
=$(DIST
)/crashreporter-symbols \
171 $(DIST
)/bin
/xpcshell \
172 $(foreach dir,$(XPCSHELL_TESTS
),$(testxpcobjdir
)/$(MODULE
)/$(dir))
174 # Execute a single test, specified in $(SOLO_FILE), but don't automatically
175 # start the test. Instead, present the xpcshell prompt so the user can
176 # attach a debugger and then start the test.
178 $(PYTHON
) -u
$(topsrcdir
)/config
/pythonpath.py \
179 -I
$(topsrcdir
)/build \
180 $(testxpcsrcdir
)/runxpcshelltests.py \
181 --symbols-path
=$(DIST
)/crashreporter-symbols \
182 --test-path
=$(SOLO_FILE
) \
184 $(DIST
)/bin
/xpcshell \
185 $(foreach dir,$(XPCSHELL_TESTS
),$(testxpcobjdir
)/$(MODULE
)/$(dir))
187 # Execute a single test, specified in $(SOLO_FILE)
189 $(PYTHON
) -u
$(topsrcdir
)/config
/pythonpath.py \
190 -I
$(topsrcdir
)/build \
191 $(testxpcsrcdir
)/runxpcshelltests.py \
192 --symbols-path
=$(DIST
)/crashreporter-symbols \
193 --test-path
=$(SOLO_FILE
) \
194 $(DIST
)/bin
/xpcshell \
195 $(foreach dir,$(XPCSHELL_TESTS
),$(testxpcobjdir
)/$(MODULE
)/$(dir))
197 endif # XPCSHELL_TESTS
201 # Compile the tests to $(DIST)/bin. Make lots of niceties available by default
202 # through TestHarness.h, by modifying the list of includes and the libs against
204 CPPSRCS
+= $(CPP_UNIT_TESTS
)
205 SIMPLE_PROGRAMS
+= $(CPP_UNIT_TESTS
:.
cpp=$(BIN_SUFFIX
))
206 INCLUDES
+= -I
$(DIST
)/include/testing
207 LIBS
+= $(XPCOM_GLUE_LDOPTS
) $(NSPR_LIBS
)
209 # ...and run them the usual way
212 for f in
$(subst .
cpp,,$(CPP_UNIT_TESTS
)); do \
213 XPCOM_DEBUG_BREAK
=stack-and-abort
$(RUN_TEST_PROGRAM
) $(DIST
)/bin
/$$f; \
216 endif # CPP_UNIT_TESTS
218 .PHONY
: check xpcshell-tests check-interactive check-one
226 # If BUILD_STATIC_LIBS or FORCE_STATIC_LIB is set, build a static library.
227 # Otherwise, build a shared library.
231 ifdef STATIC_LIBRARY_NAME
232 ifneq (,$(filter OS2 WINNT WINCE
,$(OS_ARCH
)))
234 STATIC_LIBRARY_NAME
:= $(SHORT_LIBNAME
)
235 SHARED_LIBRARY_NAME
:= $(SHORT_LIBNAME
)
238 LIBRARY
:= $(LIB_PREFIX
)$(STATIC_LIBRARY_NAME
).
$(LIB_SUFFIX
)
239 endif # STATIC_LIBRARY_NAME
243 ifdef HOST_LIBRARY_NAME
244 HOST_LIBRARY
:= $(LIB_PREFIX
)$(HOST_LIBRARY_NAME
).
$(LIB_SUFFIX
)
249 ifneq (_1
,$(FORCE_SHARED_LIB
)_
$(BUILD_STATIC_LIBS
))
253 MKSHLIB
= $(MKCSHLIB
)
257 SHARED_LIBRARY
:= $(SHARED_LIBRARY_NAME
)
259 SHARED_LIBRARY
:= $(DLL_PREFIX
)$(SHARED_LIBRARY_NAME
)$(DLL_SUFFIX
)
262 ifeq ($(OS_ARCH
),OS2
)
263 DEF_FILE
:= $(SHARED_LIBRARY
:.dll
=.def
)
266 ifneq (,$(filter OS2 WINNT WINCE
,$(OS_ARCH
)))
267 IMPORT_LIBRARY
:= $(LIB_PREFIX
)$(SHARED_LIBRARY_NAME
).
$(IMPORT_LIB_SUFFIX
)
270 ifdef MOZ_ENABLE_LIBXUL
275 endif # FORCE_SHARED_LIB && !BUILD_STATIC_LIBS
278 ifeq (,$(BUILD_STATIC_LIBS
)$(FORCE_STATIC_LIB
))
282 ifeq (_1
,$(FORCE_SHARED_LIB
)_
$(BUILD_STATIC_LIBS
))
283 SHARED_LIBRARY
:= $(NULL
)
285 IMPORT_LIBRARY
:= $(NULL
)
288 ifdef FORCE_STATIC_LIB
289 ifndef FORCE_SHARED_LIB
290 SHARED_LIBRARY
:= $(NULL
)
292 IMPORT_LIBRARY
:= $(NULL
)
296 ifdef FORCE_SHARED_LIB
297 ifndef FORCE_STATIC_LIB
302 ifdef JAVA_LIBRARY_NAME
303 JAVA_LIBRARY
:= $(JAVA_LIBRARY_NAME
).jar
306 ifeq (,$(filter-out WINNT WINCE
,$(OS_ARCH
)))
310 # Unless we're building SIMPLE_PROGRAMS, all C++ files share a PDB file per
311 # directory. For parallel builds, this PDB file is shared and locked by
312 # MSPDBSRV.EXE, starting with MSVC8 SP1. If you're using MSVC 7.1 or MSVC8
313 # without SP1, don't do parallel builds.
315 # The final PDB for libraries and programs is created by the linker and uses
316 # a different name from the single PDB file created by the compiler. See
320 ifdef SIMPLE_PROGRAMS
321 COMPILE_PDBFILE
= $(basename $(@F
)).pdb
323 COMPILE_PDBFILE
= generated.pdb
326 LINK_PDBFILE
= $(basename $(@F
)).pdb
328 CODFILE
=$(basename $(@F
)).cod
332 ifdef SHARED_LIBRARY_NAME
333 MAPFILE
=$(SHARED_LIBRARY_NAME
).map
335 MAPFILE
=$(basename $(@F
)).map
336 endif # SHARED_LIBRARY_NAME
340 OS_LDFLAGS
+= -DEF
:$(call normalizepath
,$(DEFFILE
))
341 EXTRA_DEPS
+= $(DEFFILE
)
345 OS_LDFLAGS
+= -MAP
:$(MAPFILE
)
350 ifdef ENABLE_CXX_EXCEPTIONS
352 CXXFLAGS
+= -fexceptions
354 ifeq (,$(filter-out 1200 1300 1310,$(_MSC_VER
)))
360 endif # ENABLE_CXX_EXCEPTIONS
363 ifeq (,$(filter-out WINNT WINCE
,$(HOST_OS_ARCH
)))
364 HOST_PDBFILE
=$(basename $(@F
)).pdb
368 TARGETS
= $(LIBRARY
) $(SHARED_LIBRARY
) $(PROGRAM
) $(SIMPLE_PROGRAMS
) $(HOST_LIBRARY
) $(HOST_PROGRAM
) $(HOST_SIMPLE_PROGRAMS
) $(JAVA_LIBRARY
)
374 $(addsuffix .
$(OBJ_SUFFIX
), $(JMC_GEN
)) \
375 $(CSRCS
:.c
=.
$(OBJ_SUFFIX
)) \
376 $(patsubst %.
cc,%.
$(OBJ_SUFFIX
),$(CPPSRCS
:.
cpp=.
$(OBJ_SUFFIX
))) \
377 $(CMSRCS
:.m
=.
$(OBJ_SUFFIX
)) \
378 $(CMMSRCS
:.mm
=.
$(OBJ_SUFFIX
)) \
379 $(ASFILES
:.
$(ASM_SUFFIX
)=.
$(OBJ_SUFFIX
))
380 OBJS
= $(strip $(_OBJS
))
385 $(addprefix host_
,$(HOST_CSRCS
:.c
=.
$(OBJ_SUFFIX
))) \
386 $(addprefix host_
,$(patsubst %.
cc,%.
$(OBJ_SUFFIX
),$(HOST_CPPSRCS
:.
cpp=.
$(OBJ_SUFFIX
)))) \
387 $(addprefix host_
,$(HOST_CMSRCS
:.m
=.
$(OBJ_SUFFIX
))) \
388 $(addprefix host_
,$(HOST_CMMSRCS
:.mm
=.
$(OBJ_SUFFIX
)))
389 HOST_OBJS
= $(strip $(_HOST_OBJS
))
392 LIBOBJS
:= $(addprefix \", $(OBJS
))
393 LIBOBJS
:= $(addsuffix \", $(LIBOBJS
))
396 ifneq (,$(OBJS
)$(XPIDLSRCS
)$(SIMPLE_PROGRAMS
))
397 MDDEPFILES
= $(addprefix $(MDDEPDIR
)/,$(OBJS
:.
$(OBJ_SUFFIX
)=.pp
))
399 MDDEPFILES
+= $(addprefix $(MDDEPDIR
)/,$(XPIDLSRCS
:.idl
=.xpt
))
405 $(GARBAGE
) $(TARGETS
) $(OBJS
) $(PROGOBJS
) LOGS TAGS a.out \
406 $(filter-out $(ASFILES
),$(OBJS
:.
$(OBJ_SUFFIX
)=.s
)) $(OBJS
:.
$(OBJ_SUFFIX
)=.ii
) \
407 $(OBJS
:.
$(OBJ_SUFFIX
)=.i
) \
408 $(HOST_PROGOBJS
) $(HOST_OBJS
) $(IMPORT_LIBRARY
) $(DEF_FILE
)\
409 $(EXE_DEF_FILE
) so_locations _gen _stubs
$(wildcard *.res
) $(wildcard *.RES
) \
410 $(wildcard *.pdb
) $(CODFILE
) $(MAPFILE
) $(IMPORT_LIBRARY
) \
411 $(SHARED_LIBRARY
:$(DLL_SUFFIX
)=.exp
) $(wildcard *.ilk
) \
412 $(PROGRAM
:$(BIN_SUFFIX
)=.exp
) $(SIMPLE_PROGRAMS
:$(BIN_SUFFIX
)=.exp
) \
413 $(PROGRAM
:$(BIN_SUFFIX
)=.lib
) $(SIMPLE_PROGRAMS
:$(BIN_SUFFIX
)=.lib
) \
414 $(SIMPLE_PROGRAMS
:$(BIN_SUFFIX
)=.
$(OBJ_SUFFIX
)) \
415 $(wildcard gts_tmp_
*) $(LIBRARY
:%.a
=.
%.timestamp
)
417 $(GARBAGE_DIRS
) /no-such-file
420 GARBAGE
+= $(MOCSRCS
)
423 ifdef SIMPLE_PROGRAMS
424 GARBAGE
+= $(SIMPLE_PROGRAMS
:%=%.
$(OBJ_SUFFIX
))
427 ifdef HOST_SIMPLE_PROGRAMS
428 GARBAGE
+= $(HOST_SIMPLE_PROGRAMS
:%=%.
$(OBJ_SUFFIX
))
432 # the Solaris WorkShop template repository cache. it occasionally can get
433 # out of sync, so targets like clobber should kill it.
435 ifeq ($(SOLARIS_SUNPRO_CXX
),1)
436 GARBAGE_DIRS
+= SunWS_cache
439 ifeq ($(OS_ARCH
),OpenVMS
)
440 GARBAGE
+= $(wildcard *.
*_defines
)
442 VMS_SYMVEC_FILE
= $(SHARED_LIBRARY
:$(DLL_SUFFIX
)=_symvec.opt
)
444 VMS_SYMVEC_FILE_MODULE
= $(topsrcdir
)/build
/unix
/vms
/$(notdir $(SHARED_LIBRARY
:$(DLL_SUFFIX
)=_dbg_symvec.opt
))
446 VMS_SYMVEC_FILE_MODULE
= $(topsrcdir
)/build
/unix
/vms
/$(notdir $(SHARED_LIBRARY
:$(DLL_SUFFIX
)=_symvec.opt
))
448 VMS_SYMVEC_FILE_COMP
= $(topsrcdir
)/build
/unix
/vms
/component_symvec.opt
449 GARBAGE
+= $(VMS_SYMVEC_FILE
)
451 DSO_LDOPTS
:= $(filter-out -auto_symvec
,$(DSO_LDOPTS
)) $(VMS_SYMVEC_FILE
)
456 XPIDL_GEN_DIR
= _xpidlgen
458 ifdef MOZ_UPDATE_XTERM
459 # Its good not to have a newline at the end of the titlebar string because it
460 # makes the make -s output easier to read. Echo -n does not work on all
461 # platforms, but we can trick sed into doing it.
462 UPDATE_TITLE
= sed
-e
"s!Y!$(1) in $(shell $(BUILD_TOOLS)/print-depth-path.sh)/$(2)!" $(MOZILLA_DIR
)/config
/xterm.str
;
465 define SUBMAKE
# $(call SUBMAKE,target,directory)
467 +@
$(MAKE
) $(if
$(2),-C
$(2)) $(1)
469 endef # The extra line is important here! don't delete it
471 ifneq (,$(strip $(DIRS
)))
473 $(foreach dir,$(DIRS
),$(call SUBMAKE
,$@
,$(dir)))
476 # we only use this for the makefiles target and other stuff that doesn't matter
477 ifneq (,$(strip $(PARALLEL_DIRS
)))
478 LOOP_OVER_PARALLEL_DIRS
= \
479 $(foreach dir,$(PARALLEL_DIRS
),$(call SUBMAKE
,$@
,$(dir)))
482 ifneq (,$(strip $(STATIC_DIRS
)))
483 LOOP_OVER_STATIC_DIRS
= \
484 $(foreach dir,$(STATIC_DIRS
),$(call SUBMAKE
,$@
,$(dir)))
487 ifneq (,$(strip $(TOOL_DIRS
)))
488 LOOP_OVER_TOOL_DIRS
= \
489 $(foreach dir,$(TOOL_DIRS
),$(call SUBMAKE
,$@
,$(dir)))
493 # create a bunch of fake targets for order-only processing
494 PARALLEL_DIRS_export
= $(addsuffix _export
,$(PARALLEL_DIRS
))
495 PARALLEL_DIRS_libs
= $(addsuffix _libs
,$(PARALLEL_DIRS
))
496 PARALLEL_DIRS_tools
= $(addsuffix _tools
,$(PARALLEL_DIRS
))
498 .PHONY
: $(PARALLEL_DIRS_export
) $(PARALLEL_DIRS_libs
) $(PARALLEL_DIRS_tools
)
502 # Now we can differentiate between objects used to build a library, and
503 # objects used to build an executable in the same directory.
510 HOST_PROGOBJS
= $(HOST_OBJS
)
513 # MAKE_DIRS: List of directories to build while looping over directories.
514 # A Makefile that needs $(MDDEPDIR) created but doesn't set any of these
515 # variables we know to check can just set NEED_MDDEPDIR explicitly.
516 ifneq (,$(OBJS
)$(XPIDLSRCS
)$(SIMPLE_PROGRAMS
)$(NEED_MDDEPDIR
))
517 MAKE_DIRS
+= $(CURDIR
)/$(MDDEPDIR
)
518 GARBAGE_DIRS
+= $(MDDEPDIR
)
522 # Tags: emacs (etags), vi (ctags)
523 # TAG_PROGRAM := ctags -L -
525 TAG_PROGRAM
= xargs etags
-a
528 # Turn on C++ linking if we have any .cpp or .mm files
529 # (moved this from config.mk so that config.mk can be included
530 # before the CPPSRCS are defined)
532 ifneq ($(CPPSRCS
)$(CMMSRCS
),)
537 # Make sure to wrap static libs inside linker specific flags to turn on & off
538 # inclusion of all symbols inside the static libs
540 ifndef NO_LD_ARCHIVE_FLAGS
541 ifdef SHARED_LIBRARY_LIBS
542 EXTRA_DSO_LDOPTS
:= $(MKSHLIB_FORCE_ALL
) $(SHARED_LIBRARY_LIBS
) $(MKSHLIB_UNFORCE_ALL
) $(EXTRA_DSO_LDOPTS
)
547 # This will strip out symbols that the component should not be
548 # exporting from the .dynsym section.
551 EXTRA_DSO_LDOPTS
+= $(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS
)
555 # Enforce the requirement that MODULE_NAME must be set
556 # for components in static builds
560 ifndef FORCE_SHARED_LIB
562 $(error MODULE_NAME is required for components which may be used in static builds
)
569 # MacOS X specific stuff
572 ifeq ($(OS_ARCH
),Darwin
)
575 EXTRA_DSO_LDOPTS
+= -bundle
577 EXTRA_DSO_LDOPTS
+= -dynamiclib
-install_name @executable_path
/$(SHARED_LIBRARY
) -compatibility_version
1 -current_version
1 -single_module
583 # On NetBSD a.out systems, use -Bsymbolic. This fixes what would otherwise be
584 # fatal symbol name clashes between components.
586 ifeq ($(OS_ARCH
),NetBSD
)
587 ifeq ($(DLL_SUFFIX
),.so
.1.0)
589 EXTRA_DSO_LDOPTS
+= -Wl
,-Bsymbolic
594 ifeq ($(OS_ARCH
),FreeBSD
)
596 EXTRA_DSO_LDOPTS
+= -Wl
,-Bsymbolic
600 ifeq ($(OS_ARCH
),NetBSD
)
601 ifneq (,$(filter arc cobalt hpcmips mipsco newsmips pmax sgimips
,$(OS_TEST
)))
602 ifeq ($(MODULE
),layout
)
603 OS_CFLAGS
+= -Wa
,-xgot
604 OS_CXXFLAGS
+= -Wa
,-xgot
609 ifeq ($(OS_ARCH
),Linux
)
610 ifneq (,$(filter mips mipsel
,$(OS_TEST
)))
611 ifeq ($(MODULE
),layout
)
612 OS_CFLAGS
+= -Wa
,-xgot
613 OS_CXXFLAGS
+= -Wa
,-xgot
619 # HP-UXBeOS specific section: for COMPONENTS only, add -Bsymbolic flag
620 # which uses internal symbols first
622 ifeq ($(OS_ARCH
),HP-UX
)
624 ifeq ($(GNU_CC
)$(GNU_CXX
),)
625 EXTRA_DSO_LDOPTS
+= -Wl
,-Bsymbolic
626 ifneq ($(HAS_EXTRAEXPORTS
),1)
627 MKSHLIB
+= -Wl
,+eNSGetModule
-Wl
,+eerrno
628 MKCSHLIB
+= +eNSGetModule
+eerrno
629 ifneq ($(OS_TEST
),ia64
)
630 MKSHLIB
+= -Wl
,+e_shlInit
631 MKCSHLIB
+= +e_shlInit
633 endif # !HAS_EXTRAEXPORTS
634 endif # non-gnu compilers
638 ifeq ($(OS_ARCH
),AIX
)
640 ifneq ($(HAS_EXTRAEXPORTS
),1)
641 MKSHLIB
+= -bE
:$(MOZILLA_DIR
)/build
/unix
/aix.exp
-bnoexpall
642 MKCSHLIB
+= -bE
:$(MOZILLA_DIR
)/build
/unix
/aix.exp
-bnoexpall
643 endif # HAS_EXTRAEXPORTS
648 # OSF1: add -B symbolic flag for components
650 ifeq ($(OS_ARCH
),OSF1
)
652 ifeq ($(GNU_CC
)$(GNU_CXX
),)
653 EXTRA_DSO_LDOPTS
+= -B symbolic
659 # Linux: add -Bsymbolic flag for components
661 ifeq ($(OS_ARCH
),Linux
)
663 EXTRA_DSO_LDOPTS
+= -Wl
,-Bsymbolic
670 ifeq ($(OS_ARCH
),WINNT
)
673 DSO_LDOPTS
+= -Wl
,--out-implib
-Wl
,$(IMPORT_LIBRARY
)
686 ifeq (_WINNT
,$(GNU_CC
)_
$(OS_ARCH
))
690 endif # WINNT && !GNU_CC
691 ifneq (,$(filter WINCE
,$(OS_ARCH
)))
695 ifeq ($(OS_TARGET
), WINCE
)
697 HOST_OUTOPTION
= -Fo
# eol
700 ifeq (,$(CROSS_COMPILE
))
701 HOST_OUTOPTION
= $(OUTOPTION
)
703 HOST_OUTOPTION
= -o
# eol
707 ################################################################################
709 # SUBMAKEFILES: List of Makefiles for next level down.
710 # This is used to update or create the Makefiles before invoking them.
711 SUBMAKEFILES
+= $(addsuffix /Makefile
, $(DIRS
) $(TOOL_DIRS
) $(PARALLEL_DIRS
))
713 # The root makefile doesn't want to do a plain export/libs, because
714 # of the tiers and because of libxul. Suppress the default rules in favor
715 # of something else. Makefiles which use this var *must* provide a sensible
716 # default rule before including rules.mk
717 ifndef SUPPRESS_DEFAULT_RULES
720 $(foreach tier
,$(TIERS
),$(call SUBMAKE
,tier_
$(tier
)))
724 ifneq (,$(strip $(STATIC_DIRS
)))
725 $(foreach dir,$(STATIC_DIRS
),$(call SUBMAKE
,,$(dir)))
739 endif # SUPPRESS_DEFAULT_RULES
741 ifeq ($(filter s
,$(MAKEFLAGS
)),)
749 MAKE_TIER_SUBMAKEFILES
= +$(if
$(tier_
$*_dirs
),$(MAKE
) $(addsuffix /Makefile
,$(tier_
$*_dirs
)))
753 @
$(MAKE_TIER_SUBMAKEFILES
)
754 $(foreach dir,$(tier_
$*_dirs
),$(call SUBMAKE
,export,$(dir)))
758 @
$(MAKE_TIER_SUBMAKEFILES
)
759 $(foreach dir,$(tier_
$*_dirs
),$(call SUBMAKE
,libs
,$(dir)))
763 @
$(MAKE_TIER_SUBMAKEFILES
)
764 $(foreach dir,$(tier_
$*_dirs
),$(call SUBMAKE
,tools
,$(dir)))
766 $(foreach tier
,$(TIERS
),tier_
$(tier
))::
767 @
$(ECHO
) "$@: $($@_staticdirs) $($@_dirs)"
768 $(foreach dir,$($@_staticdirs
),$(call SUBMAKE
,,$(dir)))
772 # Do everything from scratch
777 # Add dummy depend target for tinderboxes
780 # Target to only regenerate makefiles
781 makefiles
: $(SUBMAKEFILES
)
782 ifneq (,$(DIRS
)$(TOOL_DIRS
)$(PARALLEL_DIRS
))
783 $(LOOP_OVER_PARALLEL_DIRS
)
785 $(LOOP_OVER_TOOL_DIRS
)
789 export:: $(PARALLEL_DIRS_export
)
791 $(PARALLEL_DIRS_export
): %_export
: %/Makefile
792 +@
$(call SUBMAKE
,export,$*)
795 export:: $(SUBMAKEFILES
) $(MAKE_DIRS
) $(if
$(XPIDLSRCS
),$(IDL_DIR
))
797 $(LOOP_OVER_TOOL_DIRS
)
800 tools
:: $(PARALLEL_DIRS_tools
)
802 $(PARALLEL_DIRS_tools
): %_tools
: %/Makefile
803 +@
$(call SUBMAKE
,tools
,$*)
806 tools
:: $(SUBMAKEFILES
) $(MAKE_DIRS
)
808 ifneq (,$(strip $(TOOL_DIRS
)))
809 $(foreach dir,$(TOOL_DIRS
),$(call SUBMAKE
,libs
,$(dir)))
813 # Rule to create list of libraries for final link
819 ifdef BUILD_STATIC_LIBS
820 @
$(PERL
) -I
$(MOZILLA_DIR
)/config
$(MOZILLA_DIR
)/config
/build-list.pl
$(FINAL_LINK_COMPS
) $(STATIC_LIBRARY_NAME
)
822 @
$(PERL
) -I
$(MOZILLA_DIR
)/config
$(MOZILLA_DIR
)/config
/build-list.pl
$(FINAL_LINK_COMP_NAMES
) $(MODULE_NAME
)
824 endif # BUILD_STATIC_LIBS
826 $(PERL
) -I
$(MOZILLA_DIR
)/config
$(MOZILLA_DIR
)/config
/build-list.pl
$(FINAL_LINK_LIBS
) $(STATIC_LIBRARY_NAME
)
828 endif # EXPORT_LIBRARY
831 # Create dependencies on static (and shared EXTRA_DSO_LIBS) libraries
832 LIBS_DEPS
= $(filter %.
$(LIB_SUFFIX
), $(LIBS
))
833 HOST_LIBS_DEPS
= $(filter %.
$(LIB_SUFFIX
), $(HOST_LIBS
))
834 DSO_LDOPTS_DEPS
= $(EXTRA_DSO_LIBS
) $(filter %.
$(LIB_SUFFIX
), $(EXTRA_DSO_LDOPTS
))
836 ifndef _LIBNAME_RELATIVE_PATHS
838 LIBS_DEPS
+= $(filter -l
%, $(LIBS
))
839 HOST_LIBS_DEPS
+= $(filter -l
%, $(HOST_LIBS
))
840 DSO_LDOPTS_DEPS
+= $(filter -l
%, $(EXTRA_DSO_LDOPTS
))
842 _LIBDIRS
= $(patsubst -L
%,%,$(filter -L
%, $(LIBS
) $(HOST_LIBS
) $(EXTRA_DSO_LDOPTS
)))
844 vpath
$(LIB_PREFIX
)%.
$(LIB_SUFFIX
) $(_LIBDIRS
)
845 ifdef IMPORT_LIB_SUFFIX
846 vpath
$(LIB_PREFIX
)%.
$(IMPORT_LIB_SUFFIX
) $(_LIBDIRS
)
847 endif # IMPORT_LIB_SUFFIX
848 vpath
$(DLL_PREFIX
)%$(DLL_SUFFIX
) $(_LIBDIRS
)
851 endif # _LIBNAME_RELATIVE_PATHS
853 # Dependancies which, if modified, should cause everything to rebuild
854 GLOBAL_DEPS
+= Makefile Makefile.in
$(DEPTH
)/config
/autoconf.mk
$(topsrcdir
)/config
/config.mk
856 ##############################################
858 libs
:: $(PARALLEL_DIRS_libs
)
860 $(PARALLEL_DIRS_libs
): %_libs
: %/Makefile
861 +@
$(call SUBMAKE
,libs
,$*)
864 libs
:: $(SUBMAKEFILES
) $(MAKE_DIRS
) $(HOST_LIBRARY
) $(LIBRARY
) $(SHARED_LIBRARY
) $(IMPORT_LIBRARY
) $(HOST_PROGRAM
) $(PROGRAM
) $(HOST_SIMPLE_PROGRAMS
) $(SIMPLE_PROGRAMS
) $(JAVA_LIBRARY
)
865 ifndef NO_DIST_INSTALL
867 ifdef EXPORT_LIBRARY
# Stage libs that will be linked into a static build
869 $(INSTALL
) $(IFLAGS1
) $(LIBRARY
) $(DEPTH
)/staticlib
/components
871 $(INSTALL
) $(IFLAGS1
) $(LIBRARY
) $(DEPTH
)/staticlib
873 endif # EXPORT_LIBRARY
876 $(error Shipping static component libs makes no sense.
)
878 $(INSTALL
) $(IFLAGS1
) $(LIBRARY
) $(DIST
)/lib
884 $(INSTALL
) $(IFLAGS2
) $(SHARED_LIBRARY
) $(FINAL_TARGET
)/components
885 $(ELF_DYNSTR_GC
) $(FINAL_TARGET
)/components
/$(SHARED_LIBRARY
)
886 ifdef BEOS_ADDON_WORKAROUND
887 ( cd
$(FINAL_TARGET
)/components
&& $(CC
) -nostart
-o
$(SHARED_LIBRARY
).stub
$(SHARED_LIBRARY
) )
889 else # ! IS_COMPONENT
890 ifneq (,$(filter OS2 WINNT WINCE
,$(OS_ARCH
)))
891 $(INSTALL
) $(IFLAGS2
) $(IMPORT_LIBRARY
) $(DIST
)/lib
893 $(INSTALL
) $(IFLAGS2
) $(SHARED_LIBRARY
) $(DIST
)/lib
895 $(INSTALL
) $(IFLAGS2
) $(SHARED_LIBRARY
) $(FINAL_TARGET
)
896 ifdef BEOS_ADDON_WORKAROUND
897 ( cd
$(FINAL_TARGET
) && $(CC
) -nostart
-o
$(SHARED_LIBRARY
).stub
$(SHARED_LIBRARY
) )
900 endif # SHARED_LIBRARY
902 $(INSTALL
) $(IFLAGS2
) $(PROGRAM
) $(FINAL_TARGET
)
904 ifdef SIMPLE_PROGRAMS
905 $(INSTALL
) $(IFLAGS2
) $(SIMPLE_PROGRAMS
) $(FINAL_TARGET
)
908 $(INSTALL
) $(IFLAGS2
) $(HOST_PROGRAM
) $(DIST
)/host
/bin
910 ifdef HOST_SIMPLE_PROGRAMS
911 $(INSTALL
) $(IFLAGS2
) $(HOST_SIMPLE_PROGRAMS
) $(DIST
)/host
/bin
914 $(INSTALL
) $(IFLAGS1
) $(HOST_LIBRARY
) $(DIST
)/host
/lib
918 $(INSTALL
) $(IFLAGS1
) $(JAVA_LIBRARY
) $(FINAL_TARGET
)/components
920 $(INSTALL
) $(IFLAGS1
) $(JAVA_LIBRARY
) $(FINAL_TARGET
)
923 endif # !NO_DIST_INSTALL
926 ##############################################
928 ifndef NO_PROFILE_GUIDED_OPTIMIZE
929 ifneq (,$(MOZ_PROFILE_GENERATE
)$(MOZ_PROFILE_USE
))
930 ifeq ($(OS_ARCH
)_
$(GNU_CC
)$(INTERNAL_TOOLS
), WINNT_
)
931 # Force re-linking when building with PGO, since
932 # the MSVC linker does all the work. We force re-link
933 # in both stages so you can do depend builds with PGO.
935 $(SHARED_LIBRARY
): FORCE
941 ifdef MOZ_PROFILE_USE
942 # In the second pass, we need to merge the pgc files into the pgd file.
943 # The compiler would do this for us automatically if they were in the right
944 # place, but they're in dist/bin.
945 ifneq (,$(SHARED_LIBRARY
)$(PROGRAM
))
948 $(PYTHON
) $(topsrcdir
)/build
/win32
/pgomerge.py \
949 $(PROGRAM
:$(BIN_SUFFIX
)=) $(DIST
)/bin
952 $(PYTHON
) $(topsrcdir
)/build
/win32
/pgomerge.py \
953 $(SHARED_LIBRARY_NAME
) $(DIST
)/bin
956 endif # MOZ_PROFILE_USE
958 endif # MOZ_PROFILE_GENERATE || MOZ_PROFILE_USE
959 endif # NO_PROFILE_GUIDED_OPTIMIZE
961 ##############################################
964 $(MAKE
) -C
$(topsrcdir
) -f client.mk checkout
966 clean clobber realclean clobber_all
:: $(SUBMAKEFILES
)
968 -rm -rf
$(ALL_TRASH_DIRS
)
969 $(foreach dir,$(PARALLEL_DIRS
) $(DIRS
) $(STATIC_DIRS
) $(TOOL_DIRS
),-$(call SUBMAKE
,$@
,$(dir)))
971 distclean:: $(SUBMAKEFILES
)
972 $(foreach dir,$(PARALLEL_DIRS
) $(DIRS
) $(STATIC_DIRS
) $(TOOL_DIRS
),-$(call SUBMAKE
,$@
,$(dir)))
973 -rm -rf
$(ALL_TRASH_DIRS
)
974 -rm -f
$(ALL_TRASH
) \
975 Makefile .HSancillary \
976 $(wildcard *.
$(OBJ_SUFFIX
)) $(wildcard *.ho
) $(wildcard host_
*.o
*) \
977 $(wildcard *.
$(LIB_SUFFIX
)) $(wildcard *$(DLL_SUFFIX
)) \
978 $(wildcard *.
$(IMPORT_LIB_SUFFIX
))
979 ifeq ($(OS_ARCH
),OS2
)
980 -rm -f
$(PROGRAM
:.exe
=.map
)
985 find
$(topsrcdir
) -name
dist -prune
-o \
( -name
'*.[hc]' -o
-name
'*.cp' -o
-name
'*.cpp' -o
-name
'*.idl' \
) -print |
$(TAG_PROGRAM
)
989 # creates OBJS, links with LIBS to create Foo
991 $(PROGRAM
): $(PROGOBJS
) $(LIBS_DEPS
) $(EXTRA_DEPS
) $(EXE_DEF_FILE
) $(RESFILE
) $(GLOBAL_DEPS
)
992 ifeq (WINCE
,$(OS_ARCH
))
993 $(LD
) -NOLOGO
-OUT
:$@
$(WIN32_EXE_LDFLAGS
) $(LDFLAGS
) $(PROGOBJS
) $(RESFILE
) $(LIBS
) $(EXTRA_LIBS
) $(OS_LIBS
)
995 ifeq (_WINNT
,$(GNU_CC
)_
$(OS_ARCH
))
996 $(LD
) -NOLOGO
-OUT
:$@
-PDB
:$(LINK_PDBFILE
) $(WIN32_EXE_LDFLAGS
) $(LDFLAGS
) $(PROGOBJS
) $(RESFILE
) $(LIBS
) $(EXTRA_LIBS
) $(OS_LIBS
)
997 ifdef MSMANIFEST_TOOL
998 @if
test -f
$@.manifest
; then \
999 if
test -f
"$(srcdir)/$@.manifest"; then \
1000 mt.exe
-NOLOGO
-MANIFEST
"$(win_srcdir)/$@.manifest" $@.manifest
-OUTPUTRESOURCE
:$@\
;1; \
1002 mt.exe
-NOLOGO
-MANIFEST
$@.manifest
-OUTPUTRESOURCE
:$@\
;1; \
1004 rm -f
$@.manifest
; \
1006 endif # MSVC with manifest tool
1008 ifeq ($(CPP_PROG_LINK
),1)
1009 $(CCC
) -o
$@
$(CXXFLAGS
) $(WRAP_MALLOC_CFLAGS
) $(PROGOBJS
) $(RESFILE
) $(WIN32_EXE_LDFLAGS
) $(SOLARIS_JEMALLOC_LDFLAGS
) $(LDFLAGS
) $(LIBS_DIR
) $(LIBS
) $(OS_LIBS
) $(EXTRA_LIBS
) $(BIN_FLAGS
) $(WRAP_MALLOC_LIB
) $(PROFILER_LIBS
) $(EXE_DEF_FILE
)
1010 else # ! CPP_PROG_LINK
1011 $(CC
) -o
$@
$(CFLAGS
) $(PROGOBJS
) $(RESFILE
) $(WIN32_EXE_LDFLAGS
) $(SOLARIS_JEMALLOC_LDFLAGS
) $(LDFLAGS
) $(LIBS_DIR
) $(LIBS
) $(OS_LIBS
) $(EXTRA_LIBS
) $(BIN_FLAGS
) $(EXE_DEF_FILE
)
1012 endif # CPP_PROG_LINK
1013 endif # WINNT && !GNU_CC
1019 ifdef MOZ_POST_PROGRAM_COMMAND
1020 $(MOZ_POST_PROGRAM_COMMAND
) $@
1022 ifeq ($(OS_ARCH
),BeOS
)
1023 ifdef BEOS_PROGRAM_RESOURCE
1024 xres
-o
$@
$(BEOS_PROGRAM_RESOURCE
)
1029 $(HOST_PROGRAM
): $(HOST_PROGOBJS
) $(HOST_LIBS_DEPS
) $(HOST_EXTRA_DEPS
) $(GLOBAL_DEPS
)
1030 ifeq (WINCE
,$(OS_ARCH
))
1031 $(HOST_LD
) -NOLOGO
-OUT
:$@
$(HOST_OBJS
) $(WIN32_EXE_LDFLAGS
) $(HOST_LIBS
) $(HOST_EXTRA_LIBS
)
1033 ifeq (_WINNT
,$(GNU_CC
)_
$(HOST_OS_ARCH
))
1034 $(HOST_LD
) -NOLOGO
-OUT
:$@
-PDB
:$(HOST_PDBFILE
) $(HOST_OBJS
) $(WIN32_EXE_LDFLAGS
) $(HOST_LIBS
) $(HOST_EXTRA_LIBS
)
1035 ifdef MSMANIFEST_TOOL
1036 @if
test -f
$@.manifest
; then \
1037 if
test -f
"$(srcdir)/$@.manifest"; then \
1038 mt.exe
-NOLOGO
-MANIFEST
"$(win_srcdir)/$@.manifest" $@.manifest
-OUTPUTRESOURCE
:$@\
;1; \
1040 mt.exe
-NOLOGO
-MANIFEST
$@.manifest
-OUTPUTRESOURCE
:$@\
;1; \
1042 rm -f
$@.manifest
; \
1044 endif # MSVC with manifest tool
1046 ifeq ($(CPP_PROG_LINK
),1)
1047 $(HOST_CXX
) -o
$@
$(HOST_CXXFLAGS
) $(HOST_LDFLAGS
) $(HOST_PROGOBJS
) $(HOST_LIBS
) $(HOST_EXTRA_LIBS
)
1049 $(HOST_CC
) -o
$@
$(HOST_CFLAGS
) $(HOST_LDFLAGS
) $(HOST_PROGOBJS
) $(HOST_LIBS
) $(HOST_EXTRA_LIBS
)
1050 endif # CPP_PROG_LINK
1055 # This is an attempt to support generation of multiple binaries
1056 # in one directory, it assumes everything to compile Foo is in
1057 # Foo.o (from either Foo.c or Foo.cpp).
1059 # SIMPLE_PROGRAMS = Foo Bar
1060 # creates Foo.o Bar.o, links with LIBS to create Foo, Bar.
1062 $(SIMPLE_PROGRAMS
): %$(BIN_SUFFIX
): %.
$(OBJ_SUFFIX
) $(LIBS_DEPS
) $(EXTRA_DEPS
) $(GLOBAL_DEPS
)
1063 ifeq (WINCE
,$(OS_ARCH
))
1064 $(LD
) -nologo
-entry
:main
-out
:$@
$< $(WIN32_EXE_LDFLAGS
) $(LDFLAGS
) $(LIBS
) $(EXTRA_LIBS
) $(OS_LIBS
)
1066 ifeq (_WINNT
,$(GNU_CC
)_
$(OS_ARCH
))
1067 $(LD
) -nologo
-out
:$@
-pdb
:$(LINK_PDBFILE
) $< $(WIN32_EXE_LDFLAGS
) $(LDFLAGS
) $(LIBS
) $(EXTRA_LIBS
) $(OS_LIBS
)
1068 ifdef MSMANIFEST_TOOL
1069 @if
test -f
$@.manifest
; then \
1070 mt.exe
-NOLOGO
-MANIFEST
$@.manifest
-OUTPUTRESOURCE
:$@\
;1; \
1071 rm -f
$@.manifest
; \
1073 endif # MSVC with manifest tool
1075 ifeq ($(CPP_PROG_LINK
),1)
1076 $(CCC
) $(WRAP_MALLOC_CFLAGS
) $(CXXFLAGS
) -o
$@
$< $(WIN32_EXE_LDFLAGS
) $(SOLARIS_JEMALLOC_LDFLAGS
) $(LDFLAGS
) $(LIBS_DIR
) $(LIBS
) $(OS_LIBS
) $(EXTRA_LIBS
) $(WRAP_MALLOC_LIB
) $(PROFILER_LIBS
) $(BIN_FLAGS
)
1078 $(CC
) $(WRAP_MALLOC_CFLAGS
) $(CFLAGS
) $(OUTOPTION
)$@
$< $(WIN32_EXE_LDFLAGS
) $(SOLARIS_JEMALLOC_LDFLAGS
) $(LDFLAGS
) $(LIBS_DIR
) $(LIBS
) $(OS_LIBS
) $(EXTRA_LIBS
) $(WRAP_MALLOC_LIB
) $(PROFILER_LIBS
) $(BIN_FLAGS
)
1079 endif # CPP_PROG_LINK
1080 endif # WINNT && !GNU_CC
1086 ifdef MOZ_POST_PROGRAM_COMMAND
1087 $(MOZ_POST_PROGRAM_COMMAND
) $@
1090 $(HOST_SIMPLE_PROGRAMS
): host_
%$(HOST_BIN_SUFFIX
): host_
%.
$(OBJ_SUFFIX
) $(HOST_LIBS_DEPS
) $(HOST_EXTRA_DEPS
) $(GLOBAL_DEPS
)
1091 ifeq (WINCE
,$(OS_ARCH
))
1092 $(HOST_LD
) -NOLOGO
-OUT
:$@
$(WIN32_EXE_LDFLAGS
) $< $(HOST_LIBS
) $(HOST_EXTRA_LIBS
)
1094 ifeq (WINNT_
,$(HOST_OS_ARCH
)_
$(GNU_CC
))
1095 $(HOST_LD
) -NOLOGO
-OUT
:$@
-PDB
:$(HOST_PDBFILE
) $< $(WIN32_EXE_LDFLAGS
) $(HOST_LIBS
) $(HOST_EXTRA_LIBS
)
1097 ifneq (,$(HOST_CPPSRCS
)$(USE_HOST_CXX
))
1098 $(HOST_CXX
) $(HOST_OUTOPTION
)$@
$(HOST_CXXFLAGS
) $(INCLUDES
) $< $(HOST_LIBS
) $(HOST_EXTRA_LIBS
)
1100 $(HOST_CC
) $(HOST_OUTOPTION
)$@
$(HOST_CFLAGS
) $(INCLUDES
) $< $(HOST_LIBS
) $(HOST_EXTRA_LIBS
)
1106 # Purify target. Solaris/sparc only to start.
1107 # Purify does not recognize "egcs" or "c++" so we go with
1108 # "gcc" and "g++" for now.
1111 ifeq ($(CPP_PROG_LINK
),1)
1112 $(PURIFY
) $(CCC
) -o
$^.pure
$(CXXFLAGS
) $(PROGOBJS
) $(LDFLAGS
) $(LIBS_DIR
) $(LIBS
) $(OS_LIBS
) $(EXTRA_LIBS
)
1114 $(PURIFY
) $(CC
) -o
$^.pure
$(CFLAGS
) $(PROGOBJS
) $(LDFLAGS
) $(LIBS_DIR
) $(LIBS
) $(OS_LIBS
) $(EXTRA_LIBS
)
1116 ifndef NO_DIST_INSTALL
1117 $(INSTALL
) $(IFLAGS2
) $^.pure
$(FINAL_TARGET
)
1120 quantify
: $(PROGRAM
)
1121 ifeq ($(CPP_PROG_LINK
),1)
1122 $(QUANTIFY
) $(CCC
) -o
$^.quantify
$(CXXFLAGS
) $(PROGOBJS
) $(LDFLAGS
) $(LIBS_DIR
) $(LIBS
) $(OS_LIBS
) $(EXTRA_LIBS
)
1124 $(QUANTIFY
) $(CC
) -o
$^.quantify
$(CFLAGS
) $(PROGOBJS
) $(LDFLAGS
) $(LIBS_DIR
) $(LIBS
) $(OS_LIBS
) $(EXTRA_LIBS
)
1126 ifndef NO_DIST_INSTALL
1127 $(INSTALL
) $(IFLAGS2
) $^.quantify
$(FINAL_TARGET
)
1131 # This allows us to create static versions of the shared libraries
1132 # that are built using other static libraries. Confused...?
1134 ifdef SHARED_LIBRARY_LIBS
1135 ifeq (,$(GNU_LD
)$(filter-out OS2 WINNT WINCE
, $(OS_ARCH
)))
1136 ifneq (,$(BUILD_STATIC_LIBS
)$(FORCE_STATIC_LIB
))
1137 LOBJS
+= $(SHARED_LIBRARY_LIBS
)
1140 ifneq (,$(filter OSF1 BSD_OS FreeBSD NetBSD OpenBSD SunOS Darwin
,$(OS_ARCH
)))
1141 CLEANUP1
:= | egrep
-v
'(________64ELEL_|__.SYMDEF)'
1142 CLEANUP2
:= rm -f ________64ELEL_ __.SYMDEF
1146 SUB_LOBJS
= $(shell for lib in
$(SHARED_LIBRARY_LIBS
); do
$(AR_LIST
) $${lib} $(CLEANUP1
); done
;)
1149 ifdef MOZILLA_PROBE_LIBS
1150 PROBE_LOBJS
= $(shell for lib in
$(MOZILLA_PROBE_LIBS
); do
$(AR_LIST
) $${lib} $(CLEANUP1
); done
;)
1152 ifdef DTRACE_PROBE_OBJ
1153 EXTRA_DEPS
+= $(DTRACE_PROBE_OBJ
)
1156 $(LIBRARY
): $(OBJS
) $(LOBJS
) $(SHARED_LIBRARY_LIBS
) $(EXTRA_DEPS
) $(GLOBAL_DEPS
)
1158 ifneq (,$(GNU_LD
)$(filter-out OS2 WINNT WINCE
, $(OS_ARCH
)))
1159 ifdef SHARED_LIBRARY_LIBS
1161 @for lib in
$(SHARED_LIBRARY_LIBS
); do
$(AR_EXTRACT
) $${lib}; $(CLEANUP2
); done
1164 $(AR
) $(AR_FLAGS
) $(OBJS
) $(LOBJS
) $(SUB_LOBJS
)
1166 @
rm -f foodummyfilefoo
$(SUB_LOBJS
)
1168 ifeq (,$(filter-out WINNT WINCE
, $(OS_ARCH
)))
1169 $(IMPORT_LIBRARY
): $(SHARED_LIBRARY
)
1172 ifeq ($(OS_ARCH
),OS2
)
1173 $(DEF_FILE
): $(OBJS
) $(SHARED_LIBRARY_LIBS
)
1175 echo LIBRARY
$(SHARED_LIBRARY_NAME
) INITINSTANCE TERMINSTANCE
> $@
1177 echo CODE LOADONCALL MOVEABLE DISCARDABLE
>> $@
1178 echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED
>> $@
1180 ifeq ($(IS_COMPONENT
),1)
1181 ifeq ($(HAS_EXTRAEXPORTS
),1)
1182 ifndef MOZ_OS2_USE_DECLSPEC
1183 $(FILTER
) $(OBJS
) $(SHARED_LIBRARY_LIBS
) >> $@
1186 echo _NSGetModule
>> $@
1189 ifndef MOZ_OS2_USE_DECLSPEC
1190 $(FILTER
) $(OBJS
) $(SHARED_LIBRARY_LIBS
) >> $@
1195 ifdef MOZ_OS2_USE_DECLSPEC
1196 $(IMPORT_LIBRARY
): $(SHARED_LIBRARY
)
1198 $(IMPORT_LIBRARY
): $(DEF_FILE
)
1205 $(HOST_LIBRARY
): $(HOST_OBJS
) Makefile
1207 $(HOST_AR
) $(HOST_AR_FLAGS
) $(HOST_OBJS
)
1210 ifdef NO_LD_ARCHIVE_FLAGS
1211 SUB_SHLOBJS
= $(SUB_LOBJS
)
1216 ifdef DTRACE_PROBE_OBJ
1217 ifndef DTRACE_LIB_DEPENDENT
1218 $(DTRACE_PROBE_OBJ
): $(OBJS
)
1219 dtrace
-G
-C
-32 -s
$(MOZILLA_DTRACE_SRC
) -o
$(DTRACE_PROBE_OBJ
) $(OBJS
)
1225 # On Darwin (Mac OS X), dwarf2 debugging uses debug info left in .o files,
1226 # so instead of deleting .o files after repacking them into a dylib, we make
1227 # symlinks back to the originals. The symlinks are a no-op for stabs debugging,
1228 # so no need to conditionalize on OS version or debugging format.
1230 $(SHARED_LIBRARY
): $(OBJS
) $(LOBJS
) $(DEF_FILE
) $(RESFILE
) $(SHARED_LIBRARY_LIBS
) $(EXTRA_DEPS
) $(DSO_LDOPTS_DEPS
) $(GLOBAL_DEPS
)
1231 ifndef INCREMENTAL_LINKER
1234 ifeq ($(OS_ARCH
),OpenVMS
)
1235 @if
test ! -f
$(VMS_SYMVEC_FILE
); then \
1236 if
test -f
$(VMS_SYMVEC_FILE_MODULE
); then \
1237 echo Creating specific component options file
$(VMS_SYMVEC_FILE
); \
1238 cp
$(VMS_SYMVEC_FILE_MODULE
) $(VMS_SYMVEC_FILE
); \
1242 @if
test ! -f
$(VMS_SYMVEC_FILE
); then \
1243 echo Creating generic component options file
$(VMS_SYMVEC_FILE
); \
1244 cp
$(VMS_SYMVEC_FILE_COMP
) $(VMS_SYMVEC_FILE
); \
1248 ifdef NO_LD_ARCHIVE_FLAGS
1249 ifdef SHARED_LIBRARY_LIBS
1250 @
rm -f
$(SUB_SHLOBJS
)
1251 @for lib in
$(SHARED_LIBRARY_LIBS
); do
$(AR_EXTRACT
) $${lib}; $(CLEANUP2
); done
1252 ifeq ($(OS_ARCH
),Darwin
)
1253 @echo Making symlinks to the original object files in the archive libraries
$(SHARED_LIBRARY_LIBS
)
1254 @for lib in
$(SHARED_LIBRARY_LIBS
); do \
1255 libdir=`echo $$lib|sed -e 's,/[^/]*\.a,,'`; \
1256 ofiles
=`$(AR_LIST) $${lib}`; \
1257 for ofile in
$$ofiles; do \
1258 if
[ -f
$$libdir/$$ofile ]; then \
1260 ln
-s
$$libdir/$$ofile $$ofile; \
1265 endif # SHARED_LIBRARY_LIBS
1266 endif # NO_LD_ARCHIVE_FLAGS
1267 ifdef DTRACE_LIB_DEPENDENT
1268 @
rm -f
$(PROBE_LOBJS
)
1269 @for lib in
$(MOZILLA_PROBE_LIBS
); do
$(AR_EXTRACT
) $${lib}; $(CLEANUP2
); done
1271 dtrace
-G
-C
-32 -s
$(MOZILLA_DTRACE_SRC
) -o
$(DTRACE_PROBE_OBJ
) $(PROBE_LOBJS
)
1273 @for lib in
$(MOZILLA_PROBE_LIBS
); do \
1274 ofiles
=`$(AR_LIST) $${lib}`; \
1275 $(AR_DELETE
) $${lib} $$ofiles; \
1277 $(MKSHLIB
) $(SHLIB_LDSTARTFILE
) $(OBJS
) $(LOBJS
) $(SUB_SHLOBJS
) $(DTRACE_PROBE_OBJ
) $(PROBE_LOBJS
) $(RESFILE
) $(LDFLAGS
) $(EXTRA_DSO_LDOPTS
) $(OS_LIBS
) $(EXTRA_LIBS
) $(DEF_FILE
) $(SHLIB_LDENDFILE
)
1278 @
rm -f
$(PROBE_LOBJS
)
1279 @
rm -f
$(DTRACE_PROBE_OBJ
)
1280 @for lib in
$(MOZILLA_PROBE_LIBS
); do \
1281 if
[ -L
$${lib} ]; then
rm -f
`readlink $${lib}`; fi
; \
1283 @
rm -f
$(MOZILLA_PROBE_LIBS
)
1285 else # ! DTRACE_LIB_DEPENDENT
1286 $(MKSHLIB
) $(SHLIB_LDSTARTFILE
) $(OBJS
) $(DTRACE_PROBE_OBJ
) $(LOBJS
) $(SUB_SHLOBJS
) $(RESFILE
) $(LDFLAGS
) $(EXTRA_DSO_LDOPTS
) $(OS_LIBS
) $(EXTRA_LIBS
) $(DEF_FILE
) $(SHLIB_LDENDFILE
)
1287 endif # DTRACE_LIB_DEPENDENT
1289 ifeq (_WINNT
,$(GNU_CC
)_
$(OS_ARCH
))
1290 ifdef MSMANIFEST_TOOL
1291 ifdef EMBED_MANIFEST_AT
1292 @if
test -f
$@.manifest
; then \
1293 mt.exe
-NOLOGO
-MANIFEST
$@.manifest
-OUTPUTRESOURCE
:$@\
;$(EMBED_MANIFEST_AT
); \
1294 rm -f
$@.manifest
; \
1296 endif # EMBED_MANIFEST_AT
1297 endif # MSVC with manifest tool
1298 endif # WINNT && !GCC
1299 ifeq ($(OS_ARCH
),Darwin
)
1301 @
rm -f
$(SUB_SHLOBJS
)
1303 @
rm -f foodummyfilefoo
$(DELETE_AFTER_LINK
)
1308 ifdef MOZ_POST_DSO_LIB_COMMAND
1309 $(MOZ_POST_DSO_LIB_COMMAND
) $@
1313 ifdef COMPILER_DEPEND
1314 ifeq ($(SOLARIS_SUNPRO_CC
),1)
1315 _MDDEPFILE
= $(MDDEPDIR
)/$(@F
).pp
1317 define MAKE_DEPS_AUTO_CC
1318 if
test -d
$(@D
); then \
1319 echo
"Building deps for $< using Sun Studio cc"; \
1320 $(CC
) $(COMPILE_CFLAGS
) -xM
$< >$(_MDDEPFILE
) ; \
1323 define MAKE_DEPS_AUTO_CXX
1324 if
test -d
$(@D
); then \
1325 echo
"Building deps for $< using Sun Studio CC"; \
1326 $(CXX
) $(COMPILE_CXXFLAGS
) -xM
$< >$(_MDDEPFILE
) ; \
1329 endif # Sun Studio on Solaris
1330 else # COMPILER_DEPEND
1332 # Generate dependencies on the fly
1334 _MDDEPFILE
= $(MDDEPDIR
)/$(@F
).pp
1336 define MAKE_DEPS_AUTO
1337 if
test -d
$(@D
); then \
1338 echo
"Building deps for $<"; \
1339 $(MKDEPEND
) -o
'.$(OBJ_SUFFIX)' -f-
$(DEFINES
) $(ACDEFINES
) $(INCLUDES
) $< 2>/dev
/null | sed
-e
"s|^[^ ]*/||" > $(_MDDEPFILE
) ; \
1343 MAKE_DEPS_AUTO_CC
= $(MAKE_DEPS_AUTO
)
1344 MAKE_DEPS_AUTO_CXX
= $(MAKE_DEPS_AUTO
)
1346 endif # COMPILER_DEPEND
1348 endif # MOZ_AUTO_DEPS
1351 ifeq ($(OS_ARCH
),SunOS
)
1352 SOLARIS_JEMALLOC_LDFLAGS
= $(call EXPAND_LIBNAME_PATH
,jemalloc
,$(DIST
)/lib
)
1356 # Rules for building native targets must come first because of the host_ prefix
1357 host_
%.
$(OBJ_SUFFIX
): %.c
$(GLOBAL_DEPS
)
1359 $(ELOG
) $(HOST_CC
) $(HOST_OUTOPTION
)$@
-c
$(HOST_CFLAGS
) $(INCLUDES
) $(NSPR_CFLAGS
) $(_VPATH_SRCS
)
1361 host_
%.
$(OBJ_SUFFIX
): %.
cpp $(GLOBAL_DEPS
)
1363 $(ELOG
) $(HOST_CXX
) $(HOST_OUTOPTION
)$@
-c
$(HOST_CXXFLAGS
) $(INCLUDES
) $(NSPR_CFLAGS
) $(_VPATH_SRCS
)
1365 host_
%.
$(OBJ_SUFFIX
): %.
cc $(GLOBAL_DEPS
)
1367 $(ELOG
) $(HOST_CXX
) $(HOST_OUTOPTION
)$@
-c
$(HOST_CXXFLAGS
) $(INCLUDES
) $(NSPR_CFLAGS
) $(_VPATH_SRCS
)
1369 host_
%.
$(OBJ_SUFFIX
): %.m
$(GLOBAL_DEPS
)
1371 $(ELOG
) $(HOST_CC
) $(HOST_OUTOPTION
)$@
-c
$(HOST_CFLAGS
) $(HOST_CMFLAGS
) $(INCLUDES
) $(NSPR_CFLAGS
) $(_VPATH_SRCS
)
1373 host_
%.
$(OBJ_SUFFIX
): %.mm
$(GLOBAL_DEPS
)
1375 $(ELOG
) $(HOST_CXX
) $(HOST_OUTOPTION
)$@
-c
$(HOST_CXXFLAGS
) $(HOST_CMMFLAGS
) $(INCLUDES
) $(NSPR_CFLAGS
) $(_VPATH_SRCS
)
1377 %:: %.c
$(GLOBAL_DEPS
)
1379 @
$(MAKE_DEPS_AUTO_CC
)
1380 $(ELOG
) $(CC
) $(CFLAGS
) $(LDFLAGS
) $(OUTOPTION
)$@
$(_VPATH_SRCS
)
1382 %.
$(OBJ_SUFFIX
): %.c
$(GLOBAL_DEPS
)
1384 @
$(MAKE_DEPS_AUTO_CC
)
1385 $(ELOG
) $(CC
) $(OUTOPTION
)$@
-c
$(COMPILE_CFLAGS
) $(_VPATH_SRCS
)
1387 moc_
%.
cpp: %.h
$(GLOBAL_DEPS
)
1388 $(MOC
) $< $(OUTOPTION
)$@
1391 # The AS_DASH_C_FLAG is needed cause not all assemblers (Solaris) accept
1393 %.
$(OBJ_SUFFIX
): %.
$(ASM_SUFFIX
) $(GLOBAL_DEPS
)
1394 $(AS
) -o
$@
$(ASFLAGS
) $(AS_DASH_C_FLAG
) $(_VPATH_SRCS
)
1397 %.
$(OBJ_SUFFIX
): %.S
$(GLOBAL_DEPS
)
1398 $(AS
) -o
$@
$(ASFLAGS
) -c
$<
1400 %:: %.
cpp $(GLOBAL_DEPS
)
1401 @
$(MAKE_DEPS_AUTO_CXX
)
1402 $(CCC
) $(OUTOPTION
)$@
$(CXXFLAGS
) $(_VPATH_SRCS
) $(LDFLAGS
)
1405 # Please keep the next two rules in sync.
1407 %.
$(OBJ_SUFFIX
): %.
cc $(GLOBAL_DEPS
)
1409 @
$(MAKE_DEPS_AUTO_CXX
)
1410 $(ELOG
) $(CCC
) $(OUTOPTION
)$@
-c
$(COMPILE_CXXFLAGS
) $(_VPATH_SRCS
)
1412 %.
$(OBJ_SUFFIX
): %.
cpp $(GLOBAL_DEPS
)
1414 @
$(MAKE_DEPS_AUTO_CXX
)
1415 ifdef STRICT_CPLUSPLUS_SUFFIX
1416 echo
"#line 1 \"$*.cpp\"" | cat
- $*.
cpp > t_
$*.
cc
1417 $(ELOG
) $(CCC
) -o
$@
-c
$(COMPILE_CXXFLAGS
) t_
$*.
cc
1420 $(ELOG
) $(CCC
) $(OUTOPTION
)$@
-c
$(COMPILE_CXXFLAGS
) $(_VPATH_SRCS
)
1421 endif #STRICT_CPLUSPLUS_SUFFIX
1423 $(OBJ_PREFIX
)%.
$(OBJ_SUFFIX
): %.mm
$(GLOBAL_DEPS
)
1425 @
$(MAKE_DEPS_AUTO_CXX
)
1426 $(ELOG
) $(CCC
) -o
$@
-c
$(COMPILE_CXXFLAGS
) $(COMPILE_CMMFLAGS
) $(_VPATH_SRCS
)
1428 $(OBJ_PREFIX
)%.
$(OBJ_SUFFIX
): %.m
$(GLOBAL_DEPS
)
1430 @
$(MAKE_DEPS_AUTO_CC
)
1431 $(ELOG
) $(CC
) -o
$@
-c
$(COMPILE_CFLAGS
) $(COMPILE_CMFLAGS
) $(_VPATH_SRCS
)
1434 $(CCC
) -S
$(COMPILE_CXXFLAGS
) $(_VPATH_SRCS
)
1437 $(CCC
) -S
$(COMPILE_CXXFLAGS
) $(_VPATH_SRCS
)
1440 $(CC
) -S
$(COMPILE_CFLAGS
) $(_VPATH_SRCS
)
1443 $(CCC
) -C
-E
$(COMPILE_CXXFLAGS
) $(_VPATH_SRCS
) > $*.i
1446 $(CCC
) -C
-E
$(COMPILE_CXXFLAGS
) $(_VPATH_SRCS
) > $*.i
1449 $(CC
) -C
-E
$(COMPILE_CFLAGS
) $(_VPATH_SRCS
) > $*.i
1452 $(CCC
) -C
-E
$(COMPILE_CXXFLAGS
) $(COMPILE_CMMFLAGS
) $(_VPATH_SRCS
) > $*.i
1455 @echo Creating Resource file
: $@
1456 ifeq ($(OS_ARCH
),OS2
)
1457 $(RC
) $(RCFLAGS
:-D
%=-d
%) -i
$(subst /,\
,$(srcdir)) -r
$< $@
1460 $(RC
) $(RCFLAGS
) $(filter-out -U
%,$(DEFINES
)) $(INCLUDES
:-I
%=--include-dir
%) $(OUTOPTION
)$@
$(_VPATH_SRCS
)
1462 $(RC
) $(RCFLAGS
) -r
$(DEFINES
) $(INCLUDES
) $(OUTOPTION
)$@
$(_VPATH_SRCS
)
1466 # need 3 separate lines for OS/2
1473 rm -f
$@
; cp
$< $@
; chmod
+x
$@
1475 # Cancel these implicit rules
1485 ###############################################################################
1487 ###############################################################################
1488 ifneq (,$(filter OS2 WINNT WINCE
,$(OS_ARCH
)))
1495 SPACE
:= $(EMPTY
) $(EMPTY
)
1497 # Cygwin and MSYS have their own special path form, but javac expects the source
1498 # and class paths to be in the DOS form (i.e. e:/builds/...). This function
1499 # does the appropriate conversion on Windows, but is a noop on other systems.
1500 ifeq (,$(filter-out WINNT WINCE
, $(HOST_OS_ARCH
)))
1501 ifdef CYGWIN_WRAPPER
1502 normalizepath
= $(foreach p
,$(1),$(shell cygpath
-m
$(p
)))
1505 # We use 'pwd -W' to get DOS form of the path. However, since the given path
1506 # could be a file or a non-existent path, we cannot call 'pwd -W' directly
1507 # on the path. Instead, we extract the root path (i.e. "c:/"), call 'pwd -W'
1508 # on it, then merge with the rest of the path.
1509 root-path
= $(shell echo
$(1) | sed
-e
"s|\(/[^/]*\)/\?\(.*\)|\1|")
1510 non-root-path
= $(shell echo
$(1) | sed
-e
"s|\(/[^/]*\)/\?\(.*\)|\2|")
1511 normalizepath
= $(foreach p
,$(1),$(if
$(filter /%,$(1)),$(patsubst %/,%,$(shell cd
$(call root-path
,$(1)) && pwd
-W
))/$(call non-root-path
,$(1)),$(1)))
1514 normalizepath
= $(1)
1517 _srcdir
= $(call normalizepath
,$(srcdir))
1518 ifdef JAVA_SOURCEPATH
1519 SP
= $(subst $(SPACE
),$(SEP
),$(call normalizepath
,$(strip $(JAVA_SOURCEPATH
))))
1520 _JAVA_SOURCEPATH
= ".$(SEP)$(_srcdir)$(SEP)$(SP)"
1522 _JAVA_SOURCEPATH
= ".$(SEP)$(_srcdir)"
1525 ifdef JAVA_CLASSPATH
1526 CP
= $(subst $(SPACE
),$(SEP
),$(call normalizepath
,$(strip $(JAVA_CLASSPATH
))))
1527 _JAVA_CLASSPATH
= ".$(SEP)$(CP)"
1536 $(_JAVA_DIR
)/%.class
: %.java
$(GLOBAL_DEPS
) $(_JAVA_DIR
)
1537 $(CYGWIN_WRAPPER
) $(JAVAC
) $(JAVAC_FLAGS
) -classpath
$(_JAVA_CLASSPATH
) \
1538 -sourcepath
$(_JAVA_SOURCEPATH
) -d
$(_JAVA_DIR
) $(_VPATH_SRCS
)
1540 $(JAVA_LIBRARY
): $(addprefix $(_JAVA_DIR
)/,$(JAVA_SRCS
:.java
=.class
)) $(GLOBAL_DEPS
)
1541 $(JAR
) cf
$@
-C
$(_JAVA_DIR
) .
1543 GARBAGE_DIRS
+= $(_JAVA_DIR
)
1545 ###############################################################################
1547 ###############################################################################
1549 # In GNU make 3.80, makefiles must use the /cygdrive syntax, even if we're
1550 # processing them with AS perl. See bug 232003
1552 CYGWIN_TOPSRCDIR
= -nowrap
-p
$(topsrcdir
) -wrap
1555 # Note: Passing depth to make-makefile is optional.
1556 # It saves the script some work, though.
1557 Makefile
: Makefile.in
1558 @
$(PERL
) $(AUTOCONF_TOOLS
)/make-makefile
-t
$(topsrcdir
) -d
$(DEPTH
) $(CYGWIN_TOPSRCDIR
)
1561 # VPATH does not work on some machines in this case, so add $(srcdir)
1562 $(SUBMAKEFILES
): % : $(srcdir)/%.in
1563 $(PERL
) $(AUTOCONF_TOOLS
)/make-makefile
-t
$(topsrcdir
) -d
$(DEPTH
) $(CYGWIN_TOPSRCDIR
) $@
1566 ifdef AUTOUPDATE_CONFIGURE
1567 $(topsrcdir
)/configure
: $(topsrcdir
)/configure.in
1568 (cd
$(topsrcdir
) && $(AUTOCONF
)) && (cd
$(DEPTH
) && .
/config.status
--recheck
)
1571 ###############################################################################
1572 # Bunch of things that extend the 'export' rule (in order):
1573 ###############################################################################
1575 ################################################################################
1576 # Copy each element of EXPORTS to $(DIST)/include
1579 ifneq ($(XPIDLSRCS
),)
1585 ifneq ($(XPI_NAME
),)
1589 export:: $(FINAL_TARGET
)
1592 ifndef NO_DIST_INSTALL
1595 $(INSTALL
) $(IFLAGS1
) $^
$(DIST
)/include
1597 endif # NO_DIST_INSTALL
1599 define EXPORT_NAMESPACE_RULE
1600 ifndef NO_DIST_INSTALL
1601 export:: $(EXPORTS_
$(namespace
))
1602 $(INSTALL
) $(IFLAGS1
) $$^
$(DIST
)/include/$(namespace
)
1603 endif # NO_DIST_INSTALL
1606 $(foreach namespace
,$(EXPORTS_NAMESPACES
),$(eval
$(EXPORT_NAMESPACE_RULE
)))
1608 ################################################################################
1609 # Copy each element of PREF_JS_EXPORTS
1614 ifneq (,$(XPI_NAME
)$(LIBXUL_SDK
))
1615 PREF_DIR
= defaults
/preferences
1617 PREF_DIR
= defaults
/pref
1621 ifneq ($(PREF_JS_EXPORTS
),)
1622 # on win32, pref files need CRLF line endings... see bug 206029
1623 ifeq (WINNT
,$(OS_ARCH
))
1624 PREF_PPFLAGS
= --line-endings
=crlf
1627 ifndef NO_DIST_INSTALL
1628 $(FINAL_TARGET
)/$(PREF_DIR
):
1631 libs
:: $(FINAL_TARGET
)/$(PREF_DIR
) $(PREF_JS_EXPORTS
)
1633 for i in
$(PREF_JS_EXPORTS
); do \
1634 dest
=$(FINAL_TARGET
)/$(PREF_DIR
)/`basename $$i`; \
1636 $(PYTHON
) $(topsrcdir
)/config
/Preprocessor.py
$(PREF_PPFLAGS
) $(DEFINES
) $(ACDEFINES
) $(XULPPFLAGS
) $$i > $$dest; \
1641 ################################################################################
1642 # Copy each element of AUTOCFG_JS_EXPORTS to $(FINAL_TARGET)/defaults/autoconfig
1644 ifneq ($(AUTOCFG_JS_EXPORTS
),)
1645 $(FINAL_TARGET
)/defaults
/autoconfig
::
1648 ifndef NO_DIST_INSTALL
1649 export:: $(AUTOCFG_JS_EXPORTS
) $(FINAL_TARGET
)/defaults
/autoconfig
1650 $(INSTALL
) $(IFLAGS1
) $^
1654 ################################################################################
1655 # Export the elements of $(XPIDLSRCS)
1656 # generating .h and .xpt files and moving them to the appropriate places.
1658 ifneq ($(XPIDLSRCS
),)
1660 export:: $(patsubst %.idl
,$(XPIDL_GEN_DIR
)/%.h
, $(XPIDLSRCS
))
1663 XPIDL_MODULE
= $(MODULE
)
1666 ifeq ($(XPIDL_MODULE
),) # we need $(XPIDL_MODULE) to make $(XPIDL_MODULE).xpt
1669 @echo
"*** Error processing XPIDLSRCS:"
1670 @echo
"Please define MODULE or XPIDL_MODULE when defining XPIDLSRCS,"
1671 @echo
"so we have a module name to use when creating MODULE.xpt."
1672 @echo
; sleep
2; false
1678 # generate .h files from into $(XPIDL_GEN_DIR), then export to $(DIST)/include;
1679 # warn against overriding existing .h file.
1680 $(XPIDL_GEN_DIR
)/.done
:
1681 @if
test ! -d
$(XPIDL_GEN_DIR
); then echo Creating
$(XPIDL_GEN_DIR
)/.done
; rm -rf
$(XPIDL_GEN_DIR
); mkdir
$(XPIDL_GEN_DIR
); fi
1684 # don't depend on $(XPIDL_GEN_DIR), because the modification date changes
1685 # with any addition to the directory, regenerating all .h files -> everything.
1687 $(XPIDL_GEN_DIR
)/%.h
: %.idl
$(XPIDL_COMPILE
) $(XPIDL_GEN_DIR
)/.done
1689 $(ELOG
) $(XPIDL_COMPILE
) -m header
-w
$(XPIDL_FLAGS
) -o
$(XPIDL_GEN_DIR
)/$* $(_VPATH_SRCS
)
1690 @if
test -n
"$(findstring $*.h, $(EXPORTS))"; \
1691 then echo
"*** WARNING: file $*.h generated from $*.idl overrides $(srcdir)/$*.h"; else true
; fi
1694 # generate intermediate .xpt files into $(XPIDL_GEN_DIR), then link
1695 # into $(XPIDL_MODULE).xpt and export it to $(FINAL_TARGET)/components.
1696 $(XPIDL_GEN_DIR
)/%.xpt
: %.idl
$(XPIDL_COMPILE
) $(XPIDL_GEN_DIR
)/.done
1698 $(ELOG
) $(XPIDL_COMPILE
) -m typelib
-w
$(XPIDL_FLAGS
) -e
$@
-d
$(MDDEPDIR
)/$*.pp
$(_VPATH_SRCS
)
1700 # no need to link together if XPIDLSRCS contains only XPIDL_MODULE
1701 ifneq ($(XPIDL_MODULE
).idl
,$(strip $(XPIDLSRCS
)))
1702 $(XPIDL_GEN_DIR
)/$(XPIDL_MODULE
).xpt
: $(patsubst %.idl
,$(XPIDL_GEN_DIR
)/%.xpt
,$(XPIDLSRCS
)) $(GLOBAL_DEPS
) $(XPIDL_LINK
)
1703 $(XPIDL_LINK
) $(XPIDL_GEN_DIR
)/$(XPIDL_MODULE
).xpt
$(patsubst %.idl
,$(XPIDL_GEN_DIR
)/%.xpt
,$(XPIDLSRCS
))
1704 endif # XPIDL_MODULE.xpt != XPIDLSRCS
1706 libs
:: $(XPIDL_GEN_DIR
)/$(XPIDL_MODULE
).xpt
1707 ifndef NO_DIST_INSTALL
1708 $(INSTALL
) $(IFLAGS1
) $(XPIDL_GEN_DIR
)/$(XPIDL_MODULE
).xpt
$(FINAL_TARGET
)/components
1713 GARBAGE_DIRS
+= $(XPIDL_GEN_DIR
)
1717 ifneq ($(XPIDLSRCS
),)
1718 # export .idl files to $(IDL_DIR)
1719 ifndef NO_DIST_INSTALL
1720 export:: $(XPIDLSRCS
) $(IDL_DIR
)
1721 $(INSTALL
) $(IFLAGS1
) $^
1723 export:: $(patsubst %.idl
,$(XPIDL_GEN_DIR
)/%.h
, $(XPIDLSRCS
)) $(DIST
)/include
1724 $(INSTALL
) $(IFLAGS1
) $^
1725 endif # NO_DIST_INSTALL
1732 # General rules for exporting idl files.
1734 # WORK-AROUND ONLY, for mozilla/tools/module-deps/bootstrap.pl build.
1735 # Bug to fix idl dependency problems w/o this extra build pass is
1736 # http://bugzilla.mozilla.org/show_bug.cgi?id=145777
1741 export-idl
:: $(SUBMAKEFILES
) $(MAKE_DIRS
)
1743 ifneq ($(XPIDLSRCS
),)
1744 ifndef NO_DIST_INSTALL
1745 export-idl
:: $(XPIDLSRCS
) $(IDL_DIR
)
1746 $(INSTALL
) $(IFLAGS1
) $^
1749 $(LOOP_OVER_PARALLEL_DIRS
)
1751 $(LOOP_OVER_TOOL_DIRS
)
1754 ifneq ($(XPIDLSRCS
),)
1756 JAVA_XPIDLSRCS
= $(XPIDLSRCS
)
1758 # A single IDL file can contain multiple interfaces, which result in multiple
1759 # Java interface files. So use hidden dependency files.
1760 JAVADEPFILES
= $(addprefix $(JAVA_GEN_DIR
)/.
,$(JAVA_XPIDLSRCS
:.idl
=.java.pp
))
1764 GARBAGE_DIRS
+= $(JAVA_GEN_DIR
)
1766 # generate .java files into _javagen/[package name dirs]
1767 _JAVA_GEN_DIR
= $(JAVA_GEN_DIR
)/$(JAVA_IFACES_PKG_NAME
)
1771 $(JAVA_GEN_DIR
)/.
%.java.pp
: %.idl
$(XPIDL_COMPILE
) $(_JAVA_GEN_DIR
)
1773 $(ELOG
) $(XPIDL_COMPILE
) -m java
-w
-I
$(srcdir) -I
$(IDL_DIR
) -o
$(_JAVA_GEN_DIR
)/$* $(_VPATH_SRCS
)
1776 # "Install" generated Java interfaces. We segregate them based on the XPI_NAME.
1777 # If XPI_NAME is not set, install into the "default" directory.
1778 ifneq ($(XPI_NAME
),)
1779 JAVA_INSTALL_DIR
= $(JAVA_DIST_DIR
)/$(XPI_NAME
)
1781 JAVA_INSTALL_DIR
= $(JAVA_DIST_DIR
)/default
1784 $(JAVA_INSTALL_DIR
):
1787 export:: $(JAVA_DIST_DIR
) $(JAVADEPFILES
) $(JAVA_INSTALL_DIR
)
1788 (cd
$(JAVA_GEN_DIR
) && tar $(TAR_CREATE_FLAGS
) - .
) |
(cd
$(JAVA_INSTALL_DIR
) && tar -xf
-)
1791 endif # MOZ_JAVAXPCOM
1793 ################################################################################
1794 # Copy each element of EXTRA_COMPONENTS to $(FINAL_TARGET)/components
1795 ifdef EXTRA_COMPONENTS
1796 libs
:: $(EXTRA_COMPONENTS
)
1797 ifndef NO_DIST_INSTALL
1798 $(INSTALL
) $(IFLAGS1
) $^
$(FINAL_TARGET
)/components
1803 ifdef EXTRA_PP_COMPONENTS
1804 libs
:: $(EXTRA_PP_COMPONENTS
)
1805 ifndef NO_DIST_INSTALL
1807 $(NSINSTALL
) -D
$(FINAL_TARGET
)/components
; \
1809 dest
=$(FINAL_TARGET
)/components
/`basename $$i`; \
1811 $(PYTHON
) $(topsrcdir
)/config
/Preprocessor.py
$(DEFINES
) $(ACDEFINES
) $(XULPPFLAGS
) $$i > $$dest; \
1817 ################################################################################
1818 # Copy each element of EXTRA_JS_MODULES to $(FINAL_TARGET)/modules
1819 ifdef EXTRA_JS_MODULES
1820 libs
:: $(EXTRA_JS_MODULES
)
1821 ifndef NO_DIST_INSTALL
1822 $(INSTALL
) $(IFLAGS1
) $^
$(FINAL_TARGET
)/modules
1827 ifdef EXTRA_PP_JS_MODULES
1828 libs
:: $(EXTRA_PP_JS_MODULES
)
1829 ifndef NO_DIST_INSTALL
1831 $(NSINSTALL
) -D
$(FINAL_TARGET
)/modules
; \
1833 dest
=$(FINAL_TARGET
)/modules
/`basename $$i`; \
1835 $(PYTHON
) $(topsrcdir
)/config
/Preprocessor.py
$(DEFINES
) $(ACDEFINES
) $(XULPPFLAGS
) $$i > $$dest; \
1841 ################################################################################
1844 ifneq (,$(SDK_LIBRARY
))
1848 ifndef NO_DIST_INSTALL
1849 libs
:: $(SDK_LIBRARY
) $(SDK_LIB_DIR
)
1850 $(INSTALL
) $(IFLAGS2
) $^
1855 ifneq (,$(SDK_BINARY
))
1859 ifndef NO_DIST_INSTALL
1860 libs
:: $(SDK_BINARY
) $(SDK_BIN_DIR
)
1861 $(INSTALL
) $(IFLAGS2
) $^
1866 ################################################################################
1869 JAR_MANIFEST
:= $(srcdir)/jar.mn
1873 $(LOOP_OVER_PARALLEL_DIRS
)
1875 $(LOOP_OVER_TOOL_DIRS
)
1877 $(FINAL_TARGET
)/chrome
:
1880 ifneq (,$(wildcard $(JAR_MANIFEST
)))
1881 ifndef NO_DIST_INSTALL
1882 libs realchrome
:: $(CHROME_DEPS
) $(FINAL_TARGET
)/chrome
1883 $(PYTHON
) $(MOZILLA_DIR
)/config
/JarMaker.py \
1884 $(QUIET
) -j
$(FINAL_TARGET
)/chrome \
1885 $(MAKE_JARS_FLAGS
) $(XULPPFLAGS
) $(DEFINES
) $(ACDEFINES
) \
1890 ifneq ($(DIST_FILES
),)
1894 libs
:: $(DIST_FILES
) $(DIST
)/bin
1896 for f in
$(DIST_FILES
); do \
1897 dest
=$(FINAL_TARGET
)/`basename $$f`; \
1899 $(PYTHON
) $(MOZILLA_DIR
)/config
/Preprocessor.py \
1900 $(XULAPP_DEFINES
) $(DEFINES
) $(ACDEFINES
) $(XULPPFLAGS
) \
1901 $(srcdir)/$$f > $$dest; \
1905 ifneq ($(DIST_CHROME_FILES
),)
1906 libs
:: $(DIST_CHROME_FILES
)
1908 for f in
$(DIST_CHROME_FILES
); do \
1909 dest
=$(FINAL_TARGET
)/chrome
/`basename $$f`; \
1911 $(PYTHON
) $(MOZILLA_DIR
)/config
/Preprocessor.py \
1912 $(XULAPP_DEFINES
) $(DEFINES
) $(ACDEFINES
) $(XULPPFLAGS
) \
1913 $(srcdir)/$$f > $$dest; \
1917 ifneq ($(XPI_PKGNAME
),)
1921 @echo
"Stripping $(XPI_PKGNAME) package directory..."
1922 @echo
$(FINAL_TARGET
)
1923 @cd
$(FINAL_TARGET
) && find .
! -type d \
1933 ! -name
"*.properties" \
1944 $(PLATFORM_EXCLUDE_LIST
) \
1945 -exec
$(STRIP
) $(STRIP_FLAGS
) {} >/dev
/null
2>&1 \
;
1948 @echo
"Packaging $(XPI_PKGNAME).xpi..."
1949 cd
$(FINAL_TARGET
) && $(ZIP
) -qr ..
/$(XPI_PKGNAME
).xpi
*
1952 ifdef INSTALL_EXTENSION_ID
1954 $(error XPI_NAME must be set for INSTALL_EXTENSION_ID
)
1958 $(RM
) -rf
"$(DIST)/bin/extensions/$(INSTALL_EXTENSION_ID)"
1959 $(NSINSTALL
) -D
"$(DIST)/bin/extensions/$(INSTALL_EXTENSION_ID)"
1960 cd
$(FINAL_TARGET
) && tar $(TAR_CREATE_FLAGS
) - . |
(cd
"../../bin/extensions/$(INSTALL_EXTENSION_ID)" && tar -xf
-)
1964 ifneq (,$(filter flat symlink
,$(MOZ_CHROME_FILE_FORMAT
)))
1965 _JAR_REGCHROME_DISABLE_JAR
=1
1967 _JAR_REGCHROME_DISABLE_JAR
=0
1970 REGCHROME
= $(PERL
) -I
$(MOZILLA_DIR
)/config
$(MOZILLA_DIR
)/config
/add-chrome.pl \
1971 $(if
$(filter gtk2
,$(MOZ_WIDGET_TOOLKIT
)),-x
) \
1972 $(if
$(CROSS_COMPILE
),-o
$(OS_ARCH
)) $(FINAL_TARGET
)/chrome
/installed-chrome.txt \
1973 $(_JAR_REGCHROME_DISABLE_JAR
)
1975 REGCHROME_INSTALL
= $(PERL
) -I
$(MOZILLA_DIR
)/config
$(MOZILLA_DIR
)/config
/add-chrome.pl \
1976 $(if
$(filter gtk2
,$(MOZ_WIDGET_TOOLKIT
)),-x
) \
1977 $(if
$(CROSS_COMPILE
),-o
$(OS_ARCH
)) $(DESTDIR
)$(mozappdir
)/chrome
/installed-chrome.txt \
1978 $(_JAR_REGCHROME_DISABLE_JAR
)
1981 #############################################################################
1983 #############################################################################
1984 ifdef COMPILER_DEPEND
1986 @echo
"$(MAKE): No need to run depend target.\
1987 Using compiler-based depend." 1>&2
1988 ifeq ($(GNU_CC
)$(GNU_CXX
),)
1990 @echo
"`echo '$(MAKE):'|sed 's/./ /g'`"\
1991 '(Compiler-based depend was turned on by "--enable-md".)' 1>&2
1994 @space
="`echo '$(MAKE): '|sed 's/./ /g'`";\
1995 echo
"$$space"'Since you are using a GNU compiler,\
1996 it is on by default.' 1>&2; \
1997 echo
"$$space"'To turn it off, pass --disable-md to configure.' 1>&2
2000 else # ! COMPILER_DEPEND
2002 ifndef MOZ_AUTO_DEPS
2004 define MAKE_DEPS_NOAUTO
2005 $(MKDEPEND
) -w1024
-o
'.$(OBJ_SUFFIX)' -f-
$(DEFINES
) $(ACDEFINES
) $(INCLUDES
) $< 2>/dev
/null | sed
-e
"s|^[^ ]*/||" > $@
2008 $(MDDEPDIR
)/%.pp
: %.c
2010 @
$(MAKE_DEPS_NOAUTO
)
2012 $(MDDEPDIR
)/%.pp
: %.
cpp
2014 @
$(MAKE_DEPS_NOAUTO
)
2016 $(MDDEPDIR
)/%.pp
: %.s
2018 @
$(MAKE_DEPS_NOAUTO
)
2020 ifneq (,$(OBJS
)$(XPIDLSRCS
)$(SIMPLE_PROGRAMS
))
2021 depend
:: $(SUBMAKEFILES
) $(MAKE_DIRS
) $(MDDEPFILES
)
2023 depend
:: $(SUBMAKEFILES
)
2025 $(LOOP_OVER_PARALLEL_DIRS
)
2027 $(LOOP_OVER_TOOL_DIRS
)
2029 dependclean
:: $(SUBMAKEFILES
)
2031 $(LOOP_OVER_PARALLEL_DIRS
)
2033 $(LOOP_OVER_TOOL_DIRS
)
2035 endif # MOZ_AUTO_DEPS
2037 endif # COMPILER_DEPEND
2040 #############################################################################
2041 # MDDEPDIR is the subdirectory where all the dependency files are placed.
2042 # This uses a make rule (instead of a macro) to support parallel
2043 # builds (-jN). If this were done in the LOOP_OVER_DIRS macro, two
2044 # processes could simultaneously try to create the same directory.
2046 # We use $(CURDIR) in the rule's target to ensure that we don't find
2047 # a dependency directory in the source tree via VPATH (perhaps from
2048 # a previous build in the source tree) and thus neglect to create a
2049 # dependency directory in the object directory, where we really need
2052 $(CURDIR
)/$(MDDEPDIR
):
2053 @if
test ! -d
$@
; then echo Creating
$@
; rm -rf
$@
; mkdir
$@
; else true
; fi
2055 ifneq (,$(filter-out all chrome default
export realchrome tools
clean clobber clobber_all
distclean realclean,$(MAKECMDGOALS
)))
2056 ifneq (,$(OBJS
)$(XPIDLSRCS
)$(SIMPLE_PROGRAMS
))
2057 MDDEPEND_FILES
:= $(strip $(wildcard $(MDDEPDIR
)/*.pp
))
2059 ifneq (,$(MDDEPEND_FILES
))
2061 # The script mddepend.pl checks the dependencies and writes to stdout
2062 # one rule to force out-of-date objects. For example,
2063 # foo.o boo.o: FORCE
2064 # The script has an advantage over including the *.pp files directly
2065 # because it handles the case when header files are removed from the build.
2066 # 'make' would complain that there is no way to build missing headers.
2067 ifeq (,$(MAKE_RESTARTS
))
2068 $(MDDEPDIR
)/.
all.pp
: FORCE
2069 @
$(PERL
) $(BUILD_TOOLS
)/mddepend.pl
$@
$(MDDEPEND_FILES
)
2071 -include $(MDDEPDIR
)/.
all.pp
2073 include $(MDDEPEND_FILES
)
2079 #############################################################################
2081 -include $(topsrcdir
)/$(MOZ_BUILD_APP
)/app-rules.mk
2082 -include $(MY_RULES
)
2085 # This speeds up gmake's processing if these files don't exist.
2087 $(MY_CONFIG
) $(MY_RULES
):
2091 # Generate Emacs tags in a file named TAGS if ETAGS was set in $(MY_CONFIG)
2095 ifneq ($(CSRCS
)$(CPPSRCS
)$(HEADERS
),)
2097 TAGS
:: $(CSRCS
) $(CPPSRCS
) $(HEADERS
)
2098 $(ETAGS
) $(CSRCS
) $(CPPSRCS
) $(HEADERS
)
2102 ################################################################################
2103 # Special gmake rules.
2104 ################################################################################
2108 # Disallow parallel builds with MSVC < 8
2110 ifneq (,$(filter 1200 1300 1310,$(_MSC_VER
)))
2115 # Re-define the list of default suffixes, so gmake won't have to churn through
2116 # hundreds of built-in suffix rules for stuff we don't need.
2121 # Fake targets. Always run these rules, even if a file/directory with that
2122 # name already exists.
2124 .PHONY
: all alltags boot checkout chrome realchrome
clean clobber clobber_all
export install libs makefiles
realclean run_apprunner tools
$(DIRS
) $(TOOL_DIRS
) FORCE
2126 # Used as a dependency to force targets to rebuild
2129 # Delete target if error occurs when building target
2132 # Properly set LIBPATTERNS for the platform
2133 .LIBPATTERNS
= $(if
$(IMPORT_LIB_SUFFIX
),$(LIB_PREFIX
)%.
$(IMPORT_LIB_SUFFIX
)) $(LIB_PREFIX
)%.
$(LIB_SUFFIX
) $(DLL_PREFIX
)%$(DLL_SUFFIX
)
2137 TAGS
: $(SUBMAKEFILES
) $(CSRCS
) $(CPPSRCS
) $(wildcard *.h
)
2138 -etags
$(CSRCS
) $(CPPSRCS
) $(wildcard *.h
)
2139 $(LOOP_OVER_PARALLEL_DIRS
)
2149 @
$(foreach tier
,$(TIERS
),echo
'$(tier):'; echo
' dirs: $(tier_$(tier)_dirs)'; echo
' staticdirs: $(tier_$(tier)_staticdirs)'; )
2160 echo-requires-recursive
::
2161 ifdef _REPORT_ALL_DIRS
2162 @echo
$(subst $(topsrcdir
)/,,$(srcdir)): $(MODULE
): $(REQUIRES
)
2164 @
$(if
$(REQUIRES
),echo
$(subst $(topsrcdir
)/,,$(srcdir)): $(MODULE
): $(REQUIRES
))
2166 $(LOOP_OVER_PARALLEL_DIRS
)
2170 @
$(topsrcdir
)/build
/unix
/print-depth-path.sh
2173 @
$(topsrcdir
)/build
/package
/rpm
/print-module-name.sh
2175 echo-module-filelist
:
2176 @
$(topsrcdir
)/build
/package
/rpm
/print-module-filelist.sh
2179 ifneq (,$(filter $(PROGRAM
) $(HOST_PROGRAM
) $(SIMPLE_PROGRAMS
) $(HOST_LIBRARY
) $(LIBRARY
) $(SHARED_LIBRARY
),$(TARGETS
)))
2180 @echo
--------------------------------------------------------------------------------
2181 @echo
"PROGRAM = $(PROGRAM)"
2182 @echo
"SIMPLE_PROGRAMS = $(SIMPLE_PROGRAMS)"
2183 @echo
"LIBRARY = $(LIBRARY)"
2184 @echo
"SHARED_LIBRARY = $(SHARED_LIBRARY)"
2185 @echo
"SHARED_LIBRARY_LIBS = $(SHARED_LIBRARY_LIBS)"
2186 @echo
"LIBS = $(LIBS)"
2187 @echo
"DEF_FILE = $(DEF_FILE)"
2188 @echo
"IMPORT_LIBRARY = $(IMPORT_LIBRARY)"
2189 @echo
"STATIC_LIBS = $(STATIC_LIBS)"
2190 @echo
"SHARED_LIBS = $(SHARED_LIBS)"
2191 @echo
"EXTRA_DSO_LIBS = $(EXTRA_DSO_LIBS)"
2192 @echo
"EXTRA_DSO_LDOPTS = $(EXTRA_DSO_LDOPTS)"
2193 @echo
"DEPENDENT_LIBS = $(DEPENDENT_LIBS)"
2194 @echo
--------------------------------------------------------------------------------
2196 $(LOOP_OVER_PARALLEL_DIRS
)
2200 @echo
"MOZ_BUILD_ROOT = $(MOZ_BUILD_ROOT)"
2201 @echo
"MOZ_WIDGET_TOOLKIT = $(MOZ_WIDGET_TOOLKIT)"
2203 @echo
"CXX = $(CXX)"
2204 @echo
"CCC = $(CCC)"
2205 @echo
"CPP = $(CPP)"
2208 @echo
"IMPLIB = $(IMPLIB)"
2209 @echo
"FILTER = $(FILTER)"
2210 @echo
"MKSHLIB = $(MKSHLIB)"
2211 @echo
"MKCSHLIB = $(MKCSHLIB)"
2213 @echo
"CFLAGS = $(CFLAGS)"
2214 @echo
"OS_CFLAGS = $(OS_CFLAGS)"
2215 @echo
"COMPILE_CFLAGS = $(COMPILE_CFLAGS)"
2216 @echo
"CXXFLAGS = $(CXXFLAGS)"
2217 @echo
"OS_CXXFLAGS = $(OS_CXXFLAGS)"
2218 @echo
"COMPILE_CXXFLAGS = $(COMPILE_CXXFLAGS)"
2219 @echo
"COMPILE_CMFLAGS = $(COMPILE_CMFLAGS)"
2220 @echo
"COMPILE_CMMFLAGS = $(COMPILE_CMMFLAGS)"
2221 @echo
"LDFLAGS = $(LDFLAGS)"
2222 @echo
"OS_LDFLAGS = $(OS_LDFLAGS)"
2223 @echo
"DSO_LDOPTS = $(DSO_LDOPTS)"
2224 @echo
"OS_INCLUDES = $(OS_INCLUDES)"
2225 @echo
"OS_LIBS = $(OS_LIBS)"
2226 @echo
"EXTRA_LIBS = $(EXTRA_LIBS)"
2227 @echo
"BIN_FLAGS = $(BIN_FLAGS)"
2228 @echo
"INCLUDES = $(INCLUDES)"
2229 @echo
"DEFINES = $(DEFINES)"
2230 @echo
"ACDEFINES = $(ACDEFINES)"
2231 @echo
"BIN_SUFFIX = $(BIN_SUFFIX)"
2232 @echo
"LIB_SUFFIX = $(LIB_SUFFIX)"
2233 @echo
"DLL_SUFFIX = $(DLL_SUFFIX)"
2234 @echo
"IMPORT_LIB_SUFFIX = $(IMPORT_LIB_SUFFIX)"
2235 @echo
"INSTALL = $(INSTALL)"
2238 @echo
"HOST_CC = $(HOST_CC)"
2239 @echo
"HOST_CXX = $(HOST_CXX)"
2240 @echo
"HOST_CFLAGS = $(HOST_CFLAGS)"
2241 @echo
"HOST_LDFLAGS = $(HOST_LDFLAGS)"
2242 @echo
"HOST_LIBS = $(HOST_LIBS)"
2243 @echo
"HOST_EXTRA_LIBS = $(HOST_EXTRA_LIBS)"
2244 @echo
"HOST_EXTRA_DEPS = $(HOST_EXTRA_DEPS)"
2245 @echo
"HOST_PROGRAM = $(HOST_PROGRAM)"
2246 @echo
"HOST_OBJS = $(HOST_OBJS)"
2247 @echo
"HOST_PROGOBJS = $(HOST_PROGOBJS)"
2248 @echo
"HOST_LIBRARY = $(HOST_LIBRARY)"
2251 @echo
"Build Modules = $(BUILD_MODULES)"
2252 @echo
"Module dirs = $(BUILD_MODULE_DIRS)"
2256 $(DOXYGEN
) $(DEPTH
)/config
/doxygen.cfg
2259 check:: $(SUBMAKEFILES
) $(MAKE_DIRS
)
2260 $(LOOP_OVER_PARALLEL_DIRS
)
2262 $(LOOP_OVER_TOOL_DIRS
)
2266 FREEZE_VARIABLES
= \
2279 $(foreach var
,$(FREEZE_VARIABLES
),$(eval
$(var
)_FROZEN
:= '$($(var))'))
2281 CHECK_FROZEN_VARIABLES
= $(foreach var
,$(FREEZE_VARIABLES
), \
2282 $(if
$(subst $($(var
)_FROZEN
),,'$($(var))'),$(error Makefile variable
'$(var)' changed value after including rules.mk. Was
$($(var
)_FROZEN
), now
$($(var
)).
)))
2285 $(CHECK_FROZEN_VARIABLES
)