-# Note: Makefile is built automatically from Makefile.in
+# Note: GNUmakefile is built automatically from GNUmakefile.in
#
-# $Id: GNUmakefile.in,v 1.206 2012/03/18 15:42:44 fabiankeil Exp $
+# $Id: GNUmakefile.in,v 1.250 2016/05/08 12:46:05 fabiankeil Exp $
#
-# Written by and Copyright (C) 2001-2011 members of the
-# Privoxy team. http://www.privoxy.org/
+# Written by and Copyright (C) 2001-2016 members of the
+# Privoxy team. https://www.privoxy.org/
#
# Based on the Internet Junkbuster originally written
# by and Copyright (C) 1997 Anonymous Coders and
CHOWN = chown
CHGRP = chgrp
GROUPS = groups
-WDUMP = @WDUMP@ -dump
+W3M_DUMP = env -u LANG LC_ALL=C @W3M@ -dump
+W3M_DUMP_UTF8 = @W3M@ -dump
JADECAT = @JADECAT@
JADEBIN = @JADEBIN@
DB = $(JADEBIN) $(JADECAT) -ihtml -t sgml -D.. -d ldp.dsl\#html
DOC_DIR = doc/source
DOC_TMP = $(DOC_DIR)/tmp
DOC_STATUS = @DOC_STATUS@
-TIDY = tidy -modify -indent -clean -wrap 78 --tidy-mark no
+TIDY = tidy -modify -indent -wrap 78 --tidy-mark no
+RSYNC = rsync -av -c
# Program to do LF->CRLF
-#
-# The sed version should be the most portable, but it doesn't for for me,
-# the other two do. FIXME.
-# - Jon
-#DOSFILTER = $(SED) -e $$'s,$$,\r,'
-#DOSFILTER = gawk -v ORS='\r\n' '{print $0;}'
DOSFILTER = $(PERL) -p -e 's/\n/\r\n/'
CVSROOT = :pserver:anonymous@ijbswa.cvs.sourceforge.net:/cvsroot/ijbswa
#TMPDIR := $(shell mktemp -d /tmp/$(PROGRAM).XXXXXX)
# change this to "ssh -l sf-username"
SSH = ssh
WWW_ROOT = /home/project-web/ijbswa
+# SourceForge login name used by the 'sf-shell' target (optional)
+SOURCE_FORGE_NAME = ''
#############################################################################
# Setup for make distribution for now.
#############################################################################
TAR_ARCH = /tmp/privoxy-$(VERSION).tar.gz
+GEN_DIST_TAR_NAME = privoxy-$(TARGET_OS)-$(VERSION)-$(CODE_STATUS).tar
#############################################################################
# We include these files in our distributions
#############################################################################
-CONFIGS = config trust default.action match-all.action user.action default.filter user.filter
+CONFIGS = config trust default.action match-all.action \
+ user.action default.filter user.filter \
+ regression-tests.action
+
# take care that no CVS .cvsignore or other crappy files
# are included here
# and escape every '#' in the find. doh.
CONFIG_FILES = $(CONFIGS) \
- `find templates/ -type f | grep -v "CVS" | grep -v "\.\#" | grep -v ".*~" | grep -v ".cvsignore" | grep -v "TAGS"`
+ `find templates/ -type f | grep -v "CVS" | grep -v "\.\#" | grep -v ".*~" | grep -v ".cvsignore" | grep -v "TAGS" | sort`
DOC_FILES = AUTHORS LICENSE README ChangeLog INSTALL \
- `find doc/webserver/ -name "*.html" | grep -v "\(webserver\|team\)\/index\.html"` \
- `find doc/webserver/ -name "*.css"` \
+ `find doc/webserver/ -name "*.html" | grep -v "\(webserver\|team\)\/index\.html" | sort` \
+ `find doc/webserver/ -name "*.css" | sort` \
$(MAN_PAGE)
#############################################################################
C_OBJS = $(C_SRC:.c=.@OBJEXT@)
C_HDRS = $(C_SRC:.c=.h) project.h actionlist.h
+CLIENT_TAG_SRC = @FEATURE_CLIENT_TAGS_ONLY@client-tags.c
+CLIENT_TAG_OBJS = @FEATURE_CLIENT_TAGS_ONLY@client-tags.@OBJEXT@
+
W32_SRC = @WIN_ONLY@w32log.c w32taskbar.c win32.c w32svrapi.c
W32_FILES = @WIN_ONLY@w32.res
W32_OBJS = @WIN_ONLY@$(W32_SRC:.c=.@OBJEXT@) $(W32_FILES)
# PThreads library, if needed.
PTHREAD_LIB = @PTHREAD_ONLY@@PTHREAD_LIB@
-SRCS = $(C_SRC) $(W32_SRC) $(PCRS_SRC) $(PCRE_SRC) $(REGEX_SRC)
-OBJS = $(C_OBJS) $(W32_OBJS) $(PCRS_OBJS) $(PCRE_OBJS) $(REGEX_OBJS)
+SRCS = $(C_SRC) $(CLIENT_TAG_SRC) $(W32_SRC) $(PCRS_SRC) $(PCRE_SRC) $(REGEX_SRC)
+OBJS = $(C_OBJS) $(CLIENT_TAG_OBJS) $(W32_OBJS) $(PCRS_OBJS) $(PCRE_OBJS) $(REGEX_OBJS)
HDRS = $(C_HDRS) $(W32_HDRS) $(PCRS_HDRS) $(PCRE_OBJS) $(REGEX_HDRS)
LIBS = @LIBS@ $(W32_LIB) $(SOCKET_LIB) $(PTHREAD_LIB)
#############################################################################
# Phony targets
#############################################################################
-.PHONY: all inifiles solaris-dist \
+.PHONY: all inifiles \
win-dist tarball-dist dok webserver clean clobber tags \
install CONF_DEST LOG_DEST \
PID_DEST check_doc install-strip uninstall GROUP_T
# 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):
+# tar.gz with the current date in the name.
+# The main usage is to run it as follows (Red Hat example):
# make SNAPVERSION=1.6x create-snapshot
# This creates a tar.gz.
#############################################################################
@$(ECHO) ""
$(MAKE) $(PROGRAM)
$(STRIP_PROG) $(PROGRAM)
- $(LN) -s current ../privoxy-$(VERSION)-$(CODE_STATUS)
+ $(LN) -s `pwd` ../privoxy-$(VERSION)-$(CODE_STATUS)
# add program
- (cd .. && $(TAR) -cvhf --exclude "PACKAGERS" privoxy-$(TARGET_OS)-$(VERSION)-$(CODE_STATUS)-src.tar privoxy-$(VERSION)-$(CODE_STATUS)/$(PROGRAM))
+ (cd .. && $(TAR) --exclude "PACKAGERS" -cvhf $(GEN_DIST_TAR_NAME) privoxy-$(VERSION)-$(CODE_STATUS)/$(PROGRAM))
# add config files
for foo in $(CONFIG_FILES); do \
- (cd .. && $(TAR) -uvhf --exclude "PACKAGERS" privoxy-$(TARGET_OS)-$(VERSION)-$(CODE_STATUS)-src.tar privoxy-$(VERSION)-$(CODE_STATUS)/$$foo;) \
+ (cd .. && $(TAR) --exclude "PACKAGERS" -uvhf $(GEN_DIST_TAR_NAME) privoxy-$(VERSION)-$(CODE_STATUS)/$$foo;) \
done;
# add documentation
for foo in $(DOC_FILES); do \
- (cd .. && $(TAR) -uvhf --exclude "PACKAGERS" privoxy-$(TARGET_OS)-$(VERSION)-$(CODE_STATUS)-src.tar privoxy-$(VERSION)-$(CODE_STATUS)/$$foo;) \
+ (cd .. && $(TAR) --exclude "PACKAGERS" -uvhf $(GEN_DIST_TAR_NAME) privoxy-$(VERSION)-$(CODE_STATUS)/$$foo;) \
done;
+# add tools
+ (cd .. && $(TAR) -uvhf $(GEN_DIST_TAR_NAME) privoxy-$(VERSION)-$(CODE_STATUS)/tools)
# and zip the archive
$(RM) ../privoxy-$(VERSION)-$(CODE_STATUS)
- $(GZIP_PROG) ../privoxy-$(TARGET_OS)-$(VERSION)-$(CODE_STATUS)-src.tar
+ $(GZIP_PROG) ../$(GEN_DIST_TAR_NAME)
@$(ECHO) Distribution with binary created.
# anonymously ncftps the package to sourceforge
gen-upload:
- ncftpput -u anonymous -p ijbswa-developers@lists.sourceforge.net upload.sourceforge.net /incoming ../privoxy-$(TARGET_OS)-$(VERSION)-$(CODE_STATUS)-src.tar.gz
+ ncftpput -u anonymous -p ijbswa-developers@lists.sourceforge.net upload.sourceforge.net /incoming ../$(GEN_DIST_TAR_NAME).gz
@$(ECHO) -------------------------------------------------------
@$(ECHO) Now goto
@$(ECHO) https://sourceforge.net/project/admin/editpackages.php?group_id=11118
# use with care
gen-clean:
- $(RM) privoxy-$(TARGET_OS)-$(VERSION)-$(CODE_STATUS)-src.tar*
+ $(RM) ../$(GEN_DIST_TAR_NAME)*
#############################################################################
# Tarball distribution: No CVS dirs, dotfiles, debian build dir,
#############################################################################
tarball-dist: dist-check clean clobber
- $(LN) -s current ../privoxy-$(VERSION)-$(CODE_STATUS)
+ $(LN) -s `pwd` ../privoxy-$(VERSION)-$(CODE_STATUS)
for i in `find . -type f -a -not \( -path "*/CVS*" -o -name ".*" \
-o -path "*/debian/*" -o -path "*/actions/*" -o -name "*.php" -o \
- -name "PACKAGERS" \)`; do \
+ -name "PACKAGERS" -o -path "*.git/*" \) | sort`; do \
files="$$files privoxy-$(VERSION)-$(CODE_STATUS)/$$i"; \
done && \
cd .. && $(TAR) -cvhf privoxy-$(VERSION)-$(CODE_STATUS)-src.tar $$files ; \
# readme page and INSTALL file
dok-readme: dok-release
cd doc/source && $(DB)-notoc -V nochunks readme.sgml > tmp.html &&\
- env -u LANG $(WDUMP) tmp.html > ../../README ;\
+ $(W3M_DUMP) tmp.html > ../../README ;\
$(DB)-notoc -V nochunks install.sgml > tmp.html &&\
- env -u LANG $(WDUMP) tmp.html > ../../INSTALL ;\
+ $(W3M_DUMP) tmp.html > ../../INSTALL ;\
$(RM) tmp.*
# index.sgml is used to create both the Home Page, and a local index
cd doc/source/webserver && $(DB)-notoc -ip-homepage -V nochunks index.sgml > ../../webserver/index.html
$(PERL) -pi.bak -e 's/..\/p_doc.css/p_doc.css/;\
s/<\/HEAD/\n<meta name=\"description\" content=\"Privoxy helps users to protect their privacy.\"><\/HEAD/;\
- s/<\/HEAD/\n<meta name="MSSmartTagsPreventParsing" content="TRUE"><\/HEAD/;\
s/\.\d\. //;\
- s/__copy/©/'\
+ s/__copy/©/;\
+ s@(<SUB)@<p style="text-align: center">\1@; s@(</SUB)@\1></p@;\
+ s@ChameleonJohn@<br><a href="http://www.chameleonjohn.com/"><img align="middle"\
+ src="images/sponsors/chameleonjohn.png" alt="ChameleonJohn Coupons"></a>@' \
doc/webserver/index.html && $(RM) doc/webserver/*.bak
# privoxy-index.html for local documentation:
cd doc/source/webserver && $(DB)-notoc -ip-index -V nochunks index.sgml > ../../webserver/privoxy-index.html
$(PERL) -pi.bak -e 's/..\/p_doc.css/p_doc.css/;\
s/<\/HEAD/\n<meta name=\"description\" content=\"Privoxy helps users to protect their privacy.\"><\/HEAD/;\
- s/<\/HEAD/\n<meta name="MSSmartTagsPreventParsing" content="TRUE"><\/HEAD/;\
s/\.\d\. //;\
s/__copy/©/' \
doc/webserver/privoxy-index.html && $(RM) doc/webserver/*.bak
## Make AUTHORS file
dok-authors:
- cd doc/source && $(DB) -V nochunks authors.sgml > tmp.html && env -u LANG $(WDUMP) \
+ cd doc/source && $(DB) -V nochunks authors.sgml > tmp.html && $(W3M_DUMP_UTF8) \
tmp.html > ../../AUTHORS && $(RM) tmp.html
# Set doc entities for VERSION and CODE_STATUS in sgml docs. Toggle content
fi;
$(RM) -r doc/source/*bak doc/source/*/*bak;
-# 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
-# mkdir -p $(DOC_TMP)
-# cd $(DOC_TMP) && cp -f ../announce.sgml . && $(DB) -iannounce-big announce.sgml &&\
-# mv -f index.html announce.html && $(WDUMP) announce.html > announce.txt
-# cd $(DOC_TMP) && $(DB) announce.sgml &&\
-# mv -f index.html announce-mini.html && $(WDUMP) announce-mini.html > announce-mini.txt &&\
-# mv -f *html *txt ../../..
-# rm -fr $(DOC_TMP)
-
# The main Privoxy config file, generated from sgml sources.
-# NOTE: This will require some hand editing. The new file is outputted
-# as config.new so that problem sections can be compared to previous
-# version. This is hardcored to w3m for html/text conversion. Also,
-# requires the shell util 'fmt'.
-config-file: dok-release
- cd doc/source && $(DB)-notoc -iconfig-file -V nochunks config.sgml > __tmp.html &&\
- env -u LANG w3m -dump __tmp.html | fmt -w 70 > ../../config.new && $(RM) -r __tmp.*
- $(PERL) -i.bak utils/prepare-configfile.pl config.new
-
- $(RM) *.bak
+# NOTE: This will require some hand editing.
+config-file: dok-release generate-config-file
+
+ $(RM) config.bak config.html
@$(ECHO) "****************************************************"
- @$(ECHO) "The output file is config.new."
- @$(ECHO) "Now -- you need to hand edit the results!!!"
+ @$(ECHO) "The config file has been optimistically updated"
+ @$(ECHO) "Now -- you may need to hand edit the results!"
@$(ECHO) "In particular, check the Debug levels, the"
@$(ECHO) "permit-access, forward & socks examples and the"
@$(ECHO) "various user-manual examples, which all"
- @$(ECHO) "probably got hammered."
+ @$(ECHO) "might have gotten hammered."
@$(ECHO) "****************************************************"
-# config file, alternate version using lynx (perl stuff unfinished). Lynx
-# does not do so good a job.
-config-file-alt:
- cd doc/source && $(ECHO) -e ".h2 JUSTIFY\\nJUSTIFY:FALSE" > __tmp.lynx_cfg &&\
- $(DB)-notoc -iconfig-file -V nochunks config.sgml > __tmp.html &&\
- lynx -cfg=__tmp.lynx_cfg -width=78 -dump __tmp.html > ../../config.new && $(RM) -r __tmp.*
- $(PERL) -pi -e 's/^( )//;\
- s/:$\/:\n/' config.new
+generate-config-file:
+ cd doc/source && $(DB)-notoc -iconfig-file -V nochunks config.sgml > ../../config.html
+ $(W3M_DUMP) -cols 67 config.html > config
+ $(PERL) -i.bak utils/prepare-configfile.pl config
#############################################################################
#
# Webserver
#
-# moves dokumentation to webserver
+# moves documentation to webserver
#
#############################################################################
+sf-shell:
+ @sf_name=$(SOURCE_FORGE_NAME); \
+ [ -n "$${sf_name}" ] || read -p "Enter SourceForge username: " sf_name || exit 1; \
+ echo "Opening shell for $${sf_name} ..."; \
+ ssh -t $${sf_name},ijbswa@shell.sourceforge.net create
+
webserver: clean-editor-files
@$(ECHO) -------------------------------------------------------
@$(ECHO) You will need to "create" a SF shell first:
@$(SSH) shell.sourceforge.net 'chmod -R 775 $(WWW_ROOT)/htdocs 2>/dev/null; true'
@$(SSH) shell.sourceforge.net 'find $(WWW_ROOT)/htdocs/ -type f | xargs chmod 664 2>/dev/null; true'
-web-actions: clean-editor-files
- @$(ECHO) Uploading
- @cd doc/webserver/actions; \
- upload=`find . -type f -a -not \( -path "*/CVS*" -o -path "*/results*" \)`; \
- $(TAR) cf - $$upload | $(SSH) ijbswa.sourceforge.net 'cd $(WWW_ROOT)/htdocs/actions; tar xvm'
+web-actions:
+ @$(ECHO) Updating the actions on the webserver ...
+ @$(RSYNC) doc/webserver/actions/*.php shell.sourceforge.net:$(WWW_ROOT)/htdocs/actions
+ @$(ECHO) Enforcing reasonable permissions ...
+ @$(SSH) shell.sourceforge.net 'find $(WWW_ROOT)/htdocs/actions/ -type f | xargs chmod 664 2>/dev/null'
- @$(ECHO) Fixing permissions
- @$(SSH) ijbswa.sourceforge.net 'find $(WWW_ROOT)/htdocs/actions/ -type f | xargs chmod 664 2>/dev/null'
- @$(SSH) ijbswa.sourceforge.net 'chmod 666 $(WWW_ROOT)/htdocs/actions/results/actions-feedback.txt 2>/dev/null'
-
-##
-dok-put:
- tar --exclude ".cvsignore" --exclude "CVS" --exclude "source" --exclude ".htaccess" \
- --exclude "obsolete" --exclude "actions" --exclude "*.zip" --exclude "robots.txt"\
- doc/* INSTALL LICENSE AUTHORS README \
- -czf $(DOC_FILE) ;\
- $(ECHO) "Uploading doc package ..." ;\
- scp $(DOC_FILE) ijbswa.sourceforge.net:$(WWW_ROOT)/htdocs/docs/
- @$(SSH) ijbswa.sourceforge.net 'chmod 775 $(WWW_ROOT)/htdocs/docs/*gz 2>/dev/null; true'
- $(RM) $(DOC_FILE)
-
-dok-get:
- cd /tmp ;\
- $(WGET) http://www.privoxy.org/docs/$(DOC_FILE) ;\
- $(TAR) -zxvf $(DOC_FILE)
+web-faq:
+ @$(ECHO) Updating the FAQ on the webserver ...
+ @$(RSYNC) doc/webserver/faq/*.html shell.sourceforge.net:$(WWW_ROOT)/htdocs/faq
+ @$(ECHO) Enforcing reasonable permissions ...
+ @$(SSH) shell.sourceforge.net 'find $(WWW_ROOT)/htdocs/faq/ -type f | xargs chmod 664 2>/dev/null'
+
+web-user-manual:
+ @$(ECHO) Updating the user manual on the webserver (do not use in case of version changes) ...
+ @$(RSYNC) doc/webserver/user-manual/*.html shell.sourceforge.net:$(WWW_ROOT)/htdocs/user-manual/
+ @$(ECHO) Enforcing reasonable permissions ...
+ @$(SSH) shell.sourceforge.net 'find $(WWW_ROOT)/htdocs/user-manual/ -type f | xargs chmod 664 2>/dev/null'
#############################################################################
#
# Try to clean up the generated HTML files.
#
-# The files are a such a mess that some of them require two tidy runs
-# in row as the first abort prematurely. The vanilla tidy output renders
-# poorly as it contains a bit too much white-space, so we additionally run
-# the files through perl to fix this again.
+# The files are such a mess that some of them require two tidy runs in a
+# row as the first one aborts prematurely. The vanilla tidy output renders
+# poorly because it contains a bit too much whitespace, so we additionally
+# run the files through perl to fix this again.
#
#############################################################################
dok-tidy:
# Source file dependencies
#############################################################################
-actions.@OBJEXT@: actions.c actions.h config.h $(PROJECT_H_DEPS) errlog.h jcc.h list.h loaders.h miscutil.h actionlist.h ssplit.h
+actions.@OBJEXT@: actions.c actions.h config.h $(PROJECT_H_DEPS) errlog.h filters.h jcc.h list.h loaders.h miscutil.h actionlist.h ssplit.h
cgi.@OBJEXT@: cgi.c cgi.h config.h $(PROJECT_H_DEPS) cgiedit.h cgisimple.h jbsockets.h list.h pcrs.h encode.h ssplit.h jcc.h filters.h actions.h errlog.h miscutil.h
cgiedit.@OBJEXT@: cgiedit.c cgiedit.h config.h $(PROJECT_H_DEPS) cgi.h list.h pcrs.h encode.h ssplit.h jcc.h filters.h actionlist.h actions.h errlog.h miscutil.h
cgisimple.@OBJEXT@: cgisimple.c cgisimple.h config.h $(PROJECT_H_DEPS) cgi.h list.h pcrs.h encode.h ssplit.h jcc.h filters.h actions.h errlog.h miscutil.h urlmatch.h
clean:
$(RM) a.out $(OBJS) $(W32_FILES) $(W32_INIS) $(PROGRAM) default.action \
- `find . -name TAGS -o -name tags | $(GREP) -v .git` config.base config.tmp
+ config.base config.tmp \
+ `find . \( -name TAGS -o -name tags \) -a -not -path "./.git/*"` \
+ `find . -name "*.orig" -a -not -name rc.privoxy.orig -a -not -path "./.git/*"`
clean-editor-files:
$(RM) `find . -name "*~"`