зеркало из https://github.com/mozilla/pjs.git
247 строки
7.8 KiB
Makefile
247 строки
7.8 KiB
Makefile
# Makefile for mstone
|
|
# use gmake
|
|
# Builds each of the components and then packages everything
|
|
|
|
topsrcdir = .
|
|
|
|
CP := cp -p
|
|
|
|
ifndef INCLUDED_CONFIG_MK
|
|
include $(topsrcdir)/config/config.mk
|
|
endif
|
|
|
|
|
|
# dynamically find the optional directories names
|
|
LIBGD_DIR = $(wildcard gd?.*)
|
|
GNUPLOT_DIR = $(wildcard gnuplot-?.*)
|
|
PERL_DIR = $(wildcard perl5.*)
|
|
|
|
# file that we package
|
|
GDFILES = gd.txt gd.html libgd.* gd.h demoin.gif gddemo giftogd webgif
|
|
GNUPLOTFILES = gnuplot Copyright gnuplot_x11 gnuplot.1 gnuplot.gih
|
|
|
|
VERSION = 4.2
|
|
TARBALL = mstone-$(VERSION)-$(NSARCH)$(OBJDIR_TAG).tar.gz
|
|
ZIPFILE = mstone-$(VERSION)-$(NSARCH)$(OBJDIR_TAG).zip
|
|
TARBALL_ALL = mstone-$(VERSION)-all$(OBJDIR_TAG).tar.gz
|
|
ZIPFILE_ALL = mstone-$(VERSION)-all$(OBJDIR_TAG).zip
|
|
|
|
NTFILES = mstone.bat process.bat setup.bat
|
|
|
|
all:: usage
|
|
|
|
usage::
|
|
@$(ECHO) "gmake [ release | rpackage | debug | dpackage ]"
|
|
@$(ECHO) " [ DIST=/m/dist/mailstone/1999xxxx dist ]"
|
|
@$(ECHO) " [ all_DBG | all_OPT ]"
|
|
@$(ECHO) "perl is" $(PERL_DIR) ". gd is" $(LIBGD_DIR) ". gnuplot is" $(GNUPLOT_DIR) "."
|
|
|
|
targets:: $(OBJDIR) mailclient
|
|
|
|
ifneq (,$(LIBGD_DIR))
|
|
targets:: libgd
|
|
endif
|
|
|
|
ifneq (,$(GNUPLOT_DIR))
|
|
targets:: gnuplot
|
|
endif
|
|
|
|
ifneq (,$(PERL_DIR))
|
|
targets:: perl
|
|
endif
|
|
|
|
$(OBJDIR):
|
|
-mkdir -p $(OBJDIR)
|
|
|
|
mailclient::
|
|
@$(ECHO) "\n===== [`date`] making OS_CONFIG=$(NSARCH) BUILD_VARIANT=$(BUILD_VARIANT)\n"
|
|
cd src; $(MAKE) BUILD_VARIANT=$(BUILD_VARIANT) OBJDIR=../$(OBJDIR) PKGDIR=../$(PKGDIR) all
|
|
|
|
# Use our top level makefiles to drive the component builds
|
|
libgd $(OBJDIR)/gd/libgd.a::
|
|
$(MAKE) -f gd.mk LIBGD_DIR=$(LIBGD_DIR) libgd
|
|
|
|
gnuplot $(OBJDIR)/gnuplot/gnuplot::
|
|
$(MAKE) -f gnuplot.mk LIBGD_DIR=$(LIBGD_DIR) GNUPLOT_DIR=$(GNUPLOT_DIR) gnuplot
|
|
|
|
perl $(OBJDIR)/perl/perl::
|
|
$(MAKE) -f perl.mk PERL_DIR=$(PERL_DIR) perl
|
|
|
|
# Create packaging binary directories
|
|
# Note: dont make gd or gnuplot here. For multi-OS, they are links
|
|
mkpkgdirs:: $(PKGDIR)/bin $(PKGDIR)/conf $(PKGDIR)/data $(PKGDIR)/doc
|
|
|
|
$(PKGDIR)/bin:
|
|
mkdir -p $(PKGDIR)/bin
|
|
|
|
$(PKGDIR)/conf:
|
|
mkdir -p $(PKGDIR)/conf
|
|
|
|
$(PKGDIR)/data:
|
|
mkdir -p $(PKGDIR)/data
|
|
|
|
$(PKGDIR)/doc:
|
|
mkdir -p $(PKGDIR)/doc
|
|
|
|
$(PKGDIR)/gd:
|
|
mkdir -p $(PKGDIR)/gd
|
|
|
|
$(PKGDIR)/gnuplot:
|
|
mkdir -p $(PKGDIR)/gnuplot
|
|
|
|
$(PKGDIR)/perl:
|
|
mkdir -p $(PKGDIR)/perl
|
|
|
|
|
|
# operating system independent share-files (at least for Unix)
|
|
pkg-share-files:: mkpkgdirs
|
|
@$(ECHO) "\n===== [`date`] making package share-files...\n"
|
|
$(CP) mstone process $(PKGDIR)
|
|
(cd $(PKGDIR); [ ! -f setup ] || rm -f setup; ln -s mstone setup)
|
|
(cd $(PKGDIR); [ ! -f cleanup ] || rm -f cleanup; ln -s mstone cleanup)
|
|
(cd $(PKGDIR); [ ! -f checktime ] || rm -f checktime; ln -s mstone checktime)
|
|
(cd $(PKGDIR); [ ! -f timesync ] || rm -f timesync; ln -s mstone timesync)
|
|
$(CP) nsarch bin/*.pl $(PKGDIR)/bin
|
|
$(CP) conf/*.wld conf/*.wld.in conf/*.html $(PKGDIR)/conf
|
|
$(CP) data/*.msg $(PKGDIR)/data
|
|
$(CP) doc/*.html doc/*.gif $(PKGDIR)/doc
|
|
$(CP) INSTALL $(PKGDIR)
|
|
$(CP) README $(PKGDIR)
|
|
$(CP) ChangeLog $(PKGDIR)
|
|
$(CP) LICENSE $(PKGDIR)
|
|
|
|
# split out OS specific file so that combined packaging possible (set PKGDIR)
|
|
pkg-arch-files-gd:: $(PKGDIR)/gd $(OBJDIR)/gd/libgd.a
|
|
$(CP) $(addprefix $(OBJDIR)/gd/, $(GDFILES)) $(PKGDIR)/gd
|
|
-$(STRIP) $(PKGDIR)/gd/webgif $(PKGDIR)/gd/giftogd $(PKGDIR)/gd/gddemo
|
|
|
|
pkg-arch-files-gnuplot:: $(PKGDIR)/gnuplot $(OBJDIR)/gnuplot/gnuplot
|
|
$(CP) $(addprefix $(OBJDIR)/gnuplot/, $(GNUPLOTFILES)) $(PKGDIR)/gnuplot
|
|
-$(STRIP) $(PKGDIR)/gnuplot/gnuplot $(PKGDIR)/gnuplot/gnuplot_x11
|
|
|
|
ifneq (,$(LIBGD_DIR))
|
|
pkg-arch-files:: pkg-arch-files-gd
|
|
endif
|
|
|
|
ifneq (,$(GNUPLOT_DIR))
|
|
pkg-arch-files:: pkg-arch-files-gnuplot
|
|
endif
|
|
|
|
pkg-arch-files:: $(PKGDIR)/bin $(OBJDIR)/mailclient
|
|
@$(ECHO) "\n===== [`date`] making package arch-files...\n"
|
|
$(CP) $(OBJDIR)/mailclient $(PKGDIR)/bin
|
|
-$(STRIP) $(PKGDIR)/bin/mailclient
|
|
|
|
pkg-perl-files:: $(PKGDIR)/bin $(OBJDIR)/perl/perl
|
|
@$(ECHO) "\n===== [`date`] making package perl-files...\n"
|
|
$(MAKE) -f perl.mk PERL_DIR=$(PERL_DIR) \
|
|
BUILD_VARIANT=$(BUILD_VARIANT) \
|
|
OBJDIR=$(OBJDIR) PKGDIR=$(PKGDIR) package-perl
|
|
find $(PKGDIR)/perl/lib -name .packlist -exec rm {} \; -print
|
|
-$(STRIP) $(PKGDIR)/perl/bin/perl
|
|
-$(STRIP) $(PKGDIR)/perl/bin/a2p
|
|
|
|
# for combined packaging, this should not be part of pkg-arch-files
|
|
# perl is handled seperately do to its size
|
|
ifneq (,$(PERL_DIR))
|
|
pkg:: pkg-perl-files
|
|
endif
|
|
|
|
pkg:: targets pkg-share-files pkg-arch-files
|
|
|
|
tarball: build/$(TARBALL)
|
|
|
|
build/$(TARBALL):
|
|
@$(ECHO) "\n===== [`date`] making os tar file...\n"
|
|
-rm -f build/$(TARBALL)
|
|
cd $(dir $(PKGDIR)) && tar cf - . | gzip > ../../$(TARBALL)
|
|
|
|
zipfile: build/$(ZIPFILE)
|
|
|
|
build/$(ZIPFILE):
|
|
@$(ECHO) "\n===== [`date`] making os zip file...\n"
|
|
-rm -f build/$(ZIPFILE)
|
|
cd $(dir $(PKGDIR)) && zip -r -q ../../$(ZIPFILE) .
|
|
|
|
|
|
########################################################################
|
|
# Generate a combined build for every Unix OS that is already packaged
|
|
# NT has to be done seperately because it has different file names
|
|
# We have to nuke some old parts, because permissions wont allow overwrites
|
|
# Finally, dont ship perl development headers and libraries
|
|
all_DBG all_OPT::
|
|
@$(ECHO) "===== [`date`] unified packaging for $@..."
|
|
$(MAKE) NSARCH=$@ OBJDIR_TAG='' \
|
|
PKGDIR=$(topsrcdir)/build/package/$@.OBJ/mstone pkg-share-files
|
|
./ospkg.sh $@.OBJ \
|
|
$(notdir $(shell ls -d build/package/[A-Z]*$(subst all,,$@.OBJ)))
|
|
[ -d $(topsrcdir)/build/package/$@.OBJ/mstone/bin/WINNT4.0 ] \
|
|
&& cp -p $(NTFILES) $(topsrcdir)/build/package/$@.OBJ/mstone; :
|
|
-rm -f ./build/mstone-$(VERSION)-$@.tar.gz
|
|
cd ./build/package/$@.OBJ \
|
|
&& tar cf - . | gzip > ../../mstone-$(VERSION)-$@.tar.gz
|
|
-rm -f ./build/mstone-$(VERSION)-$@.zip
|
|
cd ./build/package/$@.OBJ \
|
|
&& zip -r -q ../../mstone-$(VERSION)-$@.zip .
|
|
|
|
|
|
########################################################################
|
|
# Copy all the packaged trees to the distribution site
|
|
# Copy in the unified tarball and zip file
|
|
# Link mstone to mailstone for Netscape back compatibility
|
|
# Re-map short Linux name to standard Netscape convention
|
|
dist::
|
|
@[ "$(DIST)" != "" ] || ($(MAKE) usage && /bin/false)
|
|
@[ ! -d "$(DIST)" ] || ($(ECHO) "Error: $(DIST) already exists" && \
|
|
$(MAKE) usage && /bin/false)
|
|
mkdir -p $(DIST)
|
|
cp -p build/mstone-$(VERSION)-all_*.*[a-z] $(DIST)/
|
|
(cd build/package; tar cf - *.OBJ) | (cd $(DIST); tar xf - )
|
|
for l in $(DIST)/*_???.OBJ ; do \
|
|
(cd $$l; ln -s mstone mailstone); done
|
|
cd $(DIST); for l in Linux*_???.OBJ ; do \
|
|
nn=`echo $$l | sed -e 's/_OPT/_glibc_PTH_OPT/' | sed -e 's/_DBG/_glibc_PTH_DBG/'`; \
|
|
ln -s $$l $$nn; done
|
|
|
|
# since the default is release mode, this can just work off a dependency
|
|
release:: targets
|
|
#release::
|
|
# @$(ECHO) "\n===== [`date`] making release build..."
|
|
# $(MAKE) BUILD_VARIANT=release OBJDIR_TAG=_OPT targets
|
|
@$(ECHO) "\n===== [`date`] making release build done."
|
|
|
|
rpackage:: release pkg #tarball zipfile
|
|
#rpackage:: release
|
|
# @$(ECHO) "\n===== [`date`] making release package..."
|
|
# $(MAKE) BUILD_VARIANT=release OBJDIR_TAG=_OPT pkg tarball zipfile
|
|
@$(ECHO) "\n===== [`date`] making release package done."
|
|
|
|
# since the default is release mode, start a make with the right mode
|
|
debug::
|
|
@$(ECHO) "\n===== [`date`] making debug build..."
|
|
$(MAKE) BUILD_VARIANT=debug OBJDIR_TAG=_DBG targets
|
|
@$(ECHO) "\n===== [`date`] making debug build done."
|
|
|
|
# We dont usually bother to tar up a debug build
|
|
dpackage:: debug
|
|
@$(ECHO) "\n===== [`date`] making debug package..."
|
|
$(MAKE) BUILD_VARIANT=debug OBJDIR_TAG=_DBG pkg
|
|
@$(ECHO) "\n===== [`date`] making debug package done."
|
|
|
|
# These are old and may be broken
|
|
cleanvariant::
|
|
(cd src; $(MAKE) OBJDIR=../$(OBJDIR) clean)
|
|
rm -rf $(PKGDIR)
|
|
|
|
clean::
|
|
$(MAKE) BUILD_VARIANT=release OBJDIR_TAG=_OPT cleanvariant
|
|
$(MAKE) BUILD_VARIANT=debug OBJDIR_TAG=_DBG cleanvariant
|
|
|
|
distcleanvariant::
|
|
(cd src; $(MAKE) OBJDIR=../$(OBJDIR) distclean)
|
|
rm -rf $(OBJDIR) $(PKGDIR)
|
|
|
|
distclean:: clean
|
|
$(MAKE) BUILD_VARIANT=release OBJDIR_TAG=_OPT distcleanvariant
|
|
$(MAKE) BUILD_VARIANT=debug OBJDIR_TAG=_DBG distcleanvariant
|