# Note: Makefile is built automatically from Makefile.in
#
-# $Id: GNUmakefile.in,v 1.104.2.5 2002/05/30 15:35:01 hal9 Exp $
+# $Id: GNUmakefile.in,v 1.104.2.17 2002/08/16 03:19:34 hal9 Exp $
#
# Written by and Copyright (C) 2001 the SourceForge
# Privoxy team. http://www.privoxy.org/
CODE_STATUS = @CODE_STATUS@
VERSION = $(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_POINT)
RPM_VERSION = $(VERSION)
+RPM_PACKAGEV = ""
+SNAPVERSION = $(RPM_VERSION)-$(shell date "+%Y%m%d")
#############################################################################
RM = rm -f
STRIP_PROG = strip
SED = sed
+GREP = grep
CAT = cat
RPM = rpm
+RPMBUILD = rpmbuild
MV = mv
TAR = tar
LN = ln
#DOSFILTER = $(SED) -e $$'s,$$,\r,'
#DOSFILTER = gawk -v ORS='\r\n' '{print $0;}'
DOSFILTER = $(PERL) -p -e 's/\n/\r\n/'
+CVSROOT = :pserver:anonymous@cvs.ijbswa.sourceforge.net:/cvsroot/ijbswa
+TMPDIR := $(shell mktemp -d /tmp/$(PROGRAM).XXXXXX)
#############################################################################
# Setup for make distribution rh and suse for now
`find doc/text/ -type f | grep -v "CVS" | grep -v "\.\#" | grep -v ".*~" | grep -v ".cvsignore" | grep -v "TAGS"` \
`find doc/webserver/ -name "*.html" | grep -v "\(webserver\|team\)\/index\.html"` \
`find doc/webserver/ -name "*.css"` \
- privoxy.1
+ privoxy.1 \
+ doc/pdf/*.pdf
#############################################################################
# Filenames and libraries
#
# There should NOT be any targets above this line.
#############################################################################
-all: $(PROGRAM)
+all: $(PROGRAM) default.action
#############################################################################
$(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
+#############################################################################
+# Strip master copy comments from default.action:
+#############################################################################
+default.action: default.action.master
+ $(GREP) -v '^#MASTER#' $< > $@
+
#############################################################################
# Win32 config files
#############################################################################
trust.txt: trust
$(DOSFILTER) < $< > $@
-re_filterfile.txt: re_filterfile
- $(DOSFILTER) < $< > $@
-
-
#############################################################################
# Pre-dist check:
#############################################################################
fi;
+#############################################################################
+# create tar.gz from CVS:
+# This make-target is usually called through 'create-archive'. If you
+# run 'make create-snapshot' without setting SNAPVERSION, you'll get a
+# tar.gz with the current date in the name and as a releasenumber in the
+# spec-file. But the main usage is to run it as follows (Red Hat example):
+# make SNAPVERSION=1.6x create-snapshot
+# This creates a tar.gz and spec-file for a Red Hat 6.x version.
+#############################################################################
+create-snapshot:
+ @tag=`cvs -d $(CVSROOT) status Makefile | awk ' /Sticky Tag/ { print $$3 } '` 2> /dev/null; \
+ [ x"$$tag" = x"(none)" ] && tag=HEAD; \
+ echo "*** Creating package from $$tag!"; \
+ cd $(TMPDIR) ; cvs -Q -d $(CVSROOT) export -r $$tag current || echo "Um... export aborted."
+ @cd $(TMPDIR)/current; \
+ TMPFILE=$$(mktemp -q /tmp/$(PROGRAM).XXXXXX); \
+ if $(SED) -e 's/^\(Version:\).*/\1 $(RPM_VERSION)/g' \
+ -e 's/^\(Release:\).*/\1 $(SNAPVERSION)/g' \
+ privoxy-rh.spec > $$TMPFILE ; then \
+ $(MV) -f $$TMPFILE privoxy-rh.spec; \
+ else \
+ $(ECHO) "Could not set version info in specfile."; \
+ exit 1;\
+ fi;\
+ if $(SED) -e 's/^\(Version:\).*/\1 $(RPM_VERSION)/g' \
+ -e 's/^\(Release:\).*/\1 $(SNAPVERSION)/g' \
+ privoxy-suse.spec > $$TMPFILE ; then \
+ $(MV) -f $$TMPFILE privoxy-suse.spec; \
+ else \
+ $(ECHO) "Could not set version info in specfile."; \
+ exit 1;\
+ fi; \
+ $(RM) $(TMPFILE); \
+ cd $(TMPDIR)/current; \
+ $(TAR) --exclude ".cvsignore" --exclude "CVS" --exclude \
+ "privoxy-suse.spec" -czf $(TMPDIR)/$(PROGRAM)-rh-$(VERSION).tar.gz .; \
+ $(TAR) --exclude ".cvsignore" --exclude "CVS" --exclude \
+ "privoxy-rh.spec" -czf $(TMPDIR)/$(PROGRAM)-suse-$(VERSION).tar.gz .
+ @$(MV) -f $(TMPDIR)/$(PROGRAM)-rh-$(VERSION).tar.gz .
+ @$(MV) -f $(TMPDIR)/$(PROGRAM)-suse-$(VERSION).tar.gz .
+ @$(RM) -rf $(TMPDIR)
+ @echo "Resulting files are $(PROGRAM)-rh-$(VERSION).tar.gz and"
+ @echo " $(PROGRAM)-suse-$(VERSION).tar.gz"
+
+
+#############################################################################
+# looks at the version of Makefile and exports a corresponding source-tree
+# example: if the Makefile has the sticky tag v_2_9_13, you'll get
+# privoxy-*-2.4.13.tar.gz. Two different tar files will be written, one for
+# Red Hat and one for SuSe (different spec-files)
+#############################################################################
+create-archive:
+ make SNAPVERSION=$(SNAPVERSION) create-snapshot
+
#############################################################################
# RPM specifice stuff (SuSE or Redhat, ..)
#############################################################################
conectiva-dist: rpm-stuff conectiva-spec
$(TAR) --exclude ".cvsignore" --exclude "CVS" --exclude "privoxy-suse.spec" --exclude "privoxy-rh.spec" --exclude "PACKAGERS" -czf $(TAR_ARCH) .
- $(RPM) --clean -ta $(TAR_ARCH)
+ $(RPMBUILD) --clean -ta $(TAR_ARCH)
if [ -f $(TAR_ARCH) ]; then $(RM) $(TAR_ARCH); fi
conectiva-upload: check-release
# redhat distribution alpha and x86
#############################################################################
redhat-dist: rpm-stuff
+ echo $(CONFIG_FILES)
+ $(TAR) --exclude ".cvsignore" --exclude "CVS" --exclude "privoxy-suse.spec" --exclude "privoxy-cl.spec" --exclude "PACKAGERS" -czf $(TAR_ARCH) .
+ $(RPMBUILD) --clean -ta $(TAR_ARCH)
+ if [ -f $(TAR_ARCH) ]; then $(RM) $(TAR_ARCH); fi
+# For testing build issues only! Use redhat-dist for official releases.
+redhat-test:
+ echo $(CONFIG_FILES)
$(TAR) --exclude ".cvsignore" --exclude "CVS" --exclude "privoxy-suse.spec" --exclude "privoxy-cl.spec" --exclude "PACKAGERS" -czf $(TAR_ARCH) .
- $(RPM) --clean -ta $(TAR_ARCH)
+ $(RPMBUILD) --clean -tb $(TAR_ARCH)
if [ -f $(TAR_ARCH) ]; then $(RM) $(TAR_ARCH); fi
+ @echo "WARNING: This target is only for testing. Use redhat-dist for releases!!!"
# anonymously ncftps the rpms to sourceforge
redhat-upload: check-release
@$(ECHO) -------------------------------------------------------
# w3m http://sourceforge.net/project/admin/editpackages.php?group_id=11118
+
+#############################################################################
+# Creates a Red Hat sourcepackage from CVS (not from the current sources
+# on disk)
+#############################################################################
+redhat-srpm:
+ make create-archive
+ $(MV) $(PROGRAM)-rh-$(VERSION).tar.gz $(PROGRAM)-$(VERSION).tar.gz
+ $(RPMBUILD) -ts --nodeps $(PROGRAM)-$(VERSION).tar.gz
+
+
#############################################################################
# suse distribution. works fine. no need to be root.
#############################################################################
cd doc/source/faq && $(DB) ../faq.sgml && cd .. && cp faq/*.html ../webserver/faq/
cd doc/source && $(DB) -V nochunks faq.sgml > tmp.html && $(WDUMP) tmp.html > ../text/faq.txt && $(RM) -r tmp.html faq
-# man page
+# man page, one variation. Try to use the next target, just 'make man'.
dok-man:
$(RM) doc/man/* doc/webserver/man-page/*.html
ifneq ($(MAN2HTML),false)
$(MAKE) groff2html
endif
+# Build man page from sgml. This requires the SGMLSpm perl module.
+# See CPAN, or your favorite perl repository. This is the preferred
+# target for man page generation!
+man: dok-release
+ mkdir -p doc/source/temp && cd doc/source/temp && $(RM) * ;\
+ nsgmls ../privoxy-man-page.sgml | sgmlspl ../../../utils/docbook2man/docbook2man-spec.pl &&\
+ perl -pi.bak -e 's/ <URL:.*>//; s/\[ /\[/g' privoxy.1 ;\
+ $(DB) ../privoxy-man-page.sgml && $(MV) -f privoxy.1 ../../../privoxy.1
+
+# For those with man2html ala RH7s.
+man2html:
+ mkdir -p doc/webserver/man-page
+ifneq ($(MAN2HTML),false)
+ $(MAN2HTML) privoxy.1 |grep -v "^Content-type" > tmp.html
+ $(PERL) -pi.bak -e 's/<A .*Contents<\/A>//; s/<A .*man2html<\/A>/man2html/' tmp.html
+ $(PERL) -pi.bak -e 's/(<\/HEAD>)/<LINK REL=\"STYLESHEET\" TYPE=\"text\/css\" HREF=\"..\/p_doc.css\"><\/HEAD>/' tmp.html
+# Twice because my version of man2html is pulling in commas and periods in URLs.
+ $(PERL) -pi.bak -e 's/(<A.*),(">)/$$1$$2/g' tmp.html
+ $(PERL) -pi.bak -e 's,\.">,">,g' tmp.html
+# Get rid of spurious \a from conversion. (How to do this with perl?)
+ $(SED) -e 's/\a//g' tmp.html > doc/webserver/man-page/privoxy-man-page.html && $(RM) tmp.*
+else
+ $(MAKE) groff2html
+endif
+
+
+# Otherwise we get plain groff conversion.
+groff2html:
+ $(G2H_CMD) ./privoxy.1 | $(SED) -e 's@</head>@<link REL="STYLESHEET" TYPE="text/css" HREF="../p_doc.css"></head>@' > doc/webserver/man-page/privoxy-man-page.html
+
+
# readme page
dok-readme:
cd doc/source && $(DB)-notoc -V nochunks readme.sgml > tmp.html &&\
redhat-dok: dok-release dok-devel dok-user dok-faq redhat-readme dok-webserver dok-authors
@$(ECHO) Documentation created.
-# For those with man2html ala RH7's.
-man2html:
- mkdir -p doc/webserver/man-page
-ifneq ($(MAN2HTML),false)
- $(MAN2HTML) privoxy.1 |grep -v "^Content-type" > tmp.html
- $(PERL) -pi.bak -e 's/<A .*Contents<\/A>//; s/<A .*man2html<\/A>/man2html/' tmp.html
- $(PERL) -pi.bak -e 's/(<\/HEAD>)/<LINK REL=\"STYLESHEET\" TYPE=\"text\/css\" HREF=\"..\/p_doc.css\"><\/HEAD>/' tmp.html
-# Get rid of spurious \a from conversion. (How to do this with perl?)
- $(SED) -e 's/\a//g' tmp.html > doc/webserver/man-page/privoxy-man-page.html && $(RM) tmp.*
-else
- $(MAKE) groff2html
-endif
-
-# Otherwise we get plain groff conversion.
-groff2html:
- $(G2H_CMD) ./privoxy.1 | $(SED) -e 's@</head>@<link REL="STYLESHEET" TYPE="text/css" HREF="../p_doc.css"></head>@' > doc/webserver/man-page/privoxy-man-page.html
-
## Make README
redhat-readme:
cd doc/source && $(DB)-notoc -V nochunks readme.sgml > tmp.html && $(WDUMP) \
cd doc/source && $(DB) -V nochunks authors.sgml > tmp.html && $(WDUMP) \
tmp.html > ../../AUTHORS && $(RM) tmp.html
-# make a man page, and then (lousy) HTML version.
-# Requires docbook2man (short perl script), see comments
-# in privoxy-man-page.sgml. This target is not invoked from other dok targets.
-# It is built separately due to dependencies on perl scripts.
-man:
- mkdir -p doc/source/man
- cd doc/source/man && docbook2man ../privoxy-man-page.sgml &&\
- perl -pi.bak -e 's/ <URL:.*>//; s/\[ /\[/g' privoxy.1
- cd doc/source/man && $(DB) ../privoxy-man-page.sgml &&\
- mv -f index.html privoxy-man-page.html
- # This html is not used. See make man2html.
- mv -f doc/source/man/privoxy.1 privoxy.1
- $(MAKE) man2html
-
# Set doc entities for VERSION and CODE_STATUS in sgml docs. Toggle content
# exceptions accordingly. This needs to go before any doc building (doh).
dok-release:
$(RM) -r doc/source/*bak doc/source/*/*bak
endif
-dok-pdf: dok-release
- $(RM) doc/pdf/*.pdf
- cp -f doc/source/*.sgml doc/pdf
- cp -f doc/source/*.dsl doc/pdf
- cd doc/pdf && db2pdf --pdf -s ldp.dsl user-manual.sgml && mv user-manual.pdf privoxy-user-manual.pdf > /dev/null 2>&1
- cd doc/pdf && db2pdf --pdf -s ldp.dsl developer-manual.sgml && mv developer-manual.pdf privoxy-developer-manual.pdf > /dev/null 2>&1
- cd doc/pdf && db2pdf --pdf -s ldp.dsl faq.sgml && mv faq.pdf privoxy-faq.pdf > /dev/null 2>&1
- $(RM) doc/pdf/*.sgml doc/pdf/*.dsl doc/pdf/*.out doc/pdf/*.tex doc/pdf/*.log doc/pdf/*.aux
-
-# the layout and style with db2pdf sucks, here is an alternative
-dok-pdf2: dok-release
+# Generate single page html. Used only for creating pdf docs (ATM).
+# Currently using: See http://www.easysw.com/htmldoc/pdf-o-matic.php.
+# If using this generator, remember U-M has a couple of graphics in
+# a parallel directory.
+#
+dok-shtml: dok-release
mkdir -p doc/source/temp # this directory not in cvs
- cd doc/source && $(DB) -V nochunks user-manual.sgml > temp/privoxy-user-manual.html
+ cd doc/source && $(DB) -iuser-man -V nochunks user-manual.sgml > temp/privoxy-user-manual.html
cd doc/source && $(DB) -V nochunks developer-manual.sgml > temp/privoxy-developer-manual.html
cd doc/source && $(DB) -V nochunks faq.sgml > temp/privoxy-faq.html
# one could use html2ps and ps2pdf. well, that does not work. htmlps produces incorrect output.
+# Make pdf docs from single page html. Requires htmldoc, see
+# (http://www.easysw.com/htmldoc/). Note: 1.8.20 has a TOC bug.
+# PDF docs are uploaded to webserver as zip archive.
+dok-pdf: dok-shtml
+ @$(ECHO) -n "starting htmldoc version: "; htmldoc --version
+ cd utils/ldp_print && $(RM) *html *bak *jpg *tmp *pdf *zip
+ cp -f doc/source/temp/*html doc/webserver/images/*jpg utils/ldp_print
+ cd utils/ldp_print ;\
+ $(PERL) -pi.bak -e 's/\.\.\/images\///; s/(<\/?)SUB/$$1small/i;\
+ s/\.\.\/user-manual\/index\.html/privoxy-user-manual.pdf/;\
+ s/\.\.\/developer-manual\/index\.html/privoxy-developer-manual.pdf/;\
+ s/\.\.\/faq\/index\.html/privoxy-faq.pdf/' *.html ;\
+ for i in developer-manual user-manual faq; do \
+ ./ldp_print privoxy-$$i.html ;\
+ $(ECHO) DONE: privoxy-$$i.pdf ;\
+ done ;\
+ $(MV) *.pdf ../../doc/pdf ;\
+ $(RM) -r *html *bak *jpg *pdf *zip ../../doc/source/temp
+
# Create release announcement in text and html, with short and long versions.
# This is a standalone target, and must be invoked directly.
announce: dok-release
@$(ECHO) it will not remove obsolete documents.
@$(ECHO) -------------------------------------------------------
- @$(ECHO) Uploading
+ @$(ECHO) Uploading html
@cd doc/webserver; \
upload=`find . -type f -a -not \( -path "*/CVS*" -o -path "*/results*" \)`; \
$(TAR) c $$upload | ssh ijbswa.sourceforge.net 'cd /home/groups/i/ij/ijbswa/htdocs/; tar xvm 2>&1 | grep -v timestamp'
+ @$(ECHO) Uploading pdf
+ @cd doc/pdf;\
+ zip privoxy-pdf-docs *.pdf ;\
+ scp -q privoxy-pdf-docs.zip ijbswa.sourceforge.net:/home/groups/i/ij/ijbswa/htdocs/pdf
+
@$(ECHO) Fixing permissions
@ssh ijbswa.sourceforge.net 'chmod -R 775 /home/groups/i/ij/ijbswa/htdocs 2>/dev/null; true'
@ssh ijbswa.sourceforge.net 'find /home/groups/i/ij/ijbswa/htdocs/ -type f | xargs chmod 664 2>/dev/null; true'
gnu_regex.@OBJEXT@: gnu_regex.c gnu_regex.h config.h
# PCRS
-pcrs.@OBJEXT@: pcrs.c pcre/pcre.h pcrs.h
+pcrs.@OBJEXT@: pcrs.c pcrs.h config.h pcre/pcre.h
# PCRE
pcre/get.@OBJEXT@: pcre/get.c pcre/config.h pcre/internal.h pcre/pcre.h
$(LD) $(LDFLAGS) -o $(PROGRAM) $(OBJS) $(LIBS)
clean:
- $(RM) a.out $(OBJS) $(W32_FILES) $(W32_INIS) $(PROGRAM) `find . -name TAGS -o -name tags`
+ $(RM) a.out $(OBJS) $(W32_FILES) $(W32_INIS) $(PROGRAM) default.action `find . -name TAGS -o -name tags`
tidy:
$(RM) `find . -name "*~"`
etags $(SRCS) $(HDRS)
install: all
- #
- # FIXME: This is a dirty hack to have an install target
- # that works at least for some setups. This needs
- # to be fixed!
- #
+ @$(ECHO) "***************************************************"; \
+ $(ECHO) "*** ***"; \
+ $(ECHO) "*** WARNING ***"; \
+ $(ECHO) "*** ***"; \
+ $(ECHO) "*** The install target is very broken and ***"; \
+ $(ECHO) "*** should not be used. For the time being, ***"; \
+ $(ECHO) "*** run from the build dir, install manually, ***"; \
+ $(ECHO) "*** or use a binary package. Sorry. ***"; \
+ $(ECHO) "*** ***"; \
+ $(ECHO) "***************************************************"; \
+ $(ECHO) "Type \"yes i am sure\" if you are sure that you"; \
+ $(ECHO) -n "really want to proceed with the broken install: "; \
+ read answer; \
+ if [ "$$answer" != "yes i am sure" ]; then exit 1; fi
+
+ # FIXME!
+
$(STRIP_PROG) $(PROGRAM)
$(INSTALL) $(INSTALL_D) $(SBIN_DEST)
$(INSTALL) $(INSTALL_D) $(DEST)/user-manual
## end:
# $Log: GNUmakefile.in,v $
+# Revision 1.104.2.17 2002/08/16 03:19:34 hal9
+# More (minor) cleanup of html before pdf processing to make some relative
+# links work as pdf -> pdf. Upload pdf as zip archive now.
+#
+# Revision 1.104.2.16 2002/08/14 16:43:27 hal9
+# Added pdf docs to make webserver target.
+#
+# Revision 1.104.2.15 2002/08/11 20:02:41 hal9
+# New targets for man page (make man) and pdf (make dok-pdf) targets.
+#
+# Revision 1.104.2.14 2002/08/10 11:19:37 oes
+# - Make -Ipcre (again) conditional on STATIC_PCRE
+# - $(RPMBUILD) -> $(RPM) for SuSE
+# - Add dependency: pcrs.o deps on config.h
+#
+# Revision 1.104.2.13 2002/08/07 15:13:54 hal9
+# Remove pdf2 target, and make it dok-shtml (single page html for pdf
+# conversion).
+#
+# Revision 1.104.2.12 2002/08/06 11:29:36 oes
+# Fixed detection/inclusion of pcre.h, which is in a pcre subdir on RH
+#
+# Revision 1.104.2.11 2002/07/30 19:38:11 hal9
+# Add redhat-test target for testing purposes only. Fix RPM_PACKAGEV to what
+# *I think* it was supposed to be (was breaking upload targets since it was
+# set to RPM_VERSION).
+#
+# Revision 1.104.2.10 2002/07/27 22:56:53 kick_
+# cleanups of the redhat-srpm target
+#
+# Revision 1.104.2.9 2002/07/26 15:17:02 oes
+# - Added generation of default.action from defaul.action.master
+# - Deleted obsolete re_filterfile.txt generation
+#
+# Revision 1.104.2.8 2002/07/12 10:04:32 kick_
+# added helper targets to the makefile. They shouldn't break anything, but
+# make my life a lot easier.
+#
+# The new rpm has been splitted into two parts, one for package installation/
+# removal, one for package building.
+# Therefore rpm -ta isn't a valid command anymore and needs to be replaced
+# by rpmbuild -ta (this is backwards compatible)
+#
+# Revision 1.104.2.7 2002/06/07 00:23:47 hal9
+# Fixing a quirk of man2html (on my system) that pulls punctuation into URLs,
+# thus breaking them completely.
+#
+# Revision 1.104.2.6 2002/06/02 03:26:25 hal9
+# Update CONFIG_FILES (ie update basic.action, etc), and also DOC_FILES (exclude
+# index.html and team/index.html)
+#
# Revision 1.104.2.5 2002/05/30 15:35:01 hal9
# This is more cleanup on the make config-file target. Most issues for
# automatic generation are taken care of. There are still some problems