Index: third_party/nspr/mozilla/nsprpub/config/rules.mk |
diff --git a/third_party/nspr/mozilla/nsprpub/config/rules.mk b/third_party/nspr/mozilla/nsprpub/config/rules.mk |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e69b48b95734547c31dbd8e1819d939054a851ad |
--- /dev/null |
+++ b/third_party/nspr/mozilla/nsprpub/config/rules.mk |
@@ -0,0 +1,492 @@ |
+#! gmake |
+# |
+# ***** BEGIN LICENSE BLOCK ***** |
+# Version: MPL 1.1/GPL 2.0/LGPL 2.1 |
+# |
+# The contents of this file are subject to the Mozilla Public License Version |
+# 1.1 (the "License"); you may not use this file except in compliance with |
+# the License. You may obtain a copy of the License at |
+# http://www.mozilla.org/MPL/ |
+# |
+# Software distributed under the License is distributed on an "AS IS" basis, |
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License |
+# for the specific language governing rights and limitations under the |
+# License. |
+# |
+# The Original Code is the Netscape Portable Runtime (NSPR). |
+# |
+# The Initial Developer of the Original Code is |
+# Netscape Communications Corporation. |
+# Portions created by the Initial Developer are Copyright (C) 1998-2000 |
+# the Initial Developer. All Rights Reserved. |
+# |
+# Contributor(s): |
+# |
+# Alternatively, the contents of this file may be used under the terms of |
+# either the GNU General Public License Version 2 or later (the "GPL"), or |
+# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
+# in which case the provisions of the GPL or the LGPL are applicable instead |
+# of those above. If you wish to allow use of your version of this file only |
+# under the terms of either the GPL or the LGPL, and not to allow others to |
+# use your version of this file under the terms of the MPL, indicate your |
+# decision by deleting the provisions above and replace them with the notice |
+# and other provisions required by the GPL or the LGPL. If you do not delete |
+# the provisions above, a recipient may use your version of this file under |
+# the terms of any one of the MPL, the GPL or the LGPL. |
+# |
+# ***** END LICENSE BLOCK ***** |
+ |
+################################################################################ |
+# We used to have a 4 pass build process. Now we do everything in one pass. |
+# |
+# export - Create generated headers and stubs. Publish public headers to |
+# dist/<arch>/include. |
+# Create libraries. Publish libraries to dist/<arch>/lib. |
+# Create programs. |
+# |
+# libs - obsolete. Now a synonym of "export". |
+# |
+# all - the default makefile target. Now a synonym of "export". |
+# |
+# install - Install headers, libraries, and programs on the system. |
+# |
+# Parameters to this makefile (set these before including): |
+# |
+# a) |
+# TARGETS -- the target to create |
+# (defaults to $LIBRARY $PROGRAM) |
+# b) |
+# DIRS -- subdirectories for make to recurse on |
+# (the 'all' rule builds $TARGETS $DIRS) |
+# c) |
+# CSRCS -- .c files to compile |
+# (used to define $OBJS) |
+# d) |
+# PROGRAM -- the target program name to create from $OBJS |
+# ($OBJDIR automatically prepended to it) |
+# e) |
+# LIBRARY -- the target library name to create from $OBJS |
+# ($OBJDIR automatically prepended to it) |
+# |
+################################################################################ |
+ |
+ifndef topsrcdir |
+topsrcdir=$(MOD_DEPTH) |
+endif |
+ |
+ifndef srcdir |
+srcdir=. |
+endif |
+ |
+ifndef NSPR_CONFIG_MK |
+include $(topsrcdir)/config/config.mk |
+endif |
+ |
+ifdef USE_AUTOCONF |
+ifdef CROSS_COMPILE |
+ifdef INTERNAL_TOOLS |
+CC=$(HOST_CC) |
+CCC=$(HOST_CXX) |
+CFLAGS=$(HOST_CFLAGS) |
+CXXFLAGS=$(HOST_CXXFLAGS) |
+LDFLAGS=$(HOST_LDFLAGS) |
+endif |
+endif |
+endif |
+ |
+# |
+# This makefile contains rules for building the following kinds of |
+# libraries: |
+# - LIBRARY: a static (archival) library |
+# - SHARED_LIBRARY: a shared (dynamic link) library |
+# - IMPORT_LIBRARY: an import library, used only on Windows and OS/2 |
+# |
+# The names of these libraries can be generated by simply specifying |
+# LIBRARY_NAME and LIBRARY_VERSION. |
+# |
+ |
+ifdef LIBRARY_NAME |
+ifeq (,$(filter-out WINNT OS2,$(OS_ARCH))) |
+ |
+# |
+# Win95, Win16, and OS/2 require library names conforming to the 8.3 rule. |
+# other platforms do not. |
+# |
+ifeq (,$(filter-out WIN95 OS2,$(OS_TARGET))) |
+LIBRARY = $(OBJDIR)/$(LIBRARY_NAME)$(LIBRARY_VERSION)_s.$(LIB_SUFFIX) |
+SHARED_LIBRARY = $(OBJDIR)/$(LIBRARY_NAME)$(LIBRARY_VERSION).$(DLL_SUFFIX) |
+IMPORT_LIBRARY = $(OBJDIR)/$(LIBRARY_NAME)$(LIBRARY_VERSION).$(LIB_SUFFIX) |
+SHARED_LIB_PDB = $(OBJDIR)/$(LIBRARY_NAME)$(LIBRARY_VERSION).pdb |
+else |
+LIBRARY = $(OBJDIR)/lib$(LIBRARY_NAME)$(LIBRARY_VERSION)_s.$(LIB_SUFFIX) |
+SHARED_LIBRARY = $(OBJDIR)/lib$(LIBRARY_NAME)$(LIBRARY_VERSION).$(DLL_SUFFIX) |
+IMPORT_LIBRARY = $(OBJDIR)/lib$(LIBRARY_NAME)$(LIBRARY_VERSION).$(LIB_SUFFIX) |
+SHARED_LIB_PDB = $(OBJDIR)/lib$(LIBRARY_NAME)$(LIBRARY_VERSION).pdb |
+endif |
+ |
+else |
+ |
+LIBRARY = $(OBJDIR)/lib$(LIBRARY_NAME)$(LIBRARY_VERSION).$(LIB_SUFFIX) |
+ifeq ($(OS_ARCH)$(OS_RELEASE), AIX4.1) |
+SHARED_LIBRARY = $(OBJDIR)/lib$(LIBRARY_NAME)$(LIBRARY_VERSION)_shr.a |
+else |
+ifdef MKSHLIB |
+SHARED_LIBRARY = $(OBJDIR)/lib$(LIBRARY_NAME)$(LIBRARY_VERSION).$(DLL_SUFFIX) |
+endif |
+endif |
+ |
+endif |
+endif |
+ |
+ifndef TARGETS |
+ifeq (,$(filter-out WINNT OS2,$(OS_ARCH))) |
+TARGETS = $(LIBRARY) $(SHARED_LIBRARY) $(IMPORT_LIBRARY) |
+ifndef BUILD_OPT |
+ifdef MSC_VER |
+ifneq (,$(filter-out 1100 1200,$(MSC_VER))) |
+TARGETS += $(SHARED_LIB_PDB) |
+endif |
+endif |
+endif |
+else |
+TARGETS = $(LIBRARY) $(SHARED_LIBRARY) |
+endif |
+endif |
+ |
+# |
+# OBJS is the list of object files. It can be constructed by |
+# specifying CSRCS (list of C source files) and ASFILES (list |
+# of assembly language source files). |
+# |
+ |
+ifndef OBJS |
+OBJS = $(addprefix $(OBJDIR)/,$(CSRCS:.c=.$(OBJ_SUFFIX))) \ |
+ $(addprefix $(OBJDIR)/,$(ASFILES:.$(ASM_SUFFIX)=.$(OBJ_SUFFIX))) |
+endif |
+ |
+ALL_TRASH = $(TARGETS) $(OBJS) $(RES) $(filter-out . .., $(OBJDIR)) LOGS TAGS $(GARBAGE) \ |
+ $(NOSUCHFILE) \ |
+ so_locations |
+ |
+ifeq ($(OS_ARCH),OpenVMS) |
+ALL_TRASH += $(wildcard *.c*_defines) |
+ifdef SHARED_LIBRARY |
+VMS_SYMVEC_FILE = $(SHARED_LIBRARY:.$(DLL_SUFFIX)=_symvec.opt) |
+VMS_SYMVEC_FILE_MODULE = $(srcdir)/$(LIBRARY_NAME)_symvec.opt |
+ALL_TRASH += $(VMS_SYMVEC_FILE) |
+endif |
+endif |
+ |
+ifndef RELEASE_LIBS_DEST |
+RELEASE_LIBS_DEST = $(RELEASE_LIB_DIR) |
+endif |
+ |
+ifdef DIRS |
+LOOP_OVER_DIRS = \ |
+ @for d in $(DIRS); do \ |
+ if test -d $$d; then \ |
+ set -e; \ |
+ echo "cd $$d; $(MAKE) $@"; \ |
+ $(MAKE) -C $$d $@; \ |
+ set +e; \ |
+ else \ |
+ echo "Skipping non-directory $$d..."; \ |
+ fi; \ |
+ done |
+endif |
+ |
+################################################################################ |
+ |
+all:: export |
+ |
+export:: |
+ +$(LOOP_OVER_DIRS) |
+ |
+libs:: export |
+ |
+clean:: |
+ rm -rf $(OBJS) $(RES) so_locations $(NOSUCHFILE) $(GARBAGE) |
+ +$(LOOP_OVER_DIRS) |
+ |
+clobber:: |
+ rm -rf $(OBJS) $(RES) $(TARGETS) $(filter-out . ..,$(OBJDIR)) $(GARBAGE) so_locations $(NOSUCHFILE) |
+ +$(LOOP_OVER_DIRS) |
+ |
+realclean clobber_all:: |
+ rm -rf $(wildcard *.OBJ *.OBJD) dist $(ALL_TRASH) |
+ +$(LOOP_OVER_DIRS) |
+ |
+distclean:: |
+ rm -rf $(wildcard *.OBJ *.OBJD) dist $(ALL_TRASH) $(DIST_GARBAGE) |
+ +$(LOOP_OVER_DIRS) |
+ |
+install:: $(RELEASE_BINS) $(RELEASE_HEADERS) $(RELEASE_LIBS) |
+ifdef RELEASE_BINS |
+ $(NSINSTALL) -t -m 0755 $(RELEASE_BINS) $(DESTDIR)$(bindir) |
+endif |
+ifdef RELEASE_HEADERS |
+ $(NSINSTALL) -t -m 0644 $(RELEASE_HEADERS) $(DESTDIR)$(includedir)/$(include_subdir) |
+endif |
+ifdef RELEASE_LIBS |
+ $(NSINSTALL) -t -m 0755 $(RELEASE_LIBS) $(DESTDIR)$(libdir)/$(lib_subdir) |
+endif |
+ +$(LOOP_OVER_DIRS) |
+ |
+release:: export |
+ifdef RELEASE_BINS |
+ @echo "Copying executable programs and scripts to release directory" |
+ @if test -z "$(BUILD_NUMBER)"; then \ |
+ echo "BUILD_NUMBER must be defined"; \ |
+ false; \ |
+ else \ |
+ true; \ |
+ fi |
+ @if test ! -d $(RELEASE_BIN_DIR); then \ |
+ rm -rf $(RELEASE_BIN_DIR); \ |
+ $(NSINSTALL) -D $(RELEASE_BIN_DIR);\ |
+ else \ |
+ true; \ |
+ fi |
+ cp $(RELEASE_BINS) $(RELEASE_BIN_DIR) |
+endif |
+ifdef RELEASE_LIBS |
+ @echo "Copying libraries to release directory" |
+ @if test -z "$(BUILD_NUMBER)"; then \ |
+ echo "BUILD_NUMBER must be defined"; \ |
+ false; \ |
+ else \ |
+ true; \ |
+ fi |
+ @if test ! -d $(RELEASE_LIBS_DEST); then \ |
+ rm -rf $(RELEASE_LIBS_DEST); \ |
+ $(NSINSTALL) -D $(RELEASE_LIBS_DEST);\ |
+ else \ |
+ true; \ |
+ fi |
+ cp $(RELEASE_LIBS) $(RELEASE_LIBS_DEST) |
+endif |
+ifdef RELEASE_HEADERS |
+ @echo "Copying header files to release directory" |
+ @if test -z "$(BUILD_NUMBER)"; then \ |
+ echo "BUILD_NUMBER must be defined"; \ |
+ false; \ |
+ else \ |
+ true; \ |
+ fi |
+ @if test ! -d $(RELEASE_HEADERS_DEST); then \ |
+ rm -rf $(RELEASE_HEADERS_DEST); \ |
+ $(NSINSTALL) -D $(RELEASE_HEADERS_DEST);\ |
+ else \ |
+ true; \ |
+ fi |
+ cp $(RELEASE_HEADERS) $(RELEASE_HEADERS_DEST) |
+endif |
+ +$(LOOP_OVER_DIRS) |
+ |
+alltags: |
+ rm -f TAGS tags |
+ find . -name dist -prune -o \( -name '*.[hc]' -o -name '*.cp' -o -name '*.cpp' \) -print | xargs etags -a |
+ find . -name dist -prune -o \( -name '*.[hc]' -o -name '*.cp' -o -name '*.cpp' \) -print | xargs ctags -a |
+ |
+$(NFSPWD): |
+ cd $(@D); $(MAKE) $(@F) |
+ |
+$(PROGRAM): $(OBJS) |
+ @$(MAKE_OBJDIR) |
+ifeq ($(NS_USE_GCC)_$(OS_ARCH),_WINNT) |
+ $(CC) $(OBJS) -Fe$@ -link $(LDFLAGS) $(OS_LIBS) $(EXTRA_LIBS) |
+ifdef MT |
+ @if test -f $@.manifest; then \ |
+ $(MT) -NOLOGO -MANIFEST $@.manifest -OUTPUTRESOURCE:$@\;1; \ |
+ rm -f $@.manifest; \ |
+ fi |
+endif # MSVC with manifest tool |
+else # WINNT && !GCC |
+ $(CC) -o $@ $(CFLAGS) $(OBJS) $(LDFLAGS) |
+endif # WINNT && !GCC |
+ifdef ENABLE_STRIP |
+ $(STRIP) $@ |
+endif |
+ |
+$(LIBRARY): $(OBJS) |
+ @$(MAKE_OBJDIR) |
+ rm -f $@ |
+ $(AR) $(AR_FLAGS) $(OBJS) $(AR_EXTRA_ARGS) |
+ $(RANLIB) $@ |
+ |
+ifeq ($(OS_TARGET), OS2) |
+$(IMPORT_LIBRARY): $(MAPFILE) |
+ rm -f $@ |
+ $(IMPLIB) $@ $(MAPFILE) |
+endif |
+ |
+$(SHARED_LIBRARY): $(OBJS) $(RES) $(MAPFILE) |
+ @$(MAKE_OBJDIR) |
+ rm -f $@ |
+ifeq ($(OS_ARCH)$(OS_RELEASE), AIX4.1) |
+ echo "#!" > $(OBJDIR)/lib$(LIBRARY_NAME)_syms |
+ nm -B -C -g $(OBJS) \ |
+ | awk '/ [T,D] / {print $$3}' \ |
+ | sed -e 's/^\.//' \ |
+ | sort -u >> $(OBJDIR)/lib$(LIBRARY_NAME)_syms |
+ $(LD) $(XCFLAGS) -o $@ $(OBJS) -bE:$(OBJDIR)/lib$(LIBRARY_NAME)_syms \ |
+ -bM:SRE -bnoentry $(OS_LIBS) $(EXTRA_LIBS) |
+else # AIX 4.1 |
+ifeq ($(NS_USE_GCC)_$(OS_ARCH),_WINNT) |
+ $(LINK_DLL) -MAP $(DLLBASE) $(DLL_LIBS) $(EXTRA_LIBS) $(OBJS) $(RES) |
+ifdef MT |
+ @if test -f $@.manifest; then \ |
+ $(MT) -NOLOGO -MANIFEST $@.manifest -OUTPUTRESOURCE:$@\;2; \ |
+ rm -f $@.manifest; \ |
+ fi |
+endif # MSVC with manifest tool |
+else # WINNT && !GCC |
+ifeq ($(OS_TARGET), OpenVMS) |
+ @if test ! -f $(VMS_SYMVEC_FILE); then \ |
+ if test -f $(VMS_SYMVEC_FILE_MODULE); then \ |
+ echo Creating component options file $(VMS_SYMVEC_FILE); \ |
+ cp $(VMS_SYMVEC_FILE_MODULE) $(VMS_SYMVEC_FILE); \ |
+ fi; \ |
+ fi |
+endif # OpenVMS |
+ $(MKSHLIB) $(OBJS) $(RES) $(EXTRA_LIBS) |
+endif # WINNT && !GCC |
+endif # AIX 4.1 |
+ifdef ENABLE_STRIP |
+ $(STRIP) $@ |
+endif |
+ |
+ifeq ($(OS_ARCH),WINNT) |
+$(RES): $(RESNAME) |
+ @$(MAKE_OBJDIR) |
+# The resource compiler does not understand the -U option. |
+ifdef NS_USE_GCC |
+ $(RC) $(RCFLAGS) $(filter-out -U%,$(DEFINES)) $(INCLUDES:-I%=--include-dir %) -o $@ $< |
+else |
+ $(RC) $(RCFLAGS) $(filter-out -U%,$(DEFINES)) $(INCLUDES) -Fo$@ $< |
+endif # GCC |
+ @echo $(RES) finished |
+endif |
+ |
+$(MAPFILE): $(LIBRARY_NAME).def |
+ @$(MAKE_OBJDIR) |
+ifeq ($(OS_ARCH),SunOS) |
+ grep -v ';-' $< | \ |
+ sed -e 's,;+,,' -e 's; DATA ;;' -e 's,;;,,' -e 's,;.*,;,' > $@ |
+endif |
+ifeq ($(OS_ARCH),OS2) |
+ echo LIBRARY $(LIBRARY_NAME)$(LIBRARY_VERSION) INITINSTANCE TERMINSTANCE > $@ |
+ echo PROTMODE >> $@ |
+ echo CODE LOADONCALL MOVEABLE DISCARDABLE >> $@ |
+ echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $@ |
+ echo EXPORTS >> $@ |
+ grep -v ';+' $< | grep -v ';-' | \ |
+ sed -e 's; DATA ;;' -e 's,;;,,' -e 's,;.*,,' -e 's,\([\t ]*\),\1_,' | \ |
+ awk 'BEGIN {ord=1;} { print($$0 " @" ord " RESIDENTNAME"); ord++;}' >> $@ |
+ $(ADD_TO_DEF_FILE) |
+endif |
+ |
+# |
+# Translate source filenames to absolute paths. This is required for |
+# debuggers under Windows and OS/2 to find source files automatically. |
+# |
+ |
+ifeq (,$(filter-out AIX OS2,$(OS_ARCH))) |
+NEED_ABSOLUTE_PATH = 1 |
+endif |
+ |
+ifeq ($(NS_USE_GCC)_$(OS_ARCH),_WINNT) |
+NEED_ABSOLUTE_PATH = 1 |
+endif |
+ |
+ifdef NEED_ABSOLUTE_PATH |
+PWD := $(shell pwd) |
+abspath = $(if $(findstring :,$(1)),$(1),$(if $(filter /%,$(1)),$(1),$(PWD)/$(1))) |
+endif |
+ |
+$(OBJDIR)/%.$(OBJ_SUFFIX): %.cpp |
+ @$(MAKE_OBJDIR) |
+ifeq ($(NS_USE_GCC)_$(OS_ARCH),_WINNT) |
+ $(CCC) -Fo$@ -c $(CCCFLAGS) $(call abspath,$<) |
+else |
+ifdef NEED_ABSOLUTE_PATH |
+ $(CCC) -o $@ -c $(CCCFLAGS) $(call abspath,$<) |
+else |
+ $(CCC) -o $@ -c $(CCCFLAGS) $< |
+endif |
+endif |
+ |
+WCCFLAGS1 = $(subst /,\\,$(CFLAGS)) |
+WCCFLAGS2 = $(subst -I,-i=,$(WCCFLAGS1)) |
+WCCFLAGS3 = $(subst -D,-d,$(WCCFLAGS2)) |
+$(OBJDIR)/%.$(OBJ_SUFFIX): %.c |
+ @$(MAKE_OBJDIR) |
+ifeq ($(NS_USE_GCC)_$(OS_ARCH),_WINNT) |
+ $(CC) -Fo$@ -c $(CFLAGS) $(call abspath,$<) |
+else |
+ifdef NEED_ABSOLUTE_PATH |
+ $(CC) -o $@ -c $(CFLAGS) $(call abspath,$<) |
+else |
+ $(CC) -o $@ -c $(CFLAGS) $< |
+endif |
+endif |
+ |
+ |
+$(OBJDIR)/%.$(OBJ_SUFFIX): %.s |
+ @$(MAKE_OBJDIR) |
+ $(AS) -o $@ $(ASFLAGS) -c $< |
+ |
+%.i: %.c |
+ $(CC) -C -E $(CFLAGS) $< > $*.i |
+ |
+%: %.pl |
+ rm -f $@; cp $< $@; chmod +x $@ |
+ |
+# |
+# HACK ALERT |
+# |
+# The only purpose of this rule is to pass Mozilla's Tinderbox depend |
+# builds (http://tinderbox.mozilla.org/showbuilds.cgi). Mozilla's |
+# Tinderbox builds NSPR continuously as part of the Mozilla client. |
+# Because NSPR's make depend is not implemented, whenever we change |
+# an NSPR header file, the depend build does not recompile the NSPR |
+# files that depend on the header. |
+# |
+# This rule makes all the objects depend on a dummy header file. |
+# Touch this dummy header file to force the depend build to recompile |
+# everything. |
+# |
+# This rule should be removed when make depend is implemented. |
+# |
+ |
+DUMMY_DEPEND_H = $(topsrcdir)/config/prdepend.h |
+ |
+$(filter $(OBJDIR)/%.$(OBJ_SUFFIX),$(OBJS)): $(OBJDIR)/%.$(OBJ_SUFFIX): $(DUMMY_DEPEND_H) |
+ |
+# END OF HACK |
+ |
+################################################################################ |
+# Special gmake rules. |
+################################################################################ |
+ |
+# |
+# Re-define the list of default suffixes, so gmake won't have to churn through |
+# hundreds of built-in suffix rules for stuff we don't need. |
+# |
+.SUFFIXES: |
+.SUFFIXES: .a .$(OBJ_SUFFIX) .c .cpp .s .h .i .pl |
+ |
+# |
+# Fake targets. Always run these rules, even if a file/directory with that |
+# name already exists. |
+# |
+.PHONY: all alltags clean export install libs realclean release |
+ |
+# |
+# List the target pattern of an implicit rule as a dependency of the |
+# special target .PRECIOUS to preserve intermediate files made by |
+# implicit rules whose target patterns match that file's name. |
+# (See GNU Make documentation, Edition 0.51, May 1996, Sec. 10.4, |
+# p. 107.) |
+# |
+.PRECIOUS: $(OBJDIR)/%.$(OBJ_SUFFIX) |