Compare commits

..

1 Commits

Author SHA1 Message Date
(no author)
3dc6223fe2 This commit was manufactured by cvs2svn to create branch
'NGLayoutStability2_BRACH'.

git-svn-id: svn://10.0.0.236/branches/NGLayoutStability2_BRACH@8199 18797224-902f-48f8-a5cc-f745e15eee43
1998-08-19 20:42:15 +00:00
8 changed files with 1007 additions and 816 deletions

View File

@@ -1,816 +0,0 @@
# ***** 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 mozilla.org code.
#
# The Initial Developer of the Original Code is
# Netscape Communications Corporation.
# Portions created by the Initial Developer are Copyright (C) 1998
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
# Stephen Lamm
# Benjamin Smedberg <bsmedberg@covad.net>
# Chase Phillips <chase@mozilla.org>
#
# 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 *****
# Build a mozilla application.
#
# To checkout and build a tree,
# 1. cvs co mozilla/client.mk
# 2. cd mozilla
# 3. create your .mozconfig file with
# mk_add_options MOZ_CO_PROJECT=suite,browser,mail,minimo,xulrunner
# 4. gmake -f client.mk
#
# This script will pick up the CVSROOT from the CVS/Root file. If you wish
# to use a different CVSROOT, you must set CVSROOT in your environment:
#
# export CVSROOT=:pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot
# export CVSROOT=:pserver:username%somedomain.org@cvs.mozilla.org:/cvsroot
#
# You must specify which products/modules you wish to checkout, with
# MOZ_CO_PROJECT, MOZ_CO_MODULE, and BUILD_MODULES variables.
#
# MOZ_CO_PROJECT possibilities include the following:
# suite (Seamonkey suite)
# browser (aka Firefox)
# mail (aka Thunderbird)
# minimo (small browser for devices)
# composer (standalone composer, aka NVU)
# calendar (aka Sunbird, use this to build the calendar extensions also)
# xulrunner
# macbrowser (aka Camino)
#
# Other common MOZ_CO_MODULE options include the following:
# mozilla/other-licenses/libart_lgpl
# mozilla/other-licenses/bsdiff
# mozilla/tools/codesighs
#
# Other targets (gmake -f client.mk [targets...]),
# checkout
# build
# clean (realclean is now the same as clean)
# distclean
#
# See http://www.mozilla.org/build/ for more information.
#
# Options:
# MOZ_OBJDIR - Destination object directory
# MOZ_CO_DATE - Date tag to use for checkout (default: none)
# MOZ_CO_MODULE - Module to checkout
# MOZ_CVS_FLAGS - Flags to pass cvs (default: -q -z3)
# MOZ_CO_FLAGS - Flags to pass after 'cvs co' (default: -P)
# MOZ_MAKE_FLAGS - Flags to pass to $(MAKE)
# MOZ_CO_LOCALES - localizations to pull (MOZ_CO_LOCALES="de-DE,pt-BR")
# MOZ_LOCALE_DIRS - directories which contain localizations
# LOCALES_CVSROOT - CVSROOT to use to pull localizations
#
AVAILABLE_PROJECTS = \
all \
suite \
toolkit \
browser \
mail \
minimo \
composer \
calendar \
xulrunner \
macbrowser \
$(NULL)
MODULES_core := \
SeaMonkeyAll \
mozilla/browser/config/version.txt \
mozilla/mail/config/version.txt \
mozilla/ipc/ipcd \
mozilla/modules/libpr0n \
mozilla/modules/libmar \
mozilla/modules/libbz2 \
mozilla/accessible \
mozilla/security/manager \
mozilla/toolkit \
mozilla/storage \
mozilla/db/sqlite3 \
$(NULL)
LOCALES_core := \
netwerk \
dom \
$(NULL)
MODULES_toolkit := \
$(MODULES_core) \
mozilla/chrome \
$(NULL)
LOCALES_toolkit := \
$(LOCALES_core) \
toolkit \
security/manager \
$(NULL)
MODULES_suite := \
$(MODULES_core) \
mozilla/suite \
$(NULL)
LOCALES_suite := \
$(LOCALES_core) \
$(NULL)
MODULES_browser := \
$(MODULES_toolkit) \
mozilla/browser \
mozilla/other-licenses/branding/firefox \
mozilla/other-licenses/7zstub/firefox \
$(NULL)
LOCALES_browser := \
$(LOCALES_toolkit) \
browser \
other-licenses/branding/firefox \
$(NULL)
BOOTSTRAP_browser := mozilla/browser/config/mozconfig
MODULES_minimo := \
$(MODULES_toolkit) \
mozilla/minimo \
$(NULL)
MODULES_mail := \
$(MODULES_toolkit) \
mozilla/mail \
mozilla/other-licenses/branding/thunderbird \
mozilla/other-licenses/7zstub/thunderbird \
$(NULL)
LOCALES_mail := \
$(LOCALES_toolkit) \
mail \
other-licenses/branding/thunderbird \
editor/ui \
$(NULL)
BOOTSTRAP_mail := mozilla/mail/config/mozconfig
MODULES_composer := \
$(MODULES_toolkit) \
mozilla/composer \
$(NULL)
MODULES_calendar := \
$(MODULES_toolkit) \
mozilla/storage \
mozilla/db/sqlite3 \
mozilla/calendar \
$(NULL)
BOOTSTRAP_calendar := mozilla/calendar/sunbird/config/mozconfig
MODULES_xulrunner := \
$(MODULES_toolkit) \
mozilla/xulrunner \
$(NULL)
LOCALES_xulrunner := \
$(LOCALES_toolkit) \
$(NULL)
BOOTSTRAP_xulrunner := mozilla/xulrunner/config/mozconfig
MODULES_macbrowser := \
$(MODULES_core) \
mozilla/camino \
$(NULL)
BOOTSTRAP_macbrowser := mozilla/camino/config/mozconfig
MODULES_all := \
mozilla/other-licenses/bsdiff \
mozilla/other-licenses/libart_lgpl \
mozilla/tools/trace-malloc \
mozilla/tools/jprof \
mozilla/tools/codesighs \
mozilla/tools/update-packaging \
mozilla/other-licenses/branding \
mozilla/other-licenses/7zstub \
$(NULL)
#######################################################################
# Checkout Tags
#
# For branches, uncomment the MOZ_CO_TAG line with the proper tag,
# and commit this file on that tag.
MOZ_CO_TAG = MOZILLA_1_8_BRANCH
NSPR_CO_TAG = MOZILLA_1_8_BRANCH
NSS_CO_TAG = MOZILLA_1_8_BRANCH
LDAPCSDK_CO_TAG = MOZILLA_1_8_BRANCH
LOCALES_CO_TAG = MOZILLA_1_8_BRANCH
BUILD_MODULES = all
#######################################################################
# Defines
#
CVS = cvs
comma := ,
CWD := $(shell pwd)
ifeq "$(CWD)" "/"
CWD := /.
endif
ifneq (, $(wildcard client.mk))
# Ran from mozilla directory
ROOTDIR := $(shell dirname $(CWD))
TOPSRCDIR := $(CWD)
else
# Ran from mozilla/.. directory (?)
ROOTDIR := $(CWD)
TOPSRCDIR := $(CWD)/mozilla
endif
# on os2, TOPSRCDIR may have two forward slashes in a row, which doesn't
# work; replace first instance with one forward slash
TOPSRCDIR := $(shell echo "$(TOPSRCDIR)" | sed -e 's%//%/%')
ifndef TOPSRCDIR_MOZ
TOPSRCDIR_MOZ=$(TOPSRCDIR)
endif
# if ROOTDIR equals only drive letter (i.e. "C:"), set to "/"
DIRNAME := $(shell echo "$(ROOTDIR)" | sed -e 's/^.://')
ifeq ($(DIRNAME),)
ROOTDIR := /.
endif
AUTOCONF := autoconf
MKDIR := mkdir
SH := /bin/sh
ifndef MAKE
MAKE := gmake
endif
CONFIG_GUESS_SCRIPT := $(wildcard $(TOPSRCDIR)/build/autoconf/config.guess)
ifdef CONFIG_GUESS_SCRIPT
CONFIG_GUESS = $(shell $(CONFIG_GUESS_SCRIPT))
else
_IS_FIRST_CHECKOUT := 1
endif
####################################
# CVS
# Add the CVS root to CVS_FLAGS if needed
CVS_ROOT_IN_TREE := $(shell cat $(TOPSRCDIR)/CVS/Root 2>/dev/null)
ifneq ($(CVS_ROOT_IN_TREE),)
ifneq ($(CVS_ROOT_IN_TREE),$(CVSROOT))
CVS_FLAGS := -d $(CVS_ROOT_IN_TREE)
endif
endif
CVS_CO_DATE_FLAGS = $(if $(MOZ_CO_DATE),-D "$(MOZ_CO_DATE)")
CVSCO = $(CVS) $(CVS_FLAGS) co $(MOZ_CO_FLAGS) $(if $(MOZ_CO_TAG),-r $(MOZ_CO_TAG)) $(CVS_CO_DATE_FLAGS)
CVSCO_LOGFILE := $(ROOTDIR)/cvsco.log
CVSCO_LOGFILE := $(shell echo $(CVSCO_LOGFILE) | sed s%//%/%)
# if LOCALES_CVSROOT is not specified, set it here
# (and let mozconfig override it)
LOCALES_CVSROOT ?= :pserver:anonymous@cvs-mirror.mozilla.org:/l10n
####################################
# Load mozconfig Options
# See build pages, http://www.mozilla.org/build/ for how to set up mozconfig.
MOZCONFIG_LOADER := mozilla/build/autoconf/mozconfig2client-mk
MOZCONFIG_FINDER := mozilla/build/autoconf/mozconfig-find
MOZCONFIG_MODULES := mozilla/build/unix/modules.mk mozilla/build/unix/uniq.pl
run_for_side_effects := \
$(shell cd $(ROOTDIR); \
if test "$(_IS_FIRST_CHECKOUT)"; then \
$(CVSCO) $(MOZCONFIG_FINDER) $(MOZCONFIG_LOADER) $(MOZCONFIG_MODULES); \
else true; \
fi; \
$(MOZCONFIG_LOADER) $(TOPSRCDIR) mozilla/.mozconfig.mk > mozilla/.mozconfig.out)
include $(TOPSRCDIR)/.mozconfig.mk
include $(TOPSRCDIR)/build/unix/modules.mk
####################################
# Options that may come from mozconfig
MOZ_PROJECT_LIST := $(subst $(comma), ,$(MOZ_CO_PROJECT))
ifneq (,$(filter-out $(AVAILABLE_PROJECTS),$(MOZ_PROJECT_LIST)))
$(error MOZ_CO_PROJECT contains an unrecognized project.)
endif
ifeq (all,$(filter all,$(MOZ_PROJECT_LIST)))
MOZ_PROJECT_LIST := $(AVAILABLE_PROJECTS)
endif
MOZ_MODULE_LIST := $(subst $(comma), ,$(MOZ_CO_MODULE)) $(foreach project,$(MOZ_PROJECT_LIST),$(MODULES_$(project)))
LOCALE_DIRS := $(MOZ_LOCALE_DIRS) $(foreach project,$(MOZ_PROJECT_LIST),$(LOCALES_$(project)))
MOZCONFIG_MODULES += $(foreach project,$(MOZ_PROJECT_LIST),$(BOOTSTRAP_$(project)))
# Using $(sort) here because it also removes duplicate entries.
MOZ_MODULE_LIST := $(sort $(MOZ_MODULE_LIST))
LOCALE_DIRS := $(sort $(LOCALE_DIRS))
MOZCONFIG_MODULES := $(sort $(MOZCONFIG_MODULES))
# Change CVS flags if anonymous root is requested
ifdef MOZ_CO_USE_MIRROR
CVS_FLAGS := -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot
endif
# MOZ_CVS_FLAGS - Basic CVS flags
ifeq "$(origin MOZ_CVS_FLAGS)" "undefined"
CVS_FLAGS := $(CVS_FLAGS) -q -z 3
else
CVS_FLAGS := $(MOZ_CVS_FLAGS)
endif
ifdef MOZ_OBJDIR
OBJDIR := $(MOZ_OBJDIR)
MOZ_MAKE := $(MAKE) $(MOZ_MAKE_FLAGS) -C $(OBJDIR)
else
OBJDIR := $(TOPSRCDIR)
MOZ_MAKE := $(MAKE) $(MOZ_MAKE_FLAGS)
endif
####################################
# CVS defines for NSS
#
NSS_CO_MODULE = \
mozilla/security/nss \
mozilla/security/coreconf \
$(NULL)
NSS_CO_FLAGS := -P
ifdef MOZ_CO_FLAGS
NSS_CO_FLAGS := $(MOZ_CO_FLAGS)
endif
NSS_CO_FLAGS := $(NSS_CO_FLAGS) $(if $(NSS_CO_TAG),-r $(NSS_CO_TAG),-A)
# Cannot pull static tags by date
ifeq ($(NSS_CO_TAG),NSS_CLIENT_TAG)
CVSCO_NSS = $(CVS) $(CVS_FLAGS) co $(NSS_CO_FLAGS) $(NSS_CO_MODULE)
else
CVSCO_NSS = $(CVS) $(CVS_FLAGS) co $(NSS_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(NSS_CO_MODULE)
endif
####################################
# CVS defines for NSPR
#
NSPR_CO_MODULE = mozilla/nsprpub
NSPR_CO_FLAGS := -P
ifdef MOZ_CO_FLAGS
NSPR_CO_FLAGS := $(MOZ_CO_FLAGS)
endif
NSPR_CO_FLAGS := $(NSPR_CO_FLAGS) $(if $(NSPR_CO_TAG),-r $(NSPR_CO_TAG),-A)
# Cannot pull static tags by date
ifeq ($(NSPR_CO_TAG),NSPRPUB_CLIENT_TAG)
CVSCO_NSPR = $(CVS) $(CVS_FLAGS) co $(NSPR_CO_FLAGS) $(NSPR_CO_MODULE)
else
CVSCO_NSPR = $(CVS) $(CVS_FLAGS) co $(NSPR_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(NSPR_CO_MODULE)
endif
####################################
# CVS defines for the C LDAP SDK
#
LDAPCSDK_CO_MODULE = mozilla/directory/c-sdk
LDAPCSDK_CO_FLAGS := -P
ifdef MOZ_CO_FLAGS
LDAPCSDK_CO_FLAGS := $(MOZ_CO_FLAGS)
endif
LDAPCSDK_CO_FLAGS := $(LDAPCSDK_CO_FLAGS) $(if $(LDAPCSDK_CO_TAG),-r $(LDAPCSDK_CO_TAG),-A)
CVSCO_LDAPCSDK = $(CVS) $(CVS_FLAGS) co $(LDAPCSDK_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(LDAPCSDK_CO_MODULE)
####################################
# CVS defines for standalone modules
#
ifeq ($(BUILD_MODULES),all)
CHECKOUT_STANDALONE := true
CHECKOUT_STANDALONE_NOSUBDIRS := true
else
STANDALONE_CO_MODULE := $(filter-out $(NSPRPUB_DIR) security directory/c-sdk, $(BUILD_MODULE_CVS))
STANDALONE_CO_MODULE += allmakefiles.sh client.mk aclocal.m4 configure configure.in
STANDALONE_CO_MODULE += Makefile.in
MOZ_MODULE_LIST += $(addprefix mozilla/,$(STANDALONE_CO_MODULE))
NOSUBDIRS_MODULE := $(addprefix mozilla/,$(BUILD_MODULE_CVS_NS))
ifeq (,$(filter $(NSPRPUB_DIR), $(BUILD_MODULE_CVS))$(MOZ_CO_PROJECT))
CVSCO_NSPR :=
endif
ifeq (,$(filter security security/manager, $(BUILD_MODULE_CVS))$(MOZ_CO_PROJECT))
CVSCO_NSS :=
endif
ifeq (,$(filter directory/c-sdk, $(BUILD_MODULE_CVS))$(MOZ_CO_PROJECT))
CVSCO_LDAPCSDK :=
endif
endif
####################################
# Error on obsolete variables.
#
ifdef MOZ_MAPINFO
$(warning MOZ_MAPINFO is obsolete, use MOZ_CO_MODULE=mozilla/tools/codesighs instead.)
MOZ_MODULE_LIST += mozilla/tools/codesighs
endif
ifdef MOZ_INTERNAL_LIBART_LGPL
$(error MOZ_INTERNAL_LIBART_LGPL is obsolete, use MOZ_CO_MODULE=mozilla/other-licenses/libart_lgpl instead.)
endif
ifdef MOZ_PHOENIX
$(warning MOZ_PHOENIX is obsolete.)
MOZ_MODULE_LIST += $(MODULES_browser)
# $(error MOZ_PHOENIX is obsolete, use MOZ_CO_PROJECT=browser and --enable-application=browser)
endif
ifdef MOZ_THUNDERBIRD
$(warning MOZ_THUNDERBIRD is obsolete.)
MOZ_MODULE_LIST += $(MODULES_mail)
# $(error MOZ_THUNDERBIRD is obsolete, use MOZ_CO_PROJECT=mail and --enable-application=mail)
endif
###################################
# Checkout main modules
#
# sort is used to remove duplicates. SeaMonkeyAll is special-cased to
# checkout last, because if you check it out first, there is a sticky
# tag left over from checking out the LDAP SDK, which causes files in
# the root directory to be missed.
MOZ_MODULE_LIST := $(sort $(filter-out SeaMonkeyAll,$(MOZ_MODULE_LIST))) $(firstword $(filter SeaMonkeyAll,$(MOZ_MODULE_LIST)))
MODULES_CO_FLAGS := -P
ifdef MOZ_CO_FLAGS
MODULES_CO_FLAGS := $(MOZ_CO_FLAGS)
endif
MODULES_CO_FLAGS := $(MODULES_CO_FLAGS) $(if $(MOZ_CO_TAG),-r $(MOZ_CO_TAG),-A)
CVSCO_MODULES_NS = $(CVS) $(CVS_FLAGS) co $(MODULES_CO_FLAGS) $(CVS_CO_DATE_FLAGS) -l $(NOSUBDIRS_MODULE)
ifeq (,$(strip $(MOZ_MODULE_LIST)))
FASTUPDATE_MODULES = $(error No modules or projects were specified. Use MOZ_CO_PROJECT to specify a project for checkout.)
CHECKOUT_MODULES = $(error No modules or projects were specified. Use MOZ_CO_PROJECT to specify a project for checkout.)
else
FASTUPDATE_MODULES := fast_update $(CVS) $(CVS_FLAGS) co $(MODULES_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(MOZ_MODULE_LIST)
CHECKOUT_MODULES := $(foreach module,$(MOZ_MODULE_LIST),cvs_co $(CVS) $(CVS_FLAGS) co $(MODULES_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(module);)
endif
ifeq (,$(NOSUBDIRS_MODULE))
FASTUPDATE_MODULES_NS := true
CHECKOUT_MODULES_NS := true
else
FASTUPDATE_MODULES_NS := fast_update $(CVSCO_MODULES_NS)
CHECKOUT_MODULES_NS := cvs_co $(CVSCO_MODULES_NS)
endif
###################################
# CVS defines for locales
#
LOCALES_CO_FLAGS := -P
ifdef MOZ_CO_FLAGS
LOCALES_CO_FLAGS := $(MOZ_CO_FLAGS)
endif
LOCALES_CO_FLAGS := $(LOCALES_CO_FLAGS) $(if $(LOCALES_CO_TAG),-r $(LOCALES_CO_TAG),-A)
ifndef MOZ_CO_LOCALES
FASTUPDATE_LOCALES := true
CHECKOUT_LOCALES := true
else
override MOZ_CO_LOCALES := $(subst $(comma), ,$(MOZ_CO_LOCALES))
ifeq (all,$(MOZ_CO_LOCALES))
MOZCONFIG_MODULES += $(foreach project,$(MOZ_PROJECT_LIST),mozilla/$(project)/locales/all-locales)
LOCALE_CO_DIRS := $(sort $(foreach project,$(MOZ_PROJECT_LIST),$(foreach locale,$(shell cat mozilla/$(project)/locales/all-locales),$(foreach dir,$(LOCALES_$(project)),l10n/$(locale)/$(dir)))))
else # MOZ_CO_LOCALES != all
LOCALE_CO_DIRS = $(sort $(foreach locale,$(MOZ_CO_LOCALES),$(foreach dir,$(LOCALE_DIRS),l10n/$(locale)/$(dir))))
endif
CVSCO_LOCALES := $(CVS) $(CVS_FLAGS) -d $(LOCALES_CVSROOT) co $(LOCALES_CO_FLAGS) $(LOCALE_CO_DIRS)
FASTUPDATE_LOCALES := fast_update $(CVSCO_LOCALES)
CHECKOUT_LOCALES := cvs_co $(CVSCO_LOCALES)
endif #MOZ_CO_LOCALES
#######################################################################
# Rules
#
# Print out any options loaded from mozconfig.
all build checkout clean depend distclean export libs install realclean::
@if test -f .mozconfig.out; then \
cat .mozconfig.out; \
rm -f .mozconfig.out; \
else true; \
fi
ifdef _IS_FIRST_CHECKOUT
all:: checkout build
else
all:: checkout alldep
endif
# Windows equivalents
pull_all: checkout
build_all: build
build_all_dep: alldep
build_all_depend: alldep
clobber clobber_all: clean
pull_and_build_all: checkout alldep
# Do everything from scratch
everything: checkout clean build
####################################
# CVS checkout
#
checkout::
# @: Backup the last checkout log.
@if test -f $(CVSCO_LOGFILE) ; then \
mv $(CVSCO_LOGFILE) $(CVSCO_LOGFILE).old; \
else true; \
fi
ifdef RUN_AUTOCONF_LOCALLY
@echo "Removing local configures" ; \
cd $(ROOTDIR) && \
$(RM) -f mozilla/configure mozilla/nsprpub/configure \
mozilla/directory/c-sdk/configure
endif
@echo "checkout start: "`date` | tee $(CVSCO_LOGFILE)
@echo '$(CVSCO) $(CVS_CO_DATE_FLAGS) mozilla/client.mk $(MOZCONFIG_MODULES)'; \
cd $(ROOTDIR) && \
$(CVSCO) $(CVS_CO_DATE_FLAGS) mozilla/client.mk $(MOZCONFIG_MODULES)
@cd $(ROOTDIR) && $(MAKE) -f mozilla/client.mk real_checkout
# Start the checkout. Split the output to the tty and a log file.
real_checkout:
@set -e; \
cvs_co() { set -e; echo "$$@" ; \
"$$@" 2>&1 | tee -a $(CVSCO_LOGFILE); }; \
cvs_co $(CVSCO_NSPR); \
cvs_co $(CVSCO_NSS); \
cvs_co $(CVSCO_LDAPCSDK); \
$(CHECKOUT_MODULES) \
$(CHECKOUT_MODULES_NS); \
$(CHECKOUT_LOCALES);
@echo "checkout finish: "`date` | tee -a $(CVSCO_LOGFILE)
# update the NSS checkout timestamp
@if test `egrep -c '^(U|C) mozilla/security/(nss|coreconf)' $(CVSCO_LOGFILE) 2>/dev/null` != 0; then \
touch $(TOPSRCDIR)/security/manager/.nss.checkout; \
fi
# @: Check the log for conflicts. ;
@conflicts=`egrep "^C " $(CVSCO_LOGFILE)` ;\
if test "$$conflicts" ; then \
echo "$(MAKE): *** Conflicts during checkout." ;\
echo "$$conflicts" ;\
echo "$(MAKE): Refer to $(CVSCO_LOGFILE) for full log." ;\
false; \
else true; \
fi
ifdef RUN_AUTOCONF_LOCALLY
@echo Generating configures using $(AUTOCONF) ; \
cd $(TOPSRCDIR) && $(AUTOCONF) && \
cd $(TOPSRCDIR)/nsprpub && $(AUTOCONF) && \
cd $(TOPSRCDIR)/directory/c-sdk && $(AUTOCONF)
endif
fast-update:
# @: Backup the last checkout log.
@if test -f $(CVSCO_LOGFILE) ; then \
mv $(CVSCO_LOGFILE) $(CVSCO_LOGFILE).old; \
else true; \
fi
ifdef RUN_AUTOCONF_LOCALLY
@echo "Removing local configures" ; \
cd $(ROOTDIR) && \
$(RM) -f mozilla/configure mozilla/nsprpub/configure \
mozilla/directory/c-sdk/configure
endif
@echo "checkout start: "`date` | tee $(CVSCO_LOGFILE)
@echo '$(CVSCO) mozilla/client.mk $(MOZCONFIG_MODULES)'; \
cd $(ROOTDIR) && \
$(CVSCO) mozilla/client.mk $(MOZCONFIG_MODULES)
@cd $(TOPSRCDIR) && \
$(MAKE) -f client.mk real_fast-update
# Start the update. Split the output to the tty and a log file.
real_fast-update:
@set -e; \
fast_update() { set -e; config/cvsco-fast-update.pl $$@ 2>&1 | tee -a $(CVSCO_LOGFILE); }; \
cvs_co() { set -e; echo "$$@" ; \
"$$@" 2>&1 | tee -a $(CVSCO_LOGFILE); }; \
fast_update $(CVSCO_NSPR); \
cd $(ROOTDIR); \
cvs_co $(CVSCO_NSS); \
cd mozilla; \
fast_update $(CVSCO_LDAPCSDK); \
$(FASTUPDATE_MODULES); \
$(FASTUPDATE_MODULES_NS); \
$(FASTUPDATE_LOCALES);
@echo "fast_update finish: "`date` | tee -a $(CVSCO_LOGFILE)
# update the NSS checkout timestamp
@if test `egrep -c '^(U|C) mozilla/security/(nss|coreconf)' $(CVSCO_LOGFILE) 2>/dev/null` != 0; then \
touch $(TOPSRCDIR)/security/manager/.nss.checkout; \
fi
# @: Check the log for conflicts. ;
@conflicts=`egrep "^C " $(CVSCO_LOGFILE)` ;\
if test "$$conflicts" ; then \
echo "$(MAKE): *** Conflicts during fast-update." ;\
echo "$$conflicts" ;\
echo "$(MAKE): Refer to $(CVSCO_LOGFILE) for full log." ;\
false; \
else true; \
fi
ifdef RUN_AUTOCONF_LOCALLY
@echo Generating configures using $(AUTOCONF) ; \
cd $(TOPSRCDIR) && $(AUTOCONF) && \
cd $(TOPSRCDIR)/nsprpub && $(AUTOCONF) && \
cd $(TOPSRCDIR)/directory/c-sdk && $(AUTOCONF)
endif
####################################
# Web configure
WEBCONFIG_FILE := $(HOME)/.mozconfig
MOZCONFIG2CONFIGURATOR := build/autoconf/mozconfig2configurator
webconfig:
@cd $(TOPSRCDIR); \
url=`$(MOZCONFIG2CONFIGURATOR) $(TOPSRCDIR)`; \
echo Running mozilla with the following url: ;\
echo ;\
echo $$url ;\
mozilla -remote "openURL($$url)" || \
netscape -remote "openURL($$url)" || \
mozilla $$url || \
netscape $$url ;\
echo ;\
echo 1. Fill out the form on the browser. ;\
echo 2. Save the results to $(WEBCONFIG_FILE)
#####################################################
# First Checkout
ifdef _IS_FIRST_CHECKOUT
# First time, do build target in a new process to pick up new files.
build::
$(MAKE) -f $(TOPSRCDIR)/client.mk build
else
#####################################################
# After First Checkout
####################################
# Configure
CONFIG_STATUS := $(wildcard $(OBJDIR)/config.status)
CONFIG_CACHE := $(wildcard $(OBJDIR)/config.cache)
ifdef RUN_AUTOCONF_LOCALLY
EXTRA_CONFIG_DEPS := \
$(TOPSRCDIR)/aclocal.m4 \
$(wildcard $(TOPSRCDIR)/build/autoconf/*.m4) \
$(NULL)
$(TOPSRCDIR)/configure: $(TOPSRCDIR)/configure.in $(EXTRA_CONFIG_DEPS)
@echo Generating $@ using autoconf
cd $(TOPSRCDIR); $(AUTOCONF)
endif
CONFIG_STATUS_DEPS := \
$(TOPSRCDIR)/configure \
$(TOPSRCDIR)/allmakefiles.sh \
$(TOPSRCDIR)/.mozconfig.mk \
$(wildcard $(TOPSRCDIR)/nsprpub/configure) \
$(wildcard $(TOPSRCDIR)/directory/c-sdk/configure) \
$(wildcard $(TOPSRCDIR)/mailnews/makefiles) \
$(wildcard $(TOPSRCDIR)/themes/makefiles) \
$(wildcard $(TOPSRCDIR)/config/milestone.txt) \
$(wildcard $(TOPSRCDIR)/config/chrome-versions.sh) \
$(NULL)
# configure uses the program name to determine @srcdir@. Calling it without
# $(TOPSRCDIR) will set @srcdir@ to "."; otherwise, it is set to the full
# path of $(TOPSRCDIR).
ifeq ($(TOPSRCDIR),$(OBJDIR))
CONFIGURE := ./configure
else
CONFIGURE := $(TOPSRCDIR)/configure
endif
ifdef MOZ_TOOLS
CONFIGURE := $(TOPSRCDIR)/configure
endif
configure:
@if test ! -d $(OBJDIR); then $(MKDIR) $(OBJDIR); else true; fi
@echo cd $(OBJDIR);
@echo $(CONFIGURE) $(CONFIGURE_ARGS)
@cd $(OBJDIR) && $(CONFIGURE_ENV_ARGS) $(CONFIGURE) $(CONFIGURE_ARGS) \
|| ( echo "*** Fix above errors and then restart with\
\"$(MAKE) -f client.mk build\"" && exit 1 )
@touch $(OBJDIR)/Makefile
$(OBJDIR)/Makefile $(OBJDIR)/config.status: $(CONFIG_STATUS_DEPS)
@$(MAKE) -f $(TOPSRCDIR)/client.mk configure
ifdef CONFIG_STATUS
$(OBJDIR)/config/autoconf.mk: $(TOPSRCDIR)/config/autoconf.mk.in
cd $(OBJDIR); \
CONFIG_FILES=config/autoconf.mk ./config.status
endif
####################################
# Depend
depend:: $(OBJDIR)/Makefile $(OBJDIR)/config.status
$(MOZ_MAKE) export && $(MOZ_MAKE) depend
####################################
# Build it
build:: $(OBJDIR)/Makefile $(OBJDIR)/config.status
$(MOZ_MAKE)
####################################
# Profile-feedback build (gcc only)
# To use this, you should set the following variables in your mozconfig
# mk_add_options PROFILE_GEN_SCRIPT=/path/to/profile-script
#
# The profile script should exercise the functionality to be included
# in the profile feedback.
profiledbuild:: $(OBJDIR)/Makefile $(OBJDIR)/config.status
$(MOZ_MAKE) MOZ_PROFILE_GENERATE=1
OBJDIR=${OBJDIR} $(PROFILE_GEN_SCRIPT)
$(MOZ_MAKE) clobber_all
$(MOZ_MAKE) MOZ_PROFILE_USE=1
find $(OBJDIR) -name "*.da" -exec rm {} \;
####################################
# Other targets
# Pass these target onto the real build system
install export libs clean realclean distclean alldep:: $(OBJDIR)/Makefile $(OBJDIR)/config.status
$(MOZ_MAKE) $@
cleansrcdir:
@cd $(TOPSRCDIR); \
if [ -f webshell/embed/gtk/Makefile ]; then \
$(MAKE) -C webshell/embed/gtk distclean; \
fi; \
if [ -f Makefile ]; then \
$(MAKE) distclean ; \
else \
echo "Removing object files from srcdir..."; \
rm -fr `find . -type d \( -name .deps -print -o -name CVS \
-o -exec test ! -d {}/CVS \; \) -prune \
-o \( -name '*.[ao]' -o -name '*.so' \) -type f -print`; \
build/autoconf/clean-config.sh; \
fi;
# (! IS_FIRST_CHECKOUT)
endif
echo_objdir:
@echo $(OBJDIR)
.PHONY: checkout real_checkout depend build export libs alldep install clean realclean distclean cleansrcdir pull_all build_all clobber clobber_all pull_and_build_all everything configure

View File

@@ -0,0 +1,6 @@
#
# This is a list of local files which get copied to the mozilla:dist directory
#
PIMGCB.h
PPSIMGCB.h

View File

@@ -0,0 +1,142 @@
/* -*- Mode: C; tab-width: 4; -*- */
/*******************************************************************************
* Source date: 14 Jul 1998 19:28:58 GMT
* netscape/libimg/IMGCB module C stub file
* Generated by jmc version 1.8 -- DO NOT EDIT
******************************************************************************/
#include <stdlib.h>
#include <string.h>
#include "prmem.h"
/* Include the implementation-specific header: */
#include "PIMGCB.h"
/* Include other interface headers: */
/*******************************************************************************
* IMGCB Methods
******************************************************************************/
#ifndef OVERRIDE_IMGCB_getInterface
JMC_PUBLIC_API(void*)
_IMGCB_getInterface(struct IMGCB* self, jint op, const JMCInterfaceID* iid, JMCException* *exc)
{
if (memcmp(iid, &IMGCB_ID, sizeof(JMCInterfaceID)) == 0)
return IMGCBImpl2IMGCB(IMGCB2IMGCBImpl(self));
return _IMGCB_getBackwardCompatibleInterface(self, iid, exc);
}
#endif
#ifndef OVERRIDE_IMGCB_addRef
JMC_PUBLIC_API(void)
_IMGCB_addRef(struct IMGCB* self, jint op, JMCException* *exc)
{
IMGCBImplHeader* impl = (IMGCBImplHeader*)IMGCB2IMGCBImpl(self);
impl->refcount++;
}
#endif
#ifndef OVERRIDE_IMGCB_release
JMC_PUBLIC_API(void)
_IMGCB_release(struct IMGCB* self, jint op, JMCException* *exc)
{
IMGCBImplHeader* impl = (IMGCBImplHeader*)IMGCB2IMGCBImpl(self);
if (--impl->refcount == 0) {
IMGCB_finalize(self, exc);
}
}
#endif
#ifndef OVERRIDE_IMGCB_hashCode
JMC_PUBLIC_API(jint)
_IMGCB_hashCode(struct IMGCB* self, jint op, JMCException* *exc)
{
return (jint)self;
}
#endif
#ifndef OVERRIDE_IMGCB_equals
JMC_PUBLIC_API(jbool)
_IMGCB_equals(struct IMGCB* self, jint op, void* obj, JMCException* *exc)
{
return self == obj;
}
#endif
#ifndef OVERRIDE_IMGCB_clone
JMC_PUBLIC_API(void*)
_IMGCB_clone(struct IMGCB* self, jint op, JMCException* *exc)
{
IMGCBImpl* impl = IMGCB2IMGCBImpl(self);
IMGCBImpl* newImpl = (IMGCBImpl*)malloc(sizeof(IMGCBImpl));
if (newImpl == NULL) return NULL;
memcpy(newImpl, impl, sizeof(IMGCBImpl));
((IMGCBImplHeader*)newImpl)->refcount = 1;
return newImpl;
}
#endif
#ifndef OVERRIDE_IMGCB_toString
JMC_PUBLIC_API(const char*)
_IMGCB_toString(struct IMGCB* self, jint op, JMCException* *exc)
{
return NULL;
}
#endif
#ifndef OVERRIDE_IMGCB_finalize
JMC_PUBLIC_API(void)
_IMGCB_finalize(struct IMGCB* self, jint op, JMCException* *exc)
{
/* Override this method and add your own finalization here. */
PR_FREEIF(self);
}
#endif
/*******************************************************************************
* Jump Tables
******************************************************************************/
const struct IMGCBInterface IMGCBVtable = {
_IMGCB_getInterface,
_IMGCB_addRef,
_IMGCB_release,
_IMGCB_hashCode,
_IMGCB_equals,
_IMGCB_clone,
_IMGCB_toString,
_IMGCB_finalize,
_IMGCB_NewPixmap,
_IMGCB_UpdatePixmap,
_IMGCB_ControlPixmapBits,
_IMGCB_DestroyPixmap,
_IMGCB_DisplayPixmap,
_IMGCB_DisplayIcon,
_IMGCB_GetIconDimensions
};
/*******************************************************************************
* Factory Operations
******************************************************************************/
JMC_PUBLIC_API(IMGCB*)
IMGCBFactory_Create(JMCException* *exception)
{
IMGCBImplHeader* impl = (IMGCBImplHeader*)PR_NEWZAP(IMGCBImpl);
IMGCB* self;
if (impl == NULL) {
JMC_EXCEPTION(exception, JMCEXCEPTION_OUT_OF_MEMORY);
return NULL;
}
self = IMGCBImpl2IMGCB(impl);
impl->vtableIMGCB = &IMGCBVtable;
impl->refcount = 1;
_IMGCB_init(self, exception);
if (JMC_EXCEPTION_RETURNED(exception)) {
PR_FREEIF(impl);
return NULL;
}
return self;
}

View File

@@ -0,0 +1,142 @@
/* -*- Mode: C; tab-width: 4; -*- */
/*******************************************************************************
* Source date: 14 Jul 1998 19:28:58 GMT
* netscape/libimg/PSIMGCB module C stub file
* Generated by jmc version 1.8 -- DO NOT EDIT
******************************************************************************/
#include <stdlib.h>
#include <string.h>
#include "prmem.h"
/* Include the implementation-specific header: */
#include "PPSIMGCB.h"
/* Include other interface headers: */
/*******************************************************************************
* PSIMGCB Methods
******************************************************************************/
#ifndef OVERRIDE_PSIMGCB_getInterface
JMC_PUBLIC_API(void*)
_PSIMGCB_getInterface(struct PSIMGCB* self, jint op, const JMCInterfaceID* iid, JMCException* *exc)
{
if (memcmp(iid, &PSIMGCB_ID, sizeof(JMCInterfaceID)) == 0)
return PSIMGCBImpl2PSIMGCB(PSIMGCB2PSIMGCBImpl(self));
return _PSIMGCB_getBackwardCompatibleInterface(self, iid, exc);
}
#endif
#ifndef OVERRIDE_PSIMGCB_addRef
JMC_PUBLIC_API(void)
_PSIMGCB_addRef(struct PSIMGCB* self, jint op, JMCException* *exc)
{
PSIMGCBImplHeader* impl = (PSIMGCBImplHeader*)PSIMGCB2PSIMGCBImpl(self);
impl->refcount++;
}
#endif
#ifndef OVERRIDE_PSIMGCB_release
JMC_PUBLIC_API(void)
_PSIMGCB_release(struct PSIMGCB* self, jint op, JMCException* *exc)
{
PSIMGCBImplHeader* impl = (PSIMGCBImplHeader*)PSIMGCB2PSIMGCBImpl(self);
if (--impl->refcount == 0) {
PSIMGCB_finalize(self, exc);
}
}
#endif
#ifndef OVERRIDE_PSIMGCB_hashCode
JMC_PUBLIC_API(jint)
_PSIMGCB_hashCode(struct PSIMGCB* self, jint op, JMCException* *exc)
{
return (jint)self;
}
#endif
#ifndef OVERRIDE_PSIMGCB_equals
JMC_PUBLIC_API(jbool)
_PSIMGCB_equals(struct PSIMGCB* self, jint op, void* obj, JMCException* *exc)
{
return self == obj;
}
#endif
#ifndef OVERRIDE_PSIMGCB_clone
JMC_PUBLIC_API(void*)
_PSIMGCB_clone(struct PSIMGCB* self, jint op, JMCException* *exc)
{
PSIMGCBImpl* impl = PSIMGCB2PSIMGCBImpl(self);
PSIMGCBImpl* newImpl = (PSIMGCBImpl*)malloc(sizeof(PSIMGCBImpl));
if (newImpl == NULL) return NULL;
memcpy(newImpl, impl, sizeof(PSIMGCBImpl));
((PSIMGCBImplHeader*)newImpl)->refcount = 1;
return newImpl;
}
#endif
#ifndef OVERRIDE_PSIMGCB_toString
JMC_PUBLIC_API(const char*)
_PSIMGCB_toString(struct PSIMGCB* self, jint op, JMCException* *exc)
{
return NULL;
}
#endif
#ifndef OVERRIDE_PSIMGCB_finalize
JMC_PUBLIC_API(void)
_PSIMGCB_finalize(struct PSIMGCB* self, jint op, JMCException* *exc)
{
/* Override this method and add your own finalization here. */
PR_FREEIF(self);
}
#endif
/*******************************************************************************
* Jump Tables
******************************************************************************/
const struct PSIMGCBInterface PSIMGCBVtable = {
_PSIMGCB_getInterface,
_PSIMGCB_addRef,
_PSIMGCB_release,
_PSIMGCB_hashCode,
_PSIMGCB_equals,
_PSIMGCB_clone,
_PSIMGCB_toString,
_PSIMGCB_finalize,
_PSIMGCB_NewPixmap,
_PSIMGCB_UpdatePixmap,
_PSIMGCB_ControlPixmapBits,
_PSIMGCB_DestroyPixmap,
_PSIMGCB_DisplayPixmap,
_PSIMGCB_DisplayIcon,
_PSIMGCB_GetIconDimensions
};
/*******************************************************************************
* Factory Operations
******************************************************************************/
JMC_PUBLIC_API(PSIMGCB*)
PSIMGCBFactory_Create(JMCException* *exception)
{
PSIMGCBImplHeader* impl = (PSIMGCBImplHeader*)PR_NEWZAP(PSIMGCBImpl);
PSIMGCB* self;
if (impl == NULL) {
JMC_EXCEPTION(exception, JMCEXCEPTION_OUT_OF_MEMORY);
return NULL;
}
self = PSIMGCBImpl2PSIMGCB(impl);
impl->vtablePSIMGCB = &PSIMGCBVtable;
impl->refcount = 1;
_PSIMGCB_init(self, exception);
if (JMC_EXCEPTION_RETURNED(exception)) {
PR_FREEIF(impl);
return NULL;
}
return self;
}

View File

@@ -0,0 +1,118 @@
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
#
ifndef MOZ_JAVA
LOCAL_JMC_SUBDIR = .
endif
DEPTH = ../../..
MODULE = img
LIBRARY_NAME = img
ifdef STANDALONE_IMAGE_LIB
CPPSRCS = ilNetReader.cpp \
xpcompat.cpp \
color.cpp \
colormap.cpp \
dither.cpp \
gif.cpp \
if.cpp \
ilclient.cpp \
il_util.cpp \
jpeg.cpp \
scale.cpp \
xbm.cpp \
ipng.cpp \
png_png.cpp \
$(NULL)
EXPORTS = PIMGCB.h PPSIMGCB.h
REQUIRES = zlib nspr jpeg util img png xpcom
LOCAL_INCLUDES = -I../png -I. -I$(DEPTH)/dist/public/zlib
EXTRA_LIBS = $(DIST)/lib/libzlib.a $(DIST)/lib/libpng.a $(DIST)/lib/libnspr21.a $(dist)/lib/libjpeg.a $(DIST)/lib/libplc21.a $(DIST)/lib/libutil.a
symbols::
@echo "LIBRARY_NAME is $(LIBRARY_NAME)"
@echo "LIBRARY is $(LIBRARY)"
@echo "DIST is $(DIST)"
else
CPPSRCS = color.cpp \
colormap.cpp \
dither.cpp \
dummy_nc.cpp \
external.cpp \
gif.cpp \
if.cpp \
ilclient.cpp \
il_util.cpp \
jpeg.cpp \
scale.cpp \
xbm.cpp \
ipng.cpp \
png_png.cpp \
ilNetReader.cpp \
$(NULL)
EXPORTS = PIMGCB.h PPSIMGCB.h
REQUIRES = jtools java nspr dbm util img layer js xpcom
LOCAL_INCLUDES = -I.
EXTRA_LIBS =
ifndef MOZ_NATIVE_JPEG
REQUIRES += jpeg
endif
ifdef MOZ_NATIVE_PNG
EXTRA_LIBS += -lpng
else
REQUIRES += png
LOCAL_INCLUDES += -I../png
EXTRA_LIBS += $(DIST)/lib/libpng.a
endif
ifdef MOZ_NATIVE_ZLIB
EXTRA_LIBS += -lz
else
REQUIRES += zlib
LOCAL_INCLUDES += -I$(DEPTH)/dist/public/zlib
EXTRA_LIBS += $(DIST)/lib/libzlib.a
endif
#
# Generate MIMGCB.c (and similar sources) here.
# MIMGCB.h is generated in ../public/_jmc/
#
JMC_GEN = MIMGCB MPSIMGCB
JMC_GEN_FLAGS = -cimpl -noexc -module
endif
include $(DEPTH)/config/rules.mk
#
# This is about as far from the right way of doing things as you can get.
# HACK larubbio fix me
#
ifdef STANDALONE_IMAGE_LIB
CC = $(CCC)
endif

View File

@@ -0,0 +1,121 @@
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
#
ifndef MOZ_JAVA
LOCAL_JMC_SUBDIR = .
endif
DEPTH = ../../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
MODULE = img
LIBRARY_NAME = img
ifdef STANDALONE_IMAGE_LIB
CPPSRCS = ilNetReader.cpp \
xpcompat.cpp \
color.cpp \
colormap.cpp \
dither.cpp \
gif.cpp \
if.cpp \
ilclient.cpp \
il_util.cpp \
jpeg.cpp \
scale.cpp \
xbm.cpp \
ipng.cpp \
png_png.cpp \
$(NULL)
EXPORTS = PIMGCB.h PPSIMGCB.h
REQUIRES = zlib nspr jpeg util img png xpcom
LOCAL_INCLUDES = -I../png -I. -I$(DEPTH)/dist/public/zlib
EXTRA_LIBS = $(DIST)/lib/libzlib.a $(DIST)/lib/libpng.a $(DIST)/lib/libnspr21.a $(dist)/lib/libjpeg.a $(DIST)/lib/libplc21.a $(DIST)/lib/libutil.a
symbols::
@echo "LIBRARY_NAME is $(LIBRARY_NAME)"
@echo "LIBRARY is $(LIBRARY)"
@echo "DIST is $(DIST)"
else
CPPSRCS = color.cpp \
colormap.cpp \
dither.cpp \
dummy_nc.cpp \
external.cpp \
gif.cpp \
if.cpp \
ilclient.cpp \
il_util.cpp \
jpeg.cpp \
scale.cpp \
xbm.cpp \
ipng.cpp \
png_png.cpp \
ilNetReader.cpp \
$(NULL)
EXPORTS = PIMGCB.h PPSIMGCB.h
REQUIRES = jtools java nspr dbm util img layer js xpcom
LOCAL_INCLUDES = -I$(srcdir)/../png -I$(srcdir)/.
EXTRA_LIBS =
ifndef MOZ_NATIVE_JPEG
REQUIRES += jpeg
endif
ifndef MOZ_NATIVE_ZLIB
REQUIRES += zlib
LOCAL_INCLUDES += -I$(DEPTH)/dist/public/zlib
EXTRA_LIBS += $(DIST)/lib/libzlib.a
endif
ifndef MOZ_NATIVE_PNG
REQUIRES += png
EXTRA_LIBS += $(DIST)/lib/libpng.a
endif
#
# Generate MIMGCB.c (and similar sources) here.
# MIMGCB.h is generated in ../public/_jmc/
#
JMC_GEN = MIMGCB MPSIMGCB
JMC_GEN_FLAGS = -cimpl -noexc -module
endif
EXPORTS := $(addprefix $(srcdir)/, $(EXPORTS))
include $(topsrcdir)/config/rules.mk
#
# This is about as far from the right way of doing things as you can get.
# HACK larubbio fix me
#
ifdef STANDALONE_IMAGE_LIB
CC = $(CCC)
endif

View File

@@ -0,0 +1,17 @@
#
# This is a list of local files which get copied to the mozilla:dist directory
#
mkstream.h
mkparse.h
mkfsort.h
mksort.h
mkgeturl.h
mkselect.h
mktcp.h
netutils.h
mkpadpac.h
mkautocf.h
mkutils.h
mktrace.h
mkhelp.h

View File

@@ -0,0 +1,461 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/* MacBinary support.c
This file implements MacBinary (actually MacBinary II) support for the following:
-Determine the size of a file when encoded in MacBinary
-Inline encoding of a file in MacBinary format
The MacBinary II format consists of a 128-byte header containing all the
information necessary to reproduce the document's directory entry on the
receiving Macintosh; followed by the document's Data Fork (if it has one),
padded with nulls to a multiple of 128 bytes (if necessary); followed by the
document's Resource Fork (again, padded if necessary). The lengths of these
forks (either or both of which may be zero) are contained in the header.
The format of the header for MacBinary II is as follows:
Offset 000 Byte old version number, must be kept at zero for compatibility
Offset 001 Byte Length of filename (must be in the range 1-63)
Offset 002 1 to 63 chars, filename (only "length" bytes are significant).
Offset 065 Long file type (normally expressed as four characters)
Offset 069 Long file creator (normally expressed as four characters)
Offset 073 Byte original Finder flags
Bit 7 - Locked.
Bit 6 - Invisible.
Bit 5 - Bundle.
Bit 4 - System.
Bit 3 - Bozo.
Bit 2 - Busy.
Bit 1 - Changed.
Bit 0 - Inited.
Offset 074 Byte zero fill, must be zero for compatibility
Offset 075 Short file's vertical position within its window.
Offset 077 Short file's horizontal position within its window.
Offset 079 Short file's window or folder ID.
Offset 081 Byte "Protected" flag (in low order bit).
Offset 082 Byte zero fill, must be zero for compatibility
Offset 083 Long Data Fork length (bytes, zero if no Data Fork).
Offset 087 Long Resource Fork length (bytes, zero if no R.F.).
Offset 091 Long File's creation date
Offset 095 Long File's "last modified" date.
Offset 099 Short zero fill (was file comment length which is not supported)
Offset 101 Byte Finder Flags, bits 0-7. (Bits 8-15 are already in byte 73)
Offset 116 Long Length of total files when packed files are unpacked.
This is only used by programs that pack and unpack on the fly,
mimicing a standalone utility such as PackIt. A program that is
uploading a single file must zero this location when sending a
file. Programs that do not unpack/uncompress files when
downloading may ignore this value.
Offset 120 Short zero fill (was length of a secondary header which is not supported)
Offset 122 Byte Version number of Macbinary II that the uploading program
is written for (the version begins at 129)
Offset 123 Byte Minimum MacBinary II version needed to read this file
(start this value at 129)
Offset 124 Short CRC of previous 124 bytes
All values are stored in normal 68000 order, with Most Significant Byte
appearing first then the file. Any bytes in the header not defined above
should be set to zero.
MacBinary header creation and CRC calculation based on Erny Tontlinger's free 'Terminal' source
*/
#include "xp.h"
#include "MacBinSupport.h"
#include "MoreFilesExtras.h"
enum
{
kMB_SendingHeader, /* Data from read is MB header */
kMB_SetupDataFork, /* Finished sending MB header so prepare data fork */
kMB_SendingDataFork, /* Data from read is file's data fork */
kMB_SetupResFork, /* Finished sending data fork so prepare res fork */
kMB_SendingResFork, /* Data from read is file's data fork */
kMB_FinishedFile /* Nothing left to send - file finished */
};
static Byte fillerBuf[kMBHeaderLength];
static unsigned short CalcMacBinaryCRC(Byte *ptr, unsigned long count)
{
unsigned short crc;
unsigned short i;
crc = 0;
while (count-- > 0) {
crc = crc ^ (unsigned short)*ptr++ << 8;
for (i = 0; i < 8; ++i)
if (crc & 0x8000)
crc = crc << 1 ^ 0x1021;
else
crc = crc << 1;
}
return crc;
}
static OSErr InitMacBinaryHeader(MB_FileSpec *mbFileSpec)
{
#define MB_VersionNumber 129
#define MBH_name 1
#define MBH_info1 65
#define MBH_protected 81
#define MBH_dLength 83
#define MBH_rLength 87
#define MBH_creation 91
#define MBH_modification 95
#define MBH_getInfoLength 99
#define MBH_info2 101
#define MBH_filesLength 116
#define MBH_sHeaderLength 120
#define MBH_newVersion 122
#define MBH_minimumVersion 123
#define MBH_crc 124
OSErr theErr;
unsigned short crc;
HParamBlockRec param;
XP_MEMSET(&param, 0, sizeof(param));
param.fileParam.ioNamePtr = (StringPtr)mbFileSpec->theFileSpec.name;
param.fileParam.ioVRefNum = mbFileSpec->theFileSpec.vRefNum;
param.fileParam.ioDirID = mbFileSpec->theFileSpec.parID;
theErr = PBHGetFInfoSync(&param);
if (theErr != noErr)
return (theErr);
XP_MEMSET(mbFileSpec->mbHeader, 0, kMBHeaderLength);
XP_MEMCPY(
&mbFileSpec->mbHeader[MBH_name],
mbFileSpec->theFileSpec.name, mbFileSpec->theFileSpec.name[0] + 1);
mbFileSpec->mbHeader[MBH_info2] = param.fileParam.ioFlFndrInfo.fdFlags & 0x00FF;
param.fileParam.ioFlFndrInfo.fdFlags &= 0xFF00;
*(long *)&param.fileParam.ioFlFndrInfo.fdLocation = 0;
param.fileParam.ioFlFndrInfo.fdFldr = 0;
XP_MEMCPY(&mbFileSpec->mbHeader[MBH_info1], (void *)&param.fileParam.ioFlFndrInfo, 16);
mbFileSpec->mbHeader[MBH_protected] = (Byte)(param.fileParam.ioFlAttrib) & 0x01;
XP_MEMCPY(&mbFileSpec->mbHeader[MBH_dLength], (void *)&param.fileParam.ioFlLgLen, 4);
XP_MEMCPY(&mbFileSpec->mbHeader[MBH_rLength], (void *)&param.fileParam.ioFlRLgLen, 4);
XP_MEMCPY(&mbFileSpec->mbHeader[MBH_creation], (void *)&param.fileParam.ioFlCrDat, 4);
XP_MEMCPY(&mbFileSpec->mbHeader[MBH_modification], (void *)&param.fileParam.ioFlMdDat, 4);
mbFileSpec->mbHeader[MBH_newVersion] = MB_VersionNumber;
mbFileSpec->mbHeader[MBH_minimumVersion] = MB_VersionNumber;
crc = CalcMacBinaryCRC(mbFileSpec->mbHeader, 124);
XP_MEMCPY(&mbFileSpec->mbHeader[MBH_crc], (void *)&crc, 2);
mbFileSpec->dataForkLength = param.fileParam.ioFlLgLen;
mbFileSpec->resForkLength = param.fileParam.ioFlRLgLen;
return (noErr);
}
static long PadBufferToMacBinBlock(char *buf, long bytesInBuf)
{
long paddingNeeded = 0;
if (bytesInBuf % kMBHeaderLength)
{
paddingNeeded = kMBHeaderLength - (bytesInBuf % kMBHeaderLength);
XP_MEMCPY(&buf[bytesInBuf], fillerBuf, paddingNeeded);
}
return (bytesInBuf + paddingNeeded);
}
/* MB_Stat
Returns the size of the file when encoded in MacBinary format
This is computed as 128 bytes for the MacBinary header + the size of the data fork
rounded up to a multiple of 128 bytes + the size of the resource fork rounded up to
a multiple of 128 bytes.
*/
int MB_Stat( const char* name, XP_StatStruct * outStat, XP_FileType type )
{
int result = -1;
long totalFileSize = 0;
char *newName = WH_FileName( name, type );
FSSpec fileSpec = {0, 0, "\p"};
OSErr theErr;
long dataSize;
long rsrcSize;
long sizeRemainder;
/* See if we managed to copy the name */
if (!newName)
return (result);
/* Now see if we can find out something about the file */
theErr = FSSpecFromPathname_CWrapper(newName, &fileSpec);
if (theErr == noErr)
{
theErr = FSpGetFileSize(&fileSpec, &dataSize, &rsrcSize);
if (theErr == noErr)
{
result = 0; /* Set the result code to success */
totalFileSize = kMBHeaderLength; /* 128 bytes for the MacBin header */
/* Make sure data and rsrc sizes are multiples of 128 bytes
before adding them to totalFileSize */
sizeRemainder = dataSize % kMBHeaderLength;
if (sizeRemainder)
{
dataSize += (kMBHeaderLength - sizeRemainder);
}
totalFileSize += dataSize;
sizeRemainder = rsrcSize % kMBHeaderLength;
if (sizeRemainder)
{
rsrcSize += (kMBHeaderLength - sizeRemainder);
}
totalFileSize += rsrcSize;
/* Stuff the calculated file size into the appropriate stat field */
outStat->st_size = totalFileSize;
}
}
XP_FREE(newName);
return (result);
}
/* MB_Open
Prepares a file for inline encoding in the MacBinary format. It builds the
MacBinary header and initializes the state machine for the encoding process.
Get file info
Build MacBinary header
Set state machine to kMB_SendingHeader
*/
OSErr MB_Open(const char *name, MB_FileSpec *mbFileSpec)
{
char *newName = WH_FileName( name, xpFileToPost );
OSErr theErr = noErr;
/* See if we managed to copy the name */
if (!newName)
return (fnfErr);
/* Now see if we can find make an FSSpec for the file */
theErr = FSSpecFromPathname_CWrapper(newName, &mbFileSpec->theFileSpec);
if (theErr == noErr)
{
theErr = InitMacBinaryHeader(mbFileSpec);
if (theErr == noErr)
{
// Set up the rest of the MB_FileSpec info
mbFileSpec->fileState = kMB_SendingHeader;
mbFileSpec->fileRefNum = -1;
mbFileSpec->dataBytesRead = 0;
mbFileSpec->resBytesRead = 0;
}
}
/* Make sure our filler buffer is cleared */
XP_MEMSET(fillerBuf, 0, kMBHeaderLength);
return (theErr);
}
/* MB_Read
Provides a MacBinary encoded version of a file. All reads are done to the supplied
buffer. The MB_Read function just returns how many bytes have been placed in the
buffer.
Switch on state
kMB_SendingHeader
set state to kMB_SetupDataFork
Return the # of bytes in an MB header
kMB_SetupDataFork
If hasDataFork
Open the data fork of the file
Set the state to kMB_SendingDataFork
GOTO kMB_SendingDataFork
else
GOTO kMB_SetupResFork
kMB_SendingDataFork
Read a buffer's worth of data
Make sure buffer is padded to MB block boundary
If EOF set state to kMB_SetupResFork
Return the # of bytes in buffer
kMB_SetupResFork
Close data fork if open
If hasResFork
Open the resource fork of the file
Set the state to kMB_SendingResFork
GOTO kMB_SendingResFork
else
GOTO kMB_FinishedFile
kMB_SendingResFork
Read a buffer's worth of data
Make sure buffer is padded to MB block boundary
If EOF set state to kMB_FinishedFile
Return the # of bytes in buffer
kMB_FinishedFile
Close resource fork if open
Set the state to kMB_FinishedFile
*/
int32 MB_Read(char *buf, int bufSize, MB_FileSpec *mbFileSpec)
{
long bytesInBuf = 0;
OSErr theErr = noErr;
long count = bufSize;
switch (mbFileSpec->fileState)
{
case kMB_SendingHeader:
XP_MEMCPY(buf, mbFileSpec->mbHeader, kMBHeaderLength);
bytesInBuf = kMBHeaderLength;
mbFileSpec->fileState = kMB_SetupDataFork;
break;
case kMB_SetupDataFork:
if (mbFileSpec->dataForkLength)
{
theErr = FSpOpenDF(&mbFileSpec->theFileSpec, fsRdPerm, &mbFileSpec->fileRefNum);
if (theErr == noErr)
{
mbFileSpec->fileState = kMB_SendingDataFork;
/* Now that the data fork is open jump into the read state */
goto SendingDataFork;
}
else
{ /* Couldn't open the data fork so exit the state machine */
goto FinishedFile;
}
}
else
{ /* Apparently no data fork so go ahead and try the res fork */
goto SetupResFork;
}
break;
case kMB_SendingDataFork:
SendingDataFork:
theErr = FSRead(mbFileSpec->fileRefNum, &count, buf);
if (theErr == noErr || theErr == eofErr)
{
bytesInBuf = PadBufferToMacBinBlock(buf, count);
mbFileSpec->dataBytesRead += count;
/* See if we've reached EOF for the data */
if (mbFileSpec->dataBytesRead == mbFileSpec->dataForkLength)
mbFileSpec->fileState = kMB_SetupResFork;
}
else
{ /* Got some sort of error reading the data fork so exit the state machine */
goto FinishedFile;
}
break;
case kMB_SetupResFork:
SetupResFork:
/* Close the data fork */
if (mbFileSpec->fileRefNum != -1)
{
FSClose(mbFileSpec->fileRefNum);
mbFileSpec->fileRefNum = -1;
}
/* See if we have a res fork to send */
if (mbFileSpec->resForkLength)
{
theErr = FSpOpenRF(&mbFileSpec->theFileSpec, fsRdPerm, &mbFileSpec->fileRefNum);
if (theErr == noErr)
{
mbFileSpec->fileState = kMB_SendingResFork;
/* Now that the res fork is open jump into the read state */
goto SendingResFork;
}
else
{ /* Couldn't open the res fork so exit the state machine */
goto FinishedFile;
}
}
else
{ /* Apparently no res fork so go ahead and exite the state machine */
goto FinishedFile;
}
case kMB_SendingResFork:
SendingResFork:
theErr = FSRead(mbFileSpec->fileRefNum, &count, buf);
if (theErr == noErr || theErr == eofErr)
{
bytesInBuf = PadBufferToMacBinBlock(buf, count);
mbFileSpec->resBytesRead += count;
/* See if we've reached EOF for the res fork */
if (mbFileSpec->resBytesRead == mbFileSpec->resForkLength)
mbFileSpec->fileState = kMB_FinishedFile;
}
else
{ /* Got some sort of error reading the res fork so exit the state machine */
goto FinishedFile;
}
break;
case kMB_FinishedFile:
FinishedFile:
/* If we're here then we're done with the file */
mbFileSpec->fileState = kMB_FinishedFile;
/* If we have a fork open, close it */
if (mbFileSpec->fileRefNum != -1)
{
FSClose(mbFileSpec->fileRefNum);
mbFileSpec->fileRefNum = -1;
}
break;
}
return ((int32)bytesInBuf);
}
/* MB_Close
Nothing really to do since the file forks are actually closed in the MB_Read
routine after they have been sent.
*/
void MB_Close(MB_FileSpec *mbFileSpec)
{
if (mbFileSpec->fileRefNum != -1)
FSClose(mbFileSpec->fileRefNum);
mbFileSpec->fileState = kMB_FinishedFile;
}