-# Note: Makefile is built automatically from Makefile.in
+# Note: GNUmakefile is built automatically from GNUmakefile.in
#
-# $Id: GNUmakefile.in,v 1.202 2011/09/04 11:09:05 fabiankeil Exp $
+# $Id: GNUmakefile.in,v 1.237 2016/04/04 10:50:37 fabiankeil Exp $
#
-# Written by and Copyright (C) 2001-2011 members of the
+# Written by and Copyright (C) 2001-2014 members of the
# Privoxy team. http://www.privoxy.org/
#
# Based on the Internet Junkbuster originally written
# Binaries
BIN_MODE = 0755
# Support files, docs, etc.
-RA_MODE = 0664
+RA_MODE = 0644
# Directory
DIR_MODE = 0755
# Files daemon writes to.
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 = 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)
# If your SF user name differs from your local one,
# 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.
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.
#############################################################################
# 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/©/'\
doc/webserver/index.html && $(RM) doc/webserver/*.bak
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:
@$(ECHO) -------------------------------------------------------
@$(ECHO) Replacing the user-manual symlink
- @$(SSH) shell.sourceforge.net "cd /home/groups/i/ij/ijbswa/htdocs && rm user-manual \
+ @$(SSH) shell.sourceforge.net "cd $(WWW_ROOT)/htdocs && rm user-manual \
&& mkdir -p $(VERSION)/user-manual && ln -s $(VERSION)/user-manual user-manual"
@$(ECHO) Uploading html
@cd doc/webserver; \
upload=`find . -type f -a -not \( -path "*/CVS*" -o -path "*/results*" \)`; \
- $(TAR) cf - $$upload | $(SSH) shell.sourceforge.net 'cd /home/groups/i/ij/ijbswa/htdocs/; tar xvm 2>&1 | grep -v timestamp'
-
- @$(ECHO) Fixing permissions
- @$(SSH) shell.sourceforge.net 'chmod -R 775 /home/groups/i/ij/ijbswa/htdocs 2>/dev/null; true'
- @$(SSH) shell.sourceforge.net 'find /home/groups/i/ij/ijbswa/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 /home/groups/i/ij/ijbswa/htdocs/actions; tar xvm'
+ $(TAR) cf - $$upload | $(SSH) shell.sourceforge.net 'cd $(WWW_ROOT)/htdocs/; tar xvm 2>&1 | grep -v timestamp'
@$(ECHO) Fixing permissions
- @$(SSH) ijbswa.sourceforge.net 'find /home/groups/i/ij/ijbswa/htdocs/actions/ -type f | xargs chmod 664 2>/dev/null'
- @$(SSH) ijbswa.sourceforge.net 'chmod 666 /home/groups/i/ij/ijbswa/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:/home/groups/i/ij/ijbswa/htdocs/docs/
- @$(SSH) ijbswa.sourceforge.net 'chmod 775 /home/groups/i/ij/ijbswa/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)
+ @$(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:
+ @$(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'
+
+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:
for html_file in `find doc/webserver -name "*.html"`; do \
$(TIDY) $$html_file || $(TIDY) $$html_file; \
- $(PERL) -i\'\' -e 's@^\s*<br>\s*$$@@; s@ +$$@@;' -n -p $$html_file; \
+ $(PERL) -i'' -e 's@^\s*<br>\s*$$@@; s@ +$$@@;' -n -p $$html_file; \
done
# 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 \) -and -not -path "./.git/refs/tags"` \
+ `find . -name "*.orig" -a -not -name rc.privoxy.orig`
clean-editor-files:
$(RM) `find . -name "*~"`