Release coccinelle-0.2.3rc1
[bpt/coccinelle.git] / Makefile
index 1a4cad6..62afbfe 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -238,14 +238,14 @@ distclean::
 preinstall: scripts/spatch scripts/spatch.opt scripts/spatch.byte
 
 # user will use spatch to run spatch.opt (native)
-scripts/spatch:
+scripts/spatch: Makefile.config
        cp scripts/spatch.sh scripts/spatch.tmp2
        sed "s|SHAREDIR|$(SHAREDIR)|g" scripts/spatch.tmp2 > scripts/spatch.tmp
        sed "s|LIBDIR|$(LIBDIR)|g" scripts/spatch.tmp > scripts/spatch
        rm -f scripts/spatch.tmp2 scripts/spatch.tmp
 
 # user will use spatch to run spatch (bytecode)
-scripts/spatch.byte:
+scripts/spatch.byte: Makefile.config
        cp scripts/spatch.sh scripts/spatch.byte.tmp3
        sed "s|\.opt||" scripts/spatch.byte.tmp3 > scripts/spatch.byte.tmp2
        sed "s|SHAREDIR|$(SHAREDIR)|g" scripts/spatch.byte.tmp2 \
@@ -257,7 +257,7 @@ scripts/spatch.byte:
                scripts/spatch.byte.tmp
 
 # user will use spatch.opt to run spatch.opt (native)
-scripts/spatch.opt:
+scripts/spatch.opt: Makefile.config
        cp scripts/spatch.sh scripts/spatch.opt.tmp2
        sed "s|SHAREDIR|$(SHAREDIR)|g" scripts/spatch.opt.tmp2 \
                > scripts/spatch.opt.tmp
@@ -342,214 +342,10 @@ version:
 
 
 ##############################################################################
-# Package rules
+# Deb package (for Ubuntu) and release rules
 ##############################################################################
 
-PACKAGE=$(PRJNAME)-$(VERSION)
-CCPACKAGE=coccicheck-$(CCVERSION)
-
-BINSRC=spatch env.sh env.csh standard.h standard.iso \
-       *.txt \
-       docs/manual/manual.pdf docs/manual/options.pdf docs/manual/main_grammar.pdf docs/spatch.1 \
-       docs/manual/cocci-python.txt \
-       demos/*
-BINSRC-PY=$(BINSRC) $(PYLIB) python/coccilib/
-BINSRC2=$(BINSRC:%=$(PACKAGE)/%)
-BINSRC2-PY=$(BINSRC-PY:%=$(PACKAGE)/%)
-
-TMP=/tmp
-OCAMLVERSION=$(shell ocaml -version |perl -p -e 's/.*version (.*)/$$1/;')
-
-# Procedure to do first time:
-#  cd ~/release
-#  cvs checkout coccinelle -dP
-#  cd coccinelle
-#
-# Procedure to do each time:
-#
-#  1) make prepackage # WARN: These will clean your local rep. of pending modifications
-#
-#  UPDATE VERSION number in globals/config.ml.in
-#  and commit it with
-#
-#  2) make release
-#
-#  The project is then automatically licensified.
-#
-#  Remember to comment the -g -dtypes in this Makefile
-#  You can also remove a few things, for instance I removed in this
-#   Makefile things related to popl/ and popl09/
-#  make sure that ocaml is the distribution ocaml of /usr/bin, not ~pad/...
-#
-#  3) make package
-#
-#  if WEBSITE is set properly, you can also run 'make website'
-# Check that run an ocaml in /usr/bin
-
-# To test you can try compile and run spatch from different instances
-# like my ~/coccinelle, ~/release/coccinelle, and the /tmp/coccinelle-0.X
-# downloaded from the website.
-
-# For 'make srctar' it must done from a clean
-# repo such as ~/release/coccinelle. It must also be a repo where
-# the scripts/licensify has been run at least once.
-# For the 'make bintar' I can do it from my original repo.
-
-prepackage:
-       cvs up -CdP
-       $(MAKE) distclean
-       sed -i "s|^OCAMLCFLAGS=.*$$|OCAMLCFLAGS=|" Makefile
-
-release:
-       cvs ci -m "Release $(VERSION)" globals/config.ml.in
-       $(MAKE) licensify
-
-package:
-       $(MAKE) package-src
-       $(MAKE) package-nopython
-       $(MAKE) package-python
-
-package-src:
-       $(MAKE) distclean       # Clean project
-       $(MAKE) srctar
-       $(MAKE) coccicheck
-
-package-nopython:
-       $(MAKE) distclean       # Clean project
-       ./configure --without-python
-       $(MAKE) docs
-       $(MAKE) bintar
-       $(MAKE) bytecodetar
-       $(MAKE) staticbintar
-
-package-python:
-       $(MAKE) distclean       # Clean project
-       ./configure             # Reconfigure project with Python support
-       $(MAKE) docs
-       $(MAKE) bintar-python
-       $(MAKE) bytecodetar-python
-
-
-# I currently pre-generate the parser so the user does not have to
-# install menhir on his machine. We could also do a few cleanups.
-# You may have first to do a 'make licensify'.
-#
-# update: make docs generates pdf but also some ugly .log files, so
-# make clean is there to remove them while not removing the pdf
-# (only distclean remove the pdfs).
-srctar:
-       make distclean
-       make docs
-       make clean
-       cp -a .  $(TMP)/$(PACKAGE)
-       cd $(TMP)/$(PACKAGE); cd parsing_cocci/; make parser_cocci_menhir.ml
-       cd $(TMP); tar cvfz $(PACKAGE).tgz --exclude-vcs $(PACKAGE)
-       rm -rf  $(TMP)/$(PACKAGE)
-
-
-bintar: all
-       rm -f $(TMP)/$(PACKAGE)
-       ln -s `pwd` $(TMP)/$(PACKAGE)
-       cd $(TMP); tar cvfz $(PACKAGE)-bin-x86.tgz --exclude-vcs $(BINSRC2)
-       rm -f $(TMP)/$(PACKAGE)
-
-staticbintar: all.opt
-       rm -f $(TMP)/$(PACKAGE)
-       ln -s `pwd` $(TMP)/$(PACKAGE)
-       make static
-       cd $(TMP); tar cvfz $(PACKAGE)-bin-x86-static.tgz --exclude-vcs $(BINSRC2)
-       rm -f $(TMP)/$(PACKAGE)
-
-# add ocaml version in name ?
-bytecodetar: all
-       rm -f $(TMP)/$(PACKAGE)
-       ln -s `pwd` $(TMP)/$(PACKAGE)
-       make purebytecode
-       cd $(TMP); tar cvfz $(PACKAGE)-bin-bytecode-$(OCAMLVERSION).tgz --exclude-vcs $(BINSRC2)
-       rm -f $(TMP)/$(PACKAGE)
-
-bintar-python: all
-       rm -f $(TMP)/$(PACKAGE)
-       ln -s `pwd` $(TMP)/$(PACKAGE)
-       cd $(TMP); tar cvfz $(PACKAGE)-bin-x86-python.tgz --exclude-vcs $(BINSRC2-PY)
-       rm -f $(TMP)/$(PACKAGE)
-
-# add ocaml version in name ?
-bytecodetar-python: all
-       rm -f $(TMP)/$(PACKAGE)
-       ln -s `pwd` $(TMP)/$(PACKAGE)
-       make purebytecode
-       cd $(TMP); tar cvfz $(PACKAGE)-bin-bytecode-$(OCAMLVERSION)-python.tgz --exclude-vcs $(BINSRC2-PY)
-       rm -f $(TMP)/$(PACKAGE)
-
-coccicheck:
-       cp -a `pwd`/scripts/coccicheck $(TMP)/$(CCPACKAGE)
-       tar cvfz $(TMP)/$(CCPACKAGE).tgz -C $(TMP) --exclude-vcs $(CCPACKAGE)
-       rm -rf $(TMP)/$(CCPACKAGE)
-
-clean-packages::
-       rm -f $(TMP)/$(PACKAGE).tgz
-       rm -f $(TMP)/$(PACKAGE)-bin-x86.tgz
-       rm -f $(TMP)/$(PACKAGE)-bin-x86-static.tgz
-       rm -f $(TMP)/$(PACKAGE)-bin-bytecode-$(OCAMLVERSION).tgz
-       rm -f $(TMP)/$(PACKAGE)-bin-x86-python.tgz
-       rm -f $(TMP)/$(PACKAGE)-bin-bytecode-$(OCAMLVERSION)-python.tgz
-       rm -f $(TMP)/$(CCPACKAGE).tgz
-
-#
-# No need to licensify 'demos'. Because these is basic building blocks
-# to use SmPL.
-#
-TOLICENSIFY=ctl engine globals parsing_cocci popl popl09 python scripts tools
-licensify:
-       ocaml str.cma tools/licensify.ml
-       set -e; for i in $(TOLICENSIFY); do cd $$i; ocaml str.cma ../tools/licensify.ml; cd ..; done
-
-# When checking out the source from diku sometimes I have some "X in the future"
-# error messages.
-fixdates:
-       echo do 'touch **/*.*'
-
-#fixCVS:
-#      cvs update -d -P
-#      echo do 'rm -rf **/CVS'
-
-ocamlversion:
-       @echo $(OCAMLVERSION)
-
-
-##############################################################################
-# Packaging rules -- To build deb packages
-##############################################################################
-EXCL_SYNC=--exclude ".git"          \
-       --exclude ".gitignore"      \
-       --exclude ".cvsignore"      \
-       --exclude "tests"           \
-       --exclude "TODO"            \
-       --cvs-exclude
-
-prepack:
-       rsync -a $(EXCL_SYNC) . $(TMP)/$(PACKAGE)
-       $(MAKE) -C $(TMP)/$(PACKAGE) licensify
-       rm -rf $(TMP)/$(PACKAGE)/tools
-
-packsrc: prepack
-#      $(MAKE) -C $(TMP)/$(PACKAGE)/debian lucid
-       $(MAKE) -C $(TMP)/$(PACKAGE)/debian karmic
-       $(MAKE) push
-       rm -rf  $(TMP)/$(PACKAGE)/
-
-push:
-       cd $(TMP)/ && for p in `ls $(PRJNAME)_$(VERSION).deb*_source.changes`; do dput $(PRJNAME) $$p ; done
-       rm -rf $(TMP)/$(PRJNAME)_$(VERSION).deb*_source.changes
-       rm -rf $(TMP)/$(PRJNAME)_$(VERSION).deb*_source.$(PRJNAME).upload
-       rm -rf $(TMP)/$(PRJNAME)_$(VERSION).deb*.dsc
-       rm -rf $(TMP)/$(PRJNAME)_$(VERSION).deb*.tar.gz
-
-packbin: prepack
-       $(MAKE) -C $(TMP)/$(PACKAGE)/debian binary
-       rm -rf  $(TMP)/$(PACKAGE)/
-       rm -rf $(TMP)/$(PRJNAME)_$(VERSION).deb*_source.build
+include Makefile.release
 
 ##############################################################################
 # Developer rules