# This is the developer's -*- Makefile -*-, not the user's Makefile. # Do not use it unless you know exactly what you are doing! # Expects GNU make # Some important programs: SHELL = /bin/sh MAKE = make PERL = perl GROFF = nroff -man # GROFF = groff -mandoc RM = rm -f RMRF = rm -rf CP = cp -afv WGET = wget --execute netrc=off --no-verbose --retry-connrefused --timeout=60 HG = hg # http://ctags.sourceforge.net CTAGS = ctags .PHONY : all build-prerequisites htmldoc makefiles configures check-configures \ update-ansi-tests update-asdf update-gmalloc potfiles fixperms \ view-man view-html check-sbcl install-gcc \ multibuild-linux-x86 multibuild-darwin-powerpc \ build-aux-update gnulib-imported distrib release pre-release \ upload upload-ssh upload-sf upload-gnu \ src-distrib doc-distrib gnu-distrib tag-release tp-mail all : build-prerequisites makefiles update-ansi-tests potfiles htmldoc build-prerequisites : check-configures fixperms \ src/version.h \ src/asmi386.h src/ari80386.msvc.c src/sp80386.msvc.c htmldoc: make -C doc all html MAKEMAKE_TMP=src/makemake makefiles : win32msvc/makefile.msvc7 win32msvc/makefile.msvc6 $(RM) $(MAKEMAKE_TMP) win32msvc/makefile.msvc6 : $(MAKEMAKE_TMP) cd src && ./makemake --with-dynamic-ffi --without-dynamic-modules \ win32msvc msvc6 > ../win32msvc/makefile.msvc6 win32msvc/makefile.msvc7 : $(MAKEMAKE_TMP) cd src && ./makemake --with-dynamic-ffi --without-dynamic-modules \ win32msvc msvc7 > ../win32msvc/makefile.msvc7 $(MAKEMAKE_TMP) : src/makemake.in version.sh . ./version.sh; \ sed -e "s/@PACKAGE_VERSION@/$${VERSION_NUMBER}/g" \ -e "s/@CLISP_DECOLONIZE@/echo $$x/" src/makemake.in \ -e "s/@module_configure_flags@/--disable-option-checking/" \ -e "s,@SHELL@,/bin/sh," > $(MAKEMAKE_TMP) chmod a+x $(MAKEMAKE_TMP) CURDIR=$(shell pwd) MODULES=berkeley-db clx/new-clx dirkey fastcgi i18n oracle pari pcre dbus \ postgresql rawsock readline regexp syscalls zlib gtk2 gdbm libsvm CONFIG_H_IN = src/config.h.in $(patsubst %,modules/%/config.h.in,$(MODULES)) MOD_CONFIGURES=$(patsubst %,modules/%/configure,$(MODULES)) CONFIGURES=src/configure $(MOD_CONFIGURES) src/gllib/Makefile.in : src/gllib/Makefile.am src/configure.in src/aclocal.m4 cd src && automake --gnits gllib/Makefile && \ sed -i -e 's,$$(top_srcdir)/src/build-aux,$$(top_srcdir)/build-aux,' \ gllib/Makefile.in configures : $(CONFIGURES) $(CONFIG_H_IN) src/gllib/Makefile.in src/aclocal.m4 : $(wildcard src/m4/*.m4) $(wildcard src/glm4/*.m4) \ $(addsuffix .in,$(CONFIGURES)) $(RM) src/configure.ac $(CP) src/configure.in src/configure.ac cat $(addsuffix .in,$(MOD_CONFIGURES)) | \ egrep -v -e 'AC_(INIT|PREREQ|CANONICAL_|GNU_SOURCE|CONFIG_HEADER|OUTPUT)' \ -e 'AC_CONFIG_FILE.*(Makefile|link\.sh)' >> src/configure.ac cd src && aclocal --output=aclocal.m4 -I $(CURDIR)/src/m4 -I $(CURDIR)/src/glm4 $(RM) src/configure.ac AUTOCONF_FILES = src/aclocal.m4 AUTOCONF_CACHE = autom4te.cache $(CONFIGURES) : %/configure : %/configure.in $(AUTOCONF_FILES) version.sh cd $* && autoconf --include=$(CURDIR)/src $(CONFIG_H_IN) : %/config.h.in : %/configure.in $(AUTOCONF_FILES) cd $* && autoheader --include=$(CURDIR)/src # syntax check check-configures : configures set -e; for f in $(CONFIGURES); do bash -x -n $$f; done $(RMRF) `find . -name $(AUTOCONF_CACHE)`; ANSITESTS_SVN = svn://common-lisp.net/project/ansi-test/svn/trunk/ansi-tests update-ansi-tests: if test -d ansi-tests; then \ cd ansi-tests && \ svn update; \ else \ svn co $(ANSITESTS_SVN); \ fi # this must not be in "all" because this downloads 23MB XSL + 500kB DTD update-docbook-utils : make -C doc docbook-xsl docbook-dtd CLISP=$(CURDIR)/build/clisp potfiles : cd src/po && CLISP='$(CLISP)' $(MAKE) -f Makefile.devel && $(MAKE) -f Makefile.devel clean fixperms : ./utils/fix-perms.sh view-man : grep -v '^#[ie]' doc/_clisp.1 | $(GROFF) -Tascii | less # all possible browsers, some might not be present, but we do not care # list GUI first because they put themselves into background BROWSERS=firefox mozilla netscape opera links lynx view-html : grep -v '^#[ie]' doc/_clisp.html > /tmp/clisp.html for b in $(BROWSERS); do $$b /tmp/clisp.html; done src/version.h: version.sh . ./version.sh ; { \ echo "/* generated by Makefile.devel from version.sh */" ; \ echo "#define PACKAGE_NAME \"GNU CLISP\"" ; \ echo "#define PACKAGE_TARNAME \"clisp\"" ; \ echo "#define PACKAGE_VERSION \"$$VERSION_NUMBER ($$RELEASE_DATE)\"" ; \ echo "#define PACKAGE_STRING \"GNU CLISP $$VERSION_NUMBER ($$RELEASE_DATE)\"" ; \ echo "#define PACKAGE_BUGREPORT \"http://clisp.org/\""; \ } > src/version.h src/asmi386.h : src/asmi386.hh sed -e 's,//.*$$,,' < src/asmi386.hh > src/asmi386.h src/ari80386.msvc.c : src/ari80386.d src/asmi386.sh src/asmi386.sh -no-C < src/ari80386.d > src/ari80386.msvc.c src/sp80386.msvc.c : src/sp80386.d src/asmi386.sh src/asmi386.sh -no-C < src/sp80386.d > src/sp80386.msvc.c # Build and test all essential memory models on a Linux/x86 machine. MULTIBUILD_OPTIONS = MULTIBUILD_CFLAGS = -g multibuild-linux-x86: build-linux-x86-standard-spvw_mixed_blocks-staggered \ build-linux-x86-standard-spvw_mixed_blocks-opposite \ build-linux-x86-standard-spvw_mixed_blocks-opposite-fixedmemsize \ build-linux-x86-standard-spvw_mixed_pages \ build-linux-x86-noexec-spvw_mixed_blocks-staggered \ build-linux-x86-noexec-spvw_mixed_blocks-opposite \ build-linux-x86-noexec-spvw_mixed_blocks-opposite-fixedmemsize \ build-linux-x86-noexec-spvw_mixed_pages \ build-linux-x86-spvw_pure_blocks \ build-linux-x86-wide build-linux-x86-standard-spvw_mixed_blocks-staggered: $(RMRF) $@ CFLAGS="-O -falign-functions=4 $(MULTIBUILD_CFLAGS)" \ CPPFLAGS="-DSTANDARD_HEAPCODES -DCONS_HEAP_GROWS_UP" \ ./configure --cbc $(MULTIBUILD_OPTIONS) $@ build-linux-x86-standard-spvw_mixed_blocks-opposite: $(RMRF) $@ CFLAGS="-O -falign-functions=4 $(MULTIBUILD_CFLAGS)" \ CPPFLAGS="-DSTANDARD_HEAPCODES -DCONS_HEAP_GROWS_DOWN" \ ./configure --cbc $(MULTIBUILD_OPTIONS) $@ build-linux-x86-standard-spvw_mixed_blocks-opposite-fixedmemsize: $(RMRF) $@ CFLAGS="-O -falign-functions=4 $(MULTIBUILD_CFLAGS)" \ CPPFLAGS="-DSTANDARD_HEAPCODES -DNO_VIRTUAL_MEMORY -DNO_TRIVIALMAP" \ ./configure --cbc $(MULTIBUILD_OPTIONS) $@ build-linux-x86-standard-spvw_mixed_pages: $(RMRF) $@ CFLAGS="-O -falign-functions=4 $(MULTIBUILD_CFLAGS)" \ CPPFLAGS="-DSTANDARD_HEAPCODES -DNO_SINGLEMAP -DNO_TRIVIALMAP" \ ./configure --cbc $(MULTIBUILD_OPTIONS) $@ build-linux-x86-noexec-spvw_mixed_blocks-staggered: $(RMRF) $@ CFLAGS="-O -falign-functions=4 $(MULTIBUILD_CFLAGS)" \ CPPFLAGS="-DLINUX_NOEXEC_HEAPCODES -DCONS_HEAP_GROWS_UP" \ ./configure --cbc $(MULTIBUILD_OPTIONS) $@ build-linux-x86-noexec-spvw_mixed_blocks-opposite: $(RMRF) $@ CFLAGS="-O -falign-functions=4 $(MULTIBUILD_CFLAGS)" \ CPPFLAGS="-DLINUX_NOEXEC_HEAPCODES -DCONS_HEAP_GROWS_DOWN" \ ./configure --cbc $(MULTIBUILD_OPTIONS) $@ build-linux-x86-noexec-spvw_mixed_blocks-opposite-fixedmemsize: $(RMRF) $@ CFLAGS="-O -falign-functions=4 $(MULTIBUILD_CFLAGS)" \ CPPFLAGS="-DLINUX_NOEXEC_HEAPCODES -DNO_VIRTUAL_MEMORY -DNO_TRIVIALMAP" \ ./configure --cbc $(MULTIBUILD_OPTIONS) $@ build-linux-x86-noexec-spvw_mixed_pages: $(RMRF) $@ CFLAGS="-O -falign-functions=4 $(MULTIBUILD_CFLAGS)" \ CPPFLAGS="-DLINUX_NOEXEC_HEAPCODES -DNO_SINGLEMAP -DNO_TRIVIALMAP" \ ./configure --cbc $(MULTIBUILD_OPTIONS) $@ build-linux-x86-spvw_pure_blocks: $(RMRF) $@ CFLAGS="-O -falign-functions=4 $(MULTIBUILD_CFLAGS)" \ CPPFLAGS="-DTYPECODES" \ ./configure --cbc $(MULTIBUILD_OPTIONS) $@ build-linux-x86-wide: $(RMRF) $@ CFLAGS="-O -falign-functions=4 $(MULTIBUILD_CFLAGS)" \ CPPFLAGS="-DWIDE" \ ./configure --cbc $(MULTIBUILD_OPTIONS) $@ multibuild-darwin-powerpc: \ build-darwin-powerpc-standard-spvw_mixed_blocks-staggered \ build-darwin-powerpc-standard-spvw_mixed_blocks-opposite \ build-darwin-powerpc-standard-spvw_mixed_blocks-opposite-fixedmemsize \ build-darwin-powerpc-standard-spvw_mixed_pages \ build-darwin-powerpc-noexec-spvw_mixed_blocks-staggered \ build-darwin-powerpc-noexec-spvw_mixed_blocks-opposite \ build-darwin-powerpc-noexec-spvw_mixed_blocks-opposite-fixedmemsize \ build-darwin-powerpc-noexec-spvw_mixed_pages \ build-darwin-powerpc-spvw_pure_blocks \ build-darwin-powerpc-wide build-darwin-powerpc-standard-spvw_mixed_blocks-staggered: $(RMRF) $@ CFLAGS="-O $(MULTIBUILD_CFLAGS)" \ CPPFLAGS="-DSTANDARD_HEAPCODES -DCONS_HEAP_GROWS_UP" \ ./configure --cbc $(MULTIBUILD_OPTIONS) $@ build-darwin-powerpc-standard-spvw_mixed_blocks-opposite: $(RMRF) $@ CFLAGS="-O $(MULTIBUILD_CFLAGS)" \ CPPFLAGS="-DSTANDARD_HEAPCODES -DCONS_HEAP_GROWS_DOWN" \ ./configure --cbc $(MULTIBUILD_OPTIONS) $@ build-darwin-powerpc-standard-spvw_mixed_blocks-opposite-fixedmemsize: $(RMRF) $@ CFLAGS="-O $(MULTIBUILD_CFLAGS)" \ CPPFLAGS="-DSTANDARD_HEAPCODES -DNO_VIRTUAL_MEMORY -DNO_TRIVIALMAP" \ ./configure --cbc $(MULTIBUILD_OPTIONS) $@ build-darwin-powerpc-standard-spvw_mixed_pages: $(RMRF) $@ CFLAGS="-O $(MULTIBUILD_CFLAGS)" \ CPPFLAGS="-DSTANDARD_HEAPCODES -DNO_SINGLEMAP -DNO_TRIVIALMAP" \ ./configure --cbc $(MULTIBUILD_OPTIONS) $@ build-darwin-powerpc-noexec-spvw_mixed_blocks-staggered: $(RMRF) $@ CFLAGS="-O $(MULTIBUILD_CFLAGS)" \ CPPFLAGS="-DLINUX_NOEXEC_HEAPCODES -DCONS_HEAP_GROWS_UP" \ ./configure --cbc $(MULTIBUILD_OPTIONS) $@ build-darwin-powerpc-noexec-spvw_mixed_blocks-opposite: $(RMRF) $@ CFLAGS="-O $(MULTIBUILD_CFLAGS)" \ CPPFLAGS="-DLINUX_NOEXEC_HEAPCODES -DCONS_HEAP_GROWS_DOWN" \ ./configure --cbc $(MULTIBUILD_OPTIONS) $@ build-darwin-powerpc-noexec-spvw_mixed_blocks-opposite-fixedmemsize: $(RMRF) $@ CFLAGS="-O $(MULTIBUILD_CFLAGS)" \ CPPFLAGS="-DLINUX_NOEXEC_HEAPCODES -DNO_VIRTUAL_MEMORY -DNO_TRIVIALMAP" \ ./configure --cbc $(MULTIBUILD_OPTIONS) $@ build-darwin-powerpc-noexec-spvw_mixed_pages: $(RMRF) $@ CFLAGS="-O $(MULTIBUILD_CFLAGS)" \ CPPFLAGS="-DLINUX_NOEXEC_HEAPCODES -DNO_SINGLEMAP -DNO_TRIVIALMAP" \ ./configure --cbc $(MULTIBUILD_OPTIONS) $@ build-darwin-powerpc-spvw_pure_blocks: $(RMRF) $@ CFLAGS="-O $(MULTIBUILD_CFLAGS)" \ CPPFLAGS="-DTYPECODES" \ ./configure --cbc $(MULTIBUILD_OPTIONS) $@ build-darwin-powerpc-wide: $(RMRF) $@ CFLAGS="-O $(MULTIBUILD_CFLAGS)" \ CPPFLAGS="-DWIDE" \ ./configure --cbc $(MULTIBUILD_OPTIONS) $@ SRCDIRS=src utils benchmarks emacs modules sacla-tests tests TAGS : force $(CTAGS) -e -R --langmap=c:.c.d.f $(SRCDIRS) tags : force $(CTAGS) -R --langmap=c:.c.d.f $(SRCDIRS) # Bootstrap SBCL. SBCL_VERSION = 0.8.15 SBCL_SOURCE_FILE = sbcl-$(SBCL_VERSION)-source.tar.bz2 SBCL_SOURCE_URL = http://www.haible.de/bruno/$(SBCL_SOURCE_FILE) check-sbcl: ./configure --cbc build-for-sbcl test -f $(SBCL_SOURCE_FILE) || $(WGET) $(SBCL_SOURCE_URL) $(RMRF) sbcl-$(SBCL_VERSION) bunzip2 -c < $(SBCL_SOURCE_FILE) | tar xvf - clisp=$(CURDIR)/build-for-sbcl/clisp; \ cd sbcl-$(SBCL_VERSION) && sh make.sh $$clisp # Build a GCC from source. # Note that this requires ca. 1 GB of disk space. GCC_VERSION = 3.4.3 GCC_SOURCE_FILE = gcc-$(GCC_VERSION).tar.bz2 GCC_SOURCE_URL = http://ftp.gnu.org/gnu/gcc/gcc-$(GCC_VERSION)/$(GCC_SOURCE_FILE) # Put here the --prefix that you would like to use for installing gcc. # It should *not* be the same --prefix as you use for other programs. GCC_INSTALL_DIR = $(shell dirname $$(dirname $$(which clisp | head -1)))/inst-gcc-$(GCC_VERSION) install-gcc: test -f $(GCC_SOURCE_FILE) || $(WGET) $(GCC_SOURCE_URL) $(RMRF) gcc-$(GCC_VERSION) gcc-$(GCC_VERSION)-build bunzip2 -c < $(GCC_SOURCE_FILE) | tar xvf - mkdir gcc-$(GCC_VERSION)-build gcc_install_dir='$(GCC_INSTALL_DIR)' ; \ cd gcc-$(GCC_VERSION)-build && ../gcc-$(GCC_VERSION)/configure --prefix="$$gcc_install_dir" --enable-shared --enable-threads `if grep __GLIBC__ /usr/include/features.h > /dev/null 2>/dev/null; then echo --enable-__cxa_atexit; fi` --enable-version-specific-runtime-libs --enable-languages=c,c++ --enable-nls cd gcc-$(GCC_VERSION)-build && make bootstrap cd gcc-$(GCC_VERSION)-build && make install $(RMRF) gcc-$(GCC_VERSION)-build $(RMRF) gcc-$(GCC_VERSION) GNULIB_CVS_ROOT = :pserver:anonymous@pserver.git.sv.gnu.org:/gnulib.git GNULIB_CVS_REPOSITORY = HEAD GNULIB_GIT = git://git.savannah.gnu.org/gnulib.git GNULIB_CHECKOUT := gnulib update-gnulib: if test -d $(GNULIB_CHECKOUT); then \ cd $(GNULIB_CHECKOUT) ; \ if test -d .git; then git pull; else cvs update -d -P; fi \ else \ if git --version >/dev/null 2>&1; then \ git clone "$(GNULIB_GIT)" $(GNULIB_CHECKOUT) ; \ else cvs -d "$(GNULIB_CVS_ROOT)" checkout -d $(GNULIB_CHECKOUT) $(GNULIB_CVS_REPOSITORY); fi \ fi ASDF_URL = http://common-lisp.net/project/asdf/asdf.lisp update-asdf : force $(WGET) -O modules/asdf/asdf.lisp $(ASDF_URL) GMALLOC_URL = http://git.savannah.gnu.org/cgit/emacs.git/plain/src/gmalloc.c update-gmalloc : force $(WGET) -O src/gmalloc.c $(GMALLOC_URL) # it is important to get ltmain.sh and libtool.m4 from the same version of # libtool. Don't rely on what's installed in /usr/share or similar. LIBTOOL_VERSION = 2.4 LIBTOOL_SOURCE_FILE = libtool-$(LIBTOOL_VERSION).tar.gz LIBTOOL_SOURCE_URL = http://ftp.gnu.org/gnu/libtool/$(LIBTOOL_SOURCE_FILE) # an alternative way to update libtool files is "cd src; libtoolize --copy" AUTOMAKE_VERSION = 1.11.1 AUTOMAKE_GIT = http://git.savannah.gnu.org/cgit/automake.git/plain/lib/ GTK2_SVN_ROOT = http://svn.gnome.org/svn/gtk+/trunk/m4macros GNULIB_AUX=config.guess config.rpath config.sub depcomp install-sh missing # it is important not to have "*.m4" targets with ": force" dependencies # because otherwise every make will rebuild all configures build-aux-update : update-gnulib force for f in $(GNULIB_AUX); do \ $(CP) $(GNULIB_CHECKOUT)/build-aux/$$f src/build-aux; done \ for f in compile ylwrap; do \ $(WGET) -O src/build-aux/$$f $(AUTOMAKE_GIT)$$f?v$(AUTOMAKE_VERSION); \ done chmod +x src/build-aux/compile src/build-aux/ylwrap $(RMRF) libtool-$(LIBTOOL_VERSION) $(LIBTOOL_SOURCE_FILE) test -f $(LIBTOOL_SOURCE_FILE) || $(WGET) $(LIBTOOL_SOURCE_URL) $(RMRF) libtool-$(LIBTOOL_VERSION) gunzip -c < $(LIBTOOL_SOURCE_FILE) | tar xf - $(CP) libtool-$(LIBTOOL_VERSION)/libltdl/config/ltmain.sh src/build-aux/ltmain.sh chmod +x src/build-aux/ltmain.sh for f in libtool ltoptions ltsugar ltversion lt~obsolete; do \ $(CP) libtool-$(LIBTOOL_VERSION)/libltdl/m4/$$f.m4 src/m4/; done $(RMRF) libtool-$(LIBTOOL_VERSION) $(LIBTOOL_SOURCE_FILE) cd src/m4; $(RM) gtk-2.0.m4; $(WGET) $(GTK2_SVN_ROOT)/gtk-2.0.m4 GNULIB_TOOL = $(GNULIB_CHECKOUT)/gnulib-tool --import \ --no-vc-files --no-libtool --no-changelog --aux-dir=src/build-aux GNULIB_CORE = no-c++ stdint stdbool havelib gettext localcharset stdlib \ unistd alloca-opt environ lstat stat readlink sys_uio sys_select \ mkfifo mknod mkstemp mkdtemp getloadavg bind accept listen recv send \ getsockopt shutdown connect socket setsockopt getsockname getpeername \ uniwidth/width streq uniname/uniname unitypes link-follow close select \ host-cpu-c-abi socklen sockets fd-hook setenv unsetenv errno ioctl \ arpa_inet netinet_in inet_ntop inet_pton socketlib strerror_r-posix \ nocrash libsigsegv gnu-make gettimeofday getpagesize sys_time sys_wait GNULIB_SYSCALLS = mktime strftime strptime strverscmp uname fnmatch-gnu GNULIB_IMPORTS = $(GNULIB_CORE) $(GNULIB_SYSCALLS) regex recvfrom sendto GNULIB_COMMON = $(GNULIB_CORE) $(GNULIB_MODULES) GNULIB_IMPORTED_LOG = /tmp/gnulib-imported.log gnulib-imported : update-gnulib force $(RMRF) src/glm4 src/gllib $(RM) configure.ac; ln -sv src/configure.in configure.ac $(RM) src/glm4/gnulib-cache.m4 $(GNULIB_IMPORTED_LOG) $(GNULIB_TOOL) --source-base=src/gllib --m4-base=src/glm4 \ --avoid=xalloc-die \ $(GNULIB_IMPORTS) 2>&1 | tee -a $(GNULIB_IMPORTED_LOG) $(RM) configure.ac src/gl*/*~ cd src/glm4; \ for f in *.m4; do \ if test -f ../m4/$$f; then \ echo == $$f; \ if cmp $$f ../m4/$$f; then \ cd ../m4; $(HG) rm -f $$f; cd ../glm4; \ fi; \ fi; \ done $(HG) revert src/gllib/Makefile.in src/gllib/README src/glm4/README $(HG) st --unknown --deleted @echo the import log is in $(GNULIB_IMPORTED_LOG) distrib : fixperms src-distrib doc-distrib gnu-distrib # start gpg agent before "make release"! release : distrib upload tag-release # 2-3 weeks before a release # manually: check for new versions of # libsvm, netica api, postgresql, berkeley-db, dbus, pcre, readline pre-release : gnulib-imported build-aux-update update-asdf update-gmalloc tp-mail ## RELEASE TODO: # Before doing a "make distrib": # * update version.sh, src/NEWS, doc/history.xml # * "make -f Makefile.devel all" # === Note that for clisp to report its version correctly, src/version.h and # === src/configure must be regenerated after version.sh is updated # web pages to be updated: # * www/index.html, www/impnotes.html, www/clisp.html, www/impnotes/ # dates to be updated (1st release each calendar year): # * banner in src/spvw.d # * COPYRIGHT # * clisp-doc-copyright in doc/impent.xml # * AC_COPYRIGHT in src/configure.in ## CLISP release announcements go to: # clisp-announce@lists.sourceforge.net # info-gnu@gnu.org # news:comp.lang.lisp # news:comp.os.linux.announce (linux-announce@news.ornl.gov) # http://freshmeat.net/projects/clisp/ # https://sourceforge.net/news/submit.php?group_id=1355 # WIKIs to be updated: http://en.wikipedia.org/wiki/CLISP VER=$(shell . ./version.sh ; echo $$VERSION_NUMBER) REL=$(shell . ./version.sh ; echo $$RELEASE_DATE) ARCHIVE=../archives/$(VER) SUFFIX= # The distribution's top directory is called TOPDIR here. TOPDIR=clisp-$(VER)$(SUFFIX) SRC_DIST=$(ARCHIVE)/$(TOPDIR).tar.bz2 SRC_DIST1=$(ARCHIVE)/$(TOPDIR).tar.gz DOC_DIST=$(ARCHIVE)/$(TOPDIR)-impnotes.zip UPLOAD=$(SRC_DIST) $(SRC_DIST1) $(DOC_DIST) src/NEWS SSHUP=podval:~/public_html/clisp/ GNU_TOP=$(ARCHIVE)/NEWS $(ARCHIVE)/SUMMARY GNU_SRC=$(SRC_DIST1) $(SRC_DIST) GNU_DIST=$(GNU_TOP) $(GNU_SRC) GNU_SYM=$(ARCHIVE)/$(TOPDIR).symlink.directive # Assume tar/bzip2/gzip are present # set this if you are using GNU tar EXCLUDE=--exclude .hg --exclude \*.fas --exclude \*.lib --exclude \*.obj \ --exclude \*.exe --exclude \*.mem --exclude \*.o --exclude build \ --exclude .hgignore --exclude \*~ --exclude .\#\* \ --exclude $(AUTOCONF_CACHE) --exclude tmp --exclude queued \ --exclude libtool-\*.tar.gz --exclude TAGS --exclude tags \ `grep '^doc/' .hgignore | sed "s,^doc/,--exclude ,"` \ --exclude \*.elc --exclude \*.orig --exclude \*.rej T = $(TOPDIR) SOURCES1 = $T/ANNOUNCE $T/COPYRIGHT $T/GNU-GPL $T/INSTALL $T/SUMMARY $T/configure SOURCES2 = $T/src SOURCES4 = $T/utils SOURCES5 = $T/unix $T/win32msvc SOURCES6 = $T/modules # for developers only: $T/benchmarks $T/sacla-tests $T/ansi-tests SOURCES7 = $T/tests $T/emacs $T/doc $T/Makefile.devel SOURCES = $(SOURCES1) $(SOURCES2) $(SOURCES4) $(SOURCES5) $(SOURCES6) $(SOURCES7) SF_USER = `whoami` $(SRC_DIST1) : $(SRC_DIST) bzcat -v $(SRC_DIST) | gzip -9 -v > $(SRC_DIST1) upload-ssh : $(SRC_DIST1) force for h in $(SSHUP) ; do scp $(UPLOAD) $${h}; done upload-sf : $(SRC_DIST1) force scp $(UPLOAD) $(SF_USER),clisp@frs.sf.net:/home/frs/project/c/cl/clisp/clisp/$(VER)/ upload-gnu : force # gnu-distrib -- do not re-sign everything UP=""; for f in $(GNU_DIST); do \ UP=$${UP}" $$f $$f.sig $$f.directive.asc"; done; \ lftp ftp://ftp-upload.gnu.org/incoming/ftp -e "mput $${UP} $(GNU_SYM).asc; quit" upload : upload-ssh upload-sf upload-gnu src-distrib : force mkdir -p $(ARCHIVE) ln -s . $(TOPDIR) tar cvfhj $(SRC_DIST) $(EXCLUDE) $(SOURCES) $(RM) $(TOPDIR) echo $(SRC_DIST) doc-distrib : force mkdir -p $(ARCHIVE) ln -s . $(TOPDIR) zip -9vor $(DOC_DIST) $(TOPDIR)/doc/html -x \*.cvsignore -x \*.symlinks -x \*CVS\* -x .\#\* -x \*~ $(RM) $(TOPDIR) # http://www.gnu.org/prep/maintain/html_node/Automated-Upload-Procedure.html GPG=gpg --use-agent --yes gnu-distrib : $(SRC_DIST1) force mkdir -p $(ARCHIVE) $(CP) src/NEWS SUMMARY $(ARCHIVE) for f in $(GNU_DIST); do $(GPG) -b $$f; done for f in $(GNU_TOP); do \ $(RM) $$f.directive; \ echo "version: 1.1" >> $$f.directive; \ echo "directory: clisp" >> $$f.directive; \ echo "filename: "`basename $$f` >> $$f.directive; \ $(GPG) --clearsign $$f.directive; \ done for f in $(GNU_SRC); do \ $(RM) $$f.directive; \ echo "version: 1.1" >> $$f.directive; \ echo "directory: clisp/release/$(VER)" >> $$f.directive; \ echo "filename: "`basename $$f` >> $$f.directive; \ $(GPG) --clearsign $$f.directive; \ done echo "version: 1.1" > $(GNU_SYM) echo "directory: clisp/release" >> $(GNU_SYM) echo "rmsymlink: latest" >> $(GNU_SYM) echo "symlink: $(VER) latest" >> $(GNU_SYM) $(GPG) --clearsign $(GNU_SYM) tag-release : force $(HG) tag clisp_$(subst .,_,$(VER))-$(REL) . TP_EMAIL=coordinator@translationproject.org MESSAGE_FILE=tp_message TP_SUFFIX=-pre1 tp-mail : force echo "Domain: clisp" > $(MESSAGE_FILE) if test -n "$(TP_SUFFIX)"; then \ f=`make -f Makefile.devel src-distrib SUFFIX=$(TP_SUFFIX) | tail -n 2 | head -n 1`; \ for h in $(SSHUP) ; do scp $$f $${h}; done \ else f=$(SRC_DIST); fi; f=`basename $$f`; \ echo "Location: http://clisp.podval.org/$$f" >> $(MESSAGE_FILE); \ cat $(MESSAGE_FILE); \ mail -s "CLISP pre-release $$f is available" \ -c clisp-devel@lists.sf.net $(TP_EMAIL) < $(MESSAGE_FILE) $(RM) $(MESSAGE_FILE) force :