#!/bin/sh
###############################################################################
# prebuild.sh script (maintainers only)
# Written by Nicolas Calimet and Christoph Hormann
#
# This prebuild.sh script prepares the Perforce source tree for building
# the Unix/Linux version of POV-Ray. Unlike the former versions, the
# prebuild procedure does not change the directory structure, so that
# the overall layout of the UNIX source distribution remains consistent
# with the other supported architectures (namely Windows and Macintosh).
# Yet, some "standard" files such as configure, README, INSTALL, etc.
# are placed in the root directory to give the expected GNUish look to
# the distribution.
#
# The purpose of this script is to create the 'configure' and various
# 'Makefile.am' shell scripts, as well as modify/update some generic files
# (e.g. doc).
#
# Running prebuild.sh requires:
# 1) GNU autoconf >= 2.59 and GNU automake >= 1.9
# 2) perl and m4 (should be on any system, at least Linux is okay)
# 3) Run from the unix/ directory where the script is located.
#
# Prepare all but the doc/ directory using:
# % ./prebuild.sh
#
# Clean up all files and folders created by this script (but docs):
# % ./prebuild.sh clean
#
# The unix-specific documentation is created seperately since it requires
# lots of processing time as well as a bunch of other programs such as PHP.
# See ../documentation/povdocgen.doc for details.
# The "all" option builds all docs, otherwise only html docs are created.
# Any other option (e.g. "skip ta") replaces the default.
# % ./prebuild.sh doc(s) [option]
#
# Clean up the docs:
# % ./prebuild.sh doc(s)clean
#
# Note that the 'clean' and 'doc(s)(clean)' options are mutually exclusive.
#
# $File: //depot/public/povray/3.x/unix/prebuild.sh $
# $Revision: #1 $
# $Change: 6069 $
# $DateTime: 2013/11/06 11:59:40 $
# $Author: chrisc $
# $Log$
###############################################################################
umask 022
pov_version_base=`cat ./VERSION | sed 's,\([0-9]*.[0-9]*\).*,\1,g'`
pov_config_bugreport="POV-Ray Bugtracker http://bugs.povray.org/"
# documentation
timestamp=`date +%Y-%m-%d`
build="./docs_$timestamp"
builddoc="$build/documentation"
required_autoconf="2.59"
required_automake="1.9"
###############################################################################
# Setup
###############################################################################
# Prevents running from another directory.
if test x"`dirname $0`" != x"."; then
echo "$0: must ran from POV-Ray's unix/ directory"
exit 1
fi
# Check optional argument.
case "$1" in
""|clean|doc|docs|docclean|docsclean) ;;
*) echo "$0: error: unrecognized option '$1'"; exit ;;
esac
# Check whether 'cp -u' is supported.
if test x"`cp -u ./prebuild.sh /dev/null 2>&1`" = x""; then
cp_u='cp -u'
else
cp_u='cp'
fi
# Check for autoconf/automake presence and version.
if test x"$1" = x""; then
if autoconf --version > /dev/null 2>&1; then
autoconf=`autoconf --version | grep autoconf | sed s,[^0-9.]*,,g`
echo "Detected autoconf $autoconf"
autoconf=`echo $autoconf | sed -e 's,\([0-9]*\),Z\1Z,g' -e 's,Z\([0-9]\)Z,Z0\1Z,g' -e 's,[^0-9],,g'`
required=`echo $required_autoconf | sed -e 's,\([0-9]*\),Z\1Z,g' -e 's,Z\([0-9]\)Z,Z0\1Z,g' -e 's,[^0-9],,g'`
expr $autoconf \>= $required > /dev/null || autoconf=""
fi
if test x"$autoconf" = x""; then
echo "$0: error: requires autoconf $required_autoconf or above"
exit 1
fi
if automake --version > /dev/null 2>&1; then
automake=`automake --version | grep automake | sed s,[^0-9.]*,,g`
echo "Detected automake $automake"
automake=`echo $automake | sed -e 's,\([0-9]*\),Z\1Z,g' -e 's,Z\([0-9]\)Z,Z0\1Z,g' -e 's,[^0-9],,g'`
required=`echo $required_automake | sed -e 's,\([0-9]*\),Z\1Z,g' -e 's,Z\([0-9]\)Z,Z0\1Z,g' -e 's,[^0-9],,g'`
expr $automake \>= $required > /dev/null || automake=""
fi
if test x"$automake" = x""; then
echo "$0: error: requires automake $required_automake or above"
exit 1
fi
fi
###############################################################################
# Copying and generating standard/additional files
###############################################################################
case "$1" in
# Cleanup all files not in the Perforce repositery
clean)
if test -f ../Makefile; then
makeclean=`\
cd .. ; \
echo "make clean" 1>&2 && make clean 1>&2 ; \
echo "make maintainer-clean" 1>&2 && make maintainer-clean 1>&2 ; \
` 2>&1
fi
# backward-compatible cleanup
for file in \
acinclude.m4 acx_pthread.m4 AUTHORS ChangeLog config/ configure.ac \
COPYING INSTALL NEWS README icons/ include/ ini/ povray.1 povray.conf \
povray.ini.in scenes/ scripts/ VERSION
do
rm -r ../$file 2> /dev/null && echo "Cleanup ../$file"
done
;;
# Cleanup documentation
doc*clean)
for file in ../doc/ $build; do
rm -r $file 2> /dev/null && echo "Cleanup $file"
done
;;
# Generate the documentation (adapted from C.H. custom scripts)
doc|docs)
echo "Generate docs"
log_file="makedocs.log"
cat /dev/null > $log_file
# cleanup or create the ../doc folder.
if ! test -d ../doc; then
echo "Create ../doc" | tee -a $log_file
mkdir ../doc
echo "Create ../doc/html" | tee -a $log_file
mkdir ../doc/html
else
echo "Cleanup ../doc" | tee -a $log_file
rm -f -r ../doc/*
mkdir ../doc/html
fi
# create build folder and documentation.
if ! test -d $build; then
echo "Create $build" | tee -a $log_file
mkdir $build
echo "Create $build/distribution" | tee -a $log_file
echo "Copy distribution" | tee -a $log_file
$cp_u -f -R ../distribution $build/
fi
if ! test -d $builddoc; then
echo "Create $builddoc" | tee -a $log_file
mkdir $builddoc
fi
if test x"../documentation" != x"$builddoc"; then
echo "Copy documentation" | tee -a $log_file
$cp_u -f -R ../documentation/* $builddoc/
chmod -f -R u+rw $builddoc/
fi
chmod -R u+rw $build/*
# run makedocs script.
# The default "skip ta" does not build latex nor archive files.
# Yet some GIF images from the output/final/tex/images directories are needed;
# for simplicity this directory is a symlink to output/final/machelp/images
# (do not symlink with output/final/unixhelp/images).
echo "Run makedocs" | tee -a $log_file
rootdir=`pwd`
cd $builddoc
docopts="skip ta"
case "$2" in
all) docopts=;;
.*) docopts="$2";;
esac
test -d ./output/final/tex/ || mkdir -p ./output/final/tex/
skipt=`echo "$docopts" | grep 'skip.*t'`
test x"$skipt" != x"" && test -d ./output/final/tex/images || ln -s ../machelp/images ./output/final/tex/images
sh makedocs.script $docopts | tee -a $rootdir/$log_file
test x"$skipt" != x"" && test -d ./output/final/tex/images && rm -f ./output/final/tex/images
cd $rootdir
# post-process HTML files in several steps.
echo "Process unixhelp HTML files" | tee -a $log_file
files=`find $builddoc/output/final/unixhelp/ -name "*.html"`
# add document type
# replace ™ characters
# remove (often misplaced) optional
tags
# remove empty strong's
# reorganise section link and add 'id' attribute
for htmlfile in $files ; do
mv -f $htmlfile $htmlfile.temp
echo '' > $htmlfile
cat $htmlfile.temp | sed \
-e 's,™,TM,g' \
-e 's,™,TM,g' \
-e 's,,,g' \
-e 's,[[:space:]]*,,g' \
-e 's,\([0-9.]* \),\2,g' \
>> $htmlfile
done
# add link targets for index keywords
idx="$builddoc/output/final/unixhelp/idx.html"
mv -f $idx $idx.temp
cat $idx.temp | sed \
'// N; s,\(\)\n\s*\(.*\),\1\2,' \
> $idx
# replace invalid caracters in 'id' and 'name' attributes; needs seperate steps.
for htmlfile in $files ; do # comma+space -> dot
mv -f $htmlfile $htmlfile.temp
cat $htmlfile.temp | sed \
':BEGIN; s/id="\([^,"]*\), \([^"]*\)" name="\([^,"]*\), \([^"]*\)"/id="\1.\2" name="\3.\4"/g; tBEGIN' \
> $htmlfile
done
for htmlfile in $files ; do # slash -> dot
mv -f $htmlfile $htmlfile.temp
cat $htmlfile.temp | sed \
':BEGIN; s/id="\([^\/"]*\)\/\([^"]*\)" name="\([^\/"]*\)\/\([^"]*\)"/id="\1.\2" name="\3.\4"/g; tBEGIN' \
> $htmlfile
done
for htmlfile in $files ; do # spaces -> dots
mv -f $htmlfile $htmlfile.temp
cat $htmlfile.temp | sed \
':BEGIN; s/id="\([^ "]*\) \([^"]*\)" name="\([^ "]*\) \([^"]*\)"/id="\1.\2" name="\3.\4"/g; tBEGIN' \
> $htmlfile
done
for htmlfile in $files ; do # hash character -> H
mv -f $htmlfile $htmlfile.temp
cat $htmlfile.temp | sed \
':BEGIN; s/id="\([^#"]*\)#\([^"]*\)" name="\([^#"]*\)#\([^"]*\)"/id="\1H\2" name="\3H\4"/g; tBEGIN' \
> $htmlfile
done
for htmlfile in $files ; do # first plus sign -> P
mv -f $htmlfile $htmlfile.temp
cat $htmlfile.temp | sed \
':BEGIN; s/id="\([^+"]*\)+\([^"]*\)" name="\([^+"]*\)+\([^"]*\)"/id="\1P\2" name="\3P\4"/; tBEGIN' \
> $htmlfile
done
for htmlfile in $files ; do # first minus sign -> M
mv -f $htmlfile $htmlfile.temp
cat $htmlfile.temp | sed \
':BEGIN; s/id="\([^"-]*\)-\([^"]*\)" name="\([^"-]*\)-\([^"]*\)"/id="\1M\2" name="\3M\4"/; tBEGIN' \
> $htmlfile
done
# add keyword list on top of the index, using alphabetical folded sublists
idx="$builddoc/output/final/unixhelp/idx.html"
rm -f $idx.list
echo "
" > $idx.list
for car in \# + - A B C D E F G H I J K L M N O P Q R S T U V W X Y Z; do
firsttarget=`grep -i "$car" $idx | head -n 1 | sed "s,\s*
\(.*\),$car,"`
echo " $firsttarget " >> $idx.list
done
echo "
" >> $idx.list
mv -f $idx $idx.temp
cat $idx.temp | sed "// r $idx.list" > $idx
rm -f $idx.list
# improve navigation from the keyword index by placing all link targets
# directly in the heading section on the previous line
for htmlfile in $files ; do
mv -f $htmlfile $htmlfile.temp
cat $htmlfile.temp | sed \
'/\)\(.*\)\(\)\n\(\)*,\n\1\4\2\3,g }' \
> $htmlfile
done
# unfold the chapter entries in menu.html.
menu="$builddoc/output/final/unixhelp/menu.html"
mv -f $menu $menu.temp
cat $menu.temp | sed \
-e 's,^ \(\)\(\), \2,' \
-e 's,^ \( $menu
# finally make a clean copy of the documentation.
echo "Cleanup" | tee -a $log_file
rm -f -r $builddoc/output/final/unixhelp/*.html.temp
rm -f $builddoc/output/final/unixhelp/template*
rm -f $builddoc/output/final/unixhelp/README
rm -f $builddoc/output/final/unixhelp/images/README
rm -f $builddoc/output/final/unixhelp/images/reference/README
rm -f $builddoc/output/final/unixhelp/images/reference/colors/README
rm -f $builddoc/output/final/unixhelp/images/tutorial/README
rm -f -r $builddoc/output/final/unixhelp/images/unix/
rm -f $builddoc/output/final/unixhelp/unix_splash.html
rm -f $builddoc/output/final/unixhelp/unix_frame.html
echo "Copy documentation in ../doc/" | tee -a $log_file
$cp_u -f -R $builddoc/output/final/unixhelp/* ../doc/html/
chmod -R u+rw ../doc/html/
mv -f ../doc/html/*.txt ../doc/
mv -f ../doc/html/*.doc ../doc/
$cp_u -f README.unix ../doc/
chmod -R u+rw ../doc/
# [C.H.]
# povlegal.doc contains 0x99, which is a TM character under Windows.
# Converting to "[tm]".
echo "Copy licence files in ../doc/"
perl -e 'while (<>) {s/\x99/[tm]/g; print;}' ../distribution/povlegal.doc \
> ../doc/povlegal.doc || echo "povlegal.doc not created !"
$cp_u -f ../distribution/agpl-3.0.txt ../doc/ \
|| echo "agpl-3.0.txt not copied !"
# log tracing.
$cp_u -f $log_file docs_$timestamp.log
chmod u+rw docs_$timestamp.log
$cp_u -f $builddoc/output/log.txt docs_internal_$timestamp.log
chmod u+rw docs_internal_$timestamp.log
rm -f $log_file
exit
;;
# Copy files
*)
# some shells seem unable to expand properly wildcards in the list entries
# (e.g. ../distribution/in*/).
for file in \
AUTHORS ChangeLog configure.ac COPYING NEWS README VERSION \
povray.1 povray.conf \
scripts/ \
../distribution/ini/ ../distribution/include/ ../distribution/scenes/
do
out=`basename $file`
echo "Create ../$out`test -d $file && echo /`"
$cp_u -f -R $file ../ || echo "$file not copied !"
chmod -f -R u+rw ../$out
done
# special cases:
# INSTALL
echo "Create ../INSTALL"
$cp_u -f install.txt ../INSTALL || echo "INSTALL not copied !"
chmod -f u+rw ../INSTALL
# icons/
# don't copy the icons/source directory
mkdir -p ../icons
files=`find icons -maxdepth 1 -name \*.png`
for file in $files ; do
echo "Create ../$file"
$cp_u -f $file ../$file || echo "$file not copied !"
chmod -f -R u+rw ../$file
done
echo "Create ../doc/html"
mkdir -p ../doc/html # required to build without existing docs
;;
esac
###############################################################################
# Creation of supporting unix-specific files
###############################################################################
###
### ./Makefile.am
###
makefile="./Makefile"
case "$1" in
clean)
for file in $makefile.am $makefile.in; do
rm $file 2> /dev/null && echo "Cleanup $file"
done
;;
doc*)
;;
*)
echo "Create $makefile.am"
cat Makefile.header > $makefile.am
cat << pbEOF >> $makefile.am
# Makefile.am for the source distribution of POV-Ray $pov_version_base for UNIX
# Written by $pov_config_bugreport
# Programs to build.
bin_PROGRAMS = povray
# Source files.
povray_SOURCES = \\
disp.h \\
disp_sdl.cpp disp_sdl.h \\
disp_text.cpp disp_text.h
# Include paths for headers.
AM_CPPFLAGS = \\
-I\$(top_srcdir) \\
-I\$(top_srcdir)/source \\
-I\$(top_builddir)/source \\
-I\$(top_srcdir)/source/backend \\
-I\$(top_srcdir)/source/base \\
-I\$(top_srcdir)/source/frontend \\
-I\$(top_srcdir)/vfe \\
-I\$(top_srcdir)/vfe/unix
# Libraries to link with.
# Beware: order does matter!
LDADD = \\
\$(top_builddir)/vfe/libvfe.a \\
\$(top_builddir)/source/libpovray.a
pbEOF
;;
esac
##### Root directory ##########################################################
###
### ../kde_install.sh
###
file="../kde_install.sh"
case "$1" in
clean)
rm $file 2> /dev/null && echo "Cleanup $file"
;;
doc*)
;;
*)
echo "Create $file"
echo "#!/bin/sh
# ==================================================================
# POV-Ray $pov_version_base - Unix source version - KDE install script
# ==================================================================
# written July 2003 - March 2004 by Christoph Hormann
# Based on parts of the Linux binary version install script
# This file is part of POV-Ray and subject to the POV-Ray licence
# see POVLEGAL.DOC for details.
# ==================================================================
" > "$file"
grep -A 1000 -E "^#.*@@KDE_BEGIN@@" "./install" | grep -B 1000 -E "^#.*@@KDE_END@@" >> "$file"
echo "
kde_install
" >> "$file"
chmod +x $file
;;
esac
###
### ../povray.ini.in (template for ../povray.ini)
###
ini="../povray.ini"
case "$1" in
clean)
for file in $ini $ini.in; do
rm $file 2> /dev/null && echo "Cleanup $file"
done
;;
doc*)
;;
*)
# __POVLIBDIR__ will be updated at make time.
echo "Create $ini.in"
cat ../distribution/ini/povray.ini | sed \
's/C:.POVRAY3 drive and/__POVLIBDIR__/' > $ini.in
cat << pbEOF >> $ini.in
;; Search path for #include source files or command line ini files not
;; found in the current directory. New directories are added to the
;; search path, up to a maximum of 25.
Library_Path="__POVLIBDIR__"
Library_Path="__POVLIBDIR__/ini"
Library_Path="__POVLIBDIR__/include"
;; File output type control.
;; T Uncompressed Targa-24
;; C Compressed Targa-24
;; P UNIX PPM
;; N PNG (8-bits per colour RGB)
;; Nc PNG ('c' bit per colour RGB where 5 <= c <= 16)
Output_to_File=true
Output_File_Type=N8 ;; (+/-Ftype)
pbEOF
;;
esac
###
### ../Makefile.am
###
makefile="../Makefile"
case "$1" in
clean)
for file in $makefile.am; do
rm $file 2> /dev/null && echo "Cleanup $file"
done
;;
doc*)
;;
*)
scriptfiles=`find scripts -type f`
echo "Create $makefile.am"
cat Makefile.header > $makefile.am
cat << pbEOF >> $makefile.am
# Makefile.am for the source distribution of POV-Ray $pov_version_base for UNIX
# Written by $pov_config_bugreport
# Directories.
povlibdir = @datadir@/@PACKAGE@-@VERSION_BASE@
povdocdir = @datadir@/doc/@PACKAGE@-@VERSION_BASE@
povconfdir = @sysconfdir@/@PACKAGE@/@VERSION_BASE@
povuser = \$(HOME)/.@PACKAGE@
povconfuser = \$(povuser)/@VERSION_BASE@
povinstall = \$(top_builddir)/install.log
povowner = @povowner@
povgroup = @povgroup@
# Directories to build.
SUBDIRS = source vfe unix
# Additional files to distribute.
EXTRA_DIST = \\
bootstrap kde_install.sh \\
doc icons include ini scenes scripts \\
povray.ini.in changes.txt revision.txt
# Additional files to clean with 'make distclean'.
DISTCLEANFILES = \$(top_builddir)/povray.ini
CONFIG_CLEAN_FILES = \$(top_builddir)/source/jversion.h
# Render a test scene for 'make check'.
# This is meant to run before 'make install'.
check: all
\$(top_builddir)/unix/povray +i\$(top_srcdir)/scenes/advanced/biscuit.pov -f +d +p +v +w320 +h240 +a0.3 +L\$(top_srcdir)/include
# Install scripts in povlibdir.
nobase_povlib_SCRIPTS = `echo $scriptfiles`
# Install documentation in povdocdir.
povdoc_DATA = AUTHORS ChangeLog NEWS
# Install configuration and INI files in povconfdir.
dist_povconf_DATA = povray.conf
povray.conf:
povconf_DATA = povray.ini
povray.ini:
cat \$(top_srcdir)/povray.ini.in | sed "s,__POVLIBDIR__,\$(povlibdir),g" > \$(top_builddir)/povray.ini
# Install man page.
dist_man_MANS = povray.1
# Remove all unwanted files for 'make dist(check)'.
# Make all files user read-writeable.
dist-hook:
chmod -R u+rw \$(distdir)
chmod 755 \$(distdir)/scripts/*
rm -f \`find \$(distdir) -name "*.h.in~"\`
rm -f -r \`find \$(distdir) -name autom4te.cache\`
rm -f -r \`find \$(distdir) -name .libs\`
rm -f \$(distdir)/source/jversion.h
# Manage various data files for 'make install'.
# Creates an install.log file to record created folders and files.
# Folder paths are prepended (using POSIX printf) to ease later removal in 'make uninstall'.
# Don't be too verbose so as to easily spot possible problems.
install-data-local:
cat /dev/null > \$(povinstall);
@echo "Creating data directories..."; \\
list='\$(top_srcdir)/icons \$(top_srcdir)/include \$(top_srcdir)/ini \$(top_srcdir)/scenes'; \\
dirlist=\`find \$\$list -type d | sed s,\$(top_srcdir)/,,\`; \\
for p in "" \$\$dirlist ; do \\
\$(mkdir_p) \$(DESTDIR)\$(povlibdir)/\$\$p && printf "%s\\n" "\$(DESTDIR)\$(povlibdir)/\$\$p" "\`cat \$(povinstall)\`" > \$(povinstall); \\
done; \\
echo "Copying data files..."; \\
filelist=\`find \$\$list -type f | sed s,\$(top_srcdir)/,,\`; \\
for f in \$\$filelist ; do \\
\$(INSTALL_DATA) \$(top_srcdir)/\$\$f \$(DESTDIR)\$(povlibdir)/\$\$f && echo "\$(DESTDIR)\$(povlibdir)/\$\$f" >> \$(povinstall); \\
done
@echo "Creating documentation directories..."; \\
dirlist=\`find \$(top_srcdir)/doc/ -type d | sed s,\$(top_srcdir)/doc/,,\`; \\
for p in "" \$\$dirlist ; do \\
\$(mkdir_p) \$(DESTDIR)\$(povdocdir)/\$\$p && printf "%s\\n" "\$(DESTDIR)\$(povdocdir)/\$\$p" "\`cat \$(povinstall)\`" > \$(povinstall); \\
done
@echo "Copying documentation files..."; \\
filelist=\`find \$(top_srcdir)/doc/ -type f | sed s,\$(top_srcdir)/doc/,,\`; \\
for f in \$\$filelist ; do \\
\$(INSTALL_DATA) \$(top_srcdir)/doc/\$\$f \$(DESTDIR)\$(povdocdir)/\$\$f && echo "\$(DESTDIR)\$(povdocdir)/\$\$f" >> \$(povinstall); \\
done
@echo "Creating user directories..."; \\
for p in \$(povuser) \$(povconfuser) ; do \\
\$(mkdir_p) \$\$p && chown \$(povowner) \$\$p && chgrp \$(povgroup) \$\$p && printf "%s\\n" "\$\$p" "\`cat \$(povinstall)\`" > \$(povinstall); \\
done
@echo "Copying user configuration and INI files..."; \\
for f in povray.conf povray.ini ; do \\
if test -f \$(povconfuser)/\$\$f; then \\
echo "Creating backup of \$(povconfuser)/\$\$f"; \\
mv -f \$(povconfuser)/\$\$f \$(povconfuser)/\$\$f.bak; \\
fi; \\
done; \\
\$(INSTALL_DATA) \$(top_srcdir)/povray.conf \$(povconfuser)/povray.conf && chown \$(povowner) \$(povconfuser)/povray.conf && chgrp \$(povgroup) \$(povconfuser)/povray.conf && echo "\$(povconfuser)/povray.conf" >> \$(povinstall); \\
\$(INSTALL_DATA) \$(top_builddir)/povray.ini \$(povconfuser)/povray.ini && chown \$(povowner) \$(povconfuser)/povray.ini && chgrp \$(povgroup) \$(povconfuser)/povray.ini && echo "\$(povconfuser)/povray.ini" >> \$(povinstall)
# Remove data, config, and empty folders for 'make uninstall'.
# Use 'hook' instead of 'local' so as to properly remove *empty* folders (e.g. scripts).
# The last echo prevents getting error from failed rmdir command.
uninstall-hook:
@if test -f \$(top_builddir)/install.log ; then \\
rmdir \$(DESTDIR)\$(povlibdir)/scripts; \\
echo "Using install info from \$(top_builddir)/install.log"; \\
echo "Removing data, documentation, and configuration files..."; \\
for f in \`cat \$(top_builddir)/install.log\` ; do \\
test -f \$\$f && rm -f \$\$f ; \\
done; \\
echo "Removing empty directories..."; \\
for f in \`cat \$(top_builddir)/install.log\` ; do \\
test -d \$\$f && rmdir \$\$f ; \\
done; \\
echo "Removing \$(top_builddir)/install.log" && rm -f \$(top_builddir)/install.log ; \\
else \\
"Removing all data unconditionally"; \\
rm -f -r \$(DESTDIR)\$(povlibdir); \\
rm -f -r \$(DESTDIR)\$(povdocdir); \\
rm -f \$(DESTDIR)\$(povconfdir)/povray.ini; \\
rmdir \$(DESTDIR)\$(povconfdir); \\
rmdir \$(DESTDIR)\$(sysconfdir)/@PACKAGE@; \\
rm -f \$(povconfuser)/povray.conf; \\
rm -f \$(povconfuser)/povray.ini; \\
rmdir \$(povconfuser); \\
rmdir \$(povuser); \\
fi; \\
echo "Uninstall finished"
pbEOF
;;
esac
###
### ../bootstrap
###
bootstrap="../bootstrap"
case "$1" in
clean)
for file in $bootstrap; do
rm $file 2> /dev/null && echo "Cleanup $file"
done
;;
doc*)
;;
*)
echo "Create $bootstrap"
cat << pbEOF > $bootstrap
#!/bin/sh -x
# bootstrap for the source distribution of POV-Ray $pov_version_base for UNIX
# Written by $pov_config_bugreport
# Run this script if configure.ac or any Makefile.am has changed
rm -f config.log config.status
# Create aclocal.m4 for extra automake and autoconf macros
aclocal -I .
# Create config.h.in
autoheader --warnings=all
# Create all Makefile.in's from Makefile.am's
automake --add-missing --warnings=all
# Create configure from configure.ac
autoconf --warnings=all
# Small post-fixes to 'configure'
# add --srcdir when using --help=recursive
# protect \$ac_(pop)dir with double quotes in cd commands
# protect \$am_aux_dir with double quotes when looking for 'missing'
cat ./configure | sed \\
-e 's,configure.gnu --help=recursive,& --srcdir=\$ac_srcdir,g' \\
-e 's,\(cd \)\(\$ac_\)\(pop\)*\(dir\),\1"\2\3\4",g' \\
-e 's,\$am_aux_dir/missing,\\\\"\$am_aux_dir\\\\"/missing,g' \\
> ./configure.tmp
mv -f ./configure.tmp ./configure
chmod +x ./configure
# Remove cache directory
rm -f -r ./autom4te.cache
pbEOF
chmod 755 $bootstrap
;;
esac
##### Source directory ########################################################
###
### ../source/Makefile.am
###
dir="../source"
makefile="$dir/Makefile"
case "$1" in
clean)
for file in $makefile.am $makefile.in; do
rm $file 2> /dev/null && echo "Cleanup $file"
done
;;
doc*)
;;
*)
files=`find $dir -name "*.cpp" -or -name "*.h" | sed s,"$dir/",,g`
echo "Create $makefile.am"
cat Makefile.header > $makefile.am
cat << pbEOF >> $makefile.am
# Makefile.am for the source distribution of POV-Ray $pov_version_base for UNIX
# Written by $pov_config_bugreport
# Libraries to build.
noinst_LIBRARIES = libpovray.a
# Source files.
libpovray_a_SOURCES = \\
`echo $files`
# Include paths for headers.
AM_CPPFLAGS = \\
-I\$(top_srcdir) \\
-I\$(top_srcdir)/source/backend \\
-I\$(top_srcdir)/source/base \\
-I\$(top_srcdir)/source/frontend \\
-I\$(top_srcdir)/unix \\
-I\$(top_srcdir)/vfe \\
-I\$(top_srcdir)/vfe/unix
pbEOF
;;
esac
###
### ../source/base/Makefile.am
###
dir="../source/base"
makefile="$dir/Makefile"
case "$1" in
clean)
for file in $makefile.am $makefile.in; do
rm $file 2> /dev/null && echo "Cleanup $file"
done
;;
doc*)
;;
*)
;;
esac
###
### ../source/frontend/Makefile.am
###
dir="../source/frontend"
makefile="$dir/Makefile"
case "$1" in
clean)
for file in $makefile.am $makefile.in; do
rm $file 2> /dev/null && echo "Cleanup $file"
done
;;
doc*)
;;
*)
;;
esac
###
### ../source/backend/Makefile.am
###
dir="../source/backend"
makefile="$dir/Makefile"
case "$1" in
clean)
for file in $makefile.am $makefile.in; do
rm $file 2> /dev/null && echo "Cleanup $file"
done
;;
doc*)
;;
*)
;;
esac
##### Supporting libraries ####################################################
###
### ../libraries/Makefile.am
###
makefile="../libraries/Makefile"
case "$1" in
clean)
for file in $makefile.am $makefile.in; do
rm $file 2> /dev/null && echo "Cleanup $file"
done
;;
doc*)
;;
*)
;;
esac
##### Supporting libraries: PNG ###############################################
###
### ../libraries/png/configure.ac and configure.gnu
###
configure="../libraries/png/configure"
case "$1" in
clean)
for file in $configure.ac $configure.gnu; do
rm $file 2> /dev/null && echo "Cleanup $file"
done
if test -f $configure.orig; then
echo "Restore $configure"
mv -f $configure.orig $configure
fi
;;
doc*)
;;
*)
;;
esac
###
### ../libraries/png/Makefile.am
###
dir="../libraries/png"
makefile="$dir/Makefile"
case "$1" in
clean)
for file in $makefile.am; do
rm $file 2> /dev/null && echo "Cleanup $file"
done
;;
doc*)
;;
*)
;;
esac
###
### ../libraries/png/bootstrap
###
bootstrap="../libraries/png/bootstrap"
case "$1" in
clean)
for file in $bootstrap; do
rm $file 2> /dev/null && echo "Cleanup $file"
done
;;
doc*)
;;
*)
;;
esac
##### Supporting libraries: ZLIB ##############################################
###
### ../libraries/zlib/configure.ac and configure.gnu
###
configure="../libraries/zlib/configure"
makefile="../libraries/zlib/Makefile"
case "$1" in
clean)
for file in $configure.ac $configure.gnu; do
rm $file 2> /dev/null && echo "Cleanup $file"
done
if test -f $configure.orig; then
echo "Restore $configure"
mv -f $configure.orig $configure
fi
if test -f $makefile.orig; then
echo "Restore $makefile"
mv -f $makefile.orig $makefile
fi
if test -f $makefile.in.orig; then
echo "Restore $makefile.in"
mv -f $makefile.in.orig $makefile.in
fi
;;
doc*)
;;
*)
;;
esac
###
### ../libraries/zlib/Makefile.am
###
makefile="../libraries/zlib/Makefile"
case "$1" in
clean)
for file in $makefile.am; do
rm $file 2> /dev/null && echo "Cleanup $file"
done
if test -f $makefile.in.orig; then
echo "Restore $makefile.in"
mv -f $makefile.in.orig $makefile.in
fi
;;
doc*)
;;
*)
;;
esac
###
### ../libraries/zlib/bootstrap
###
bootstrap="../libraries/zlib/bootstrap"
case "$1" in
clean)
for file in $bootstrap; do
rm $file 2> /dev/null && echo "Cleanup $file"
done
;;
doc*)
;;
*)
;;
esac
###
### ../libraries/zlib/ config scripts
###
dir="../libraries/zlib"
# no longer distributed
rm -f $dir/mkinstalldirs
case "$1" in
clean)
for file in config.guess config.sub install-sh missing ; do
rm $dir/$file 2> /dev/null && echo "Cleanup $dir/$file"
done
;;
doc*)
;;
*)
;;
esac
##### Supporting libraries: JPEG ##############################################
###
### ../libraries/jpeg/configure.gnu
###
configure="../libraries/jpeg/configure"
case "$1" in
clean)
for file in $configure.gnu; do
rm $file 2> /dev/null && echo "Cleanup $file"
done
;;
doc*)
;;
*)
;;
esac
##### Supporting libraries: TIFF ##############################################
###
### ../libraries/tiff/libtiff/configure.ac and configure.gnu
###
configure="../libraries/tiff/libtiff/configure"
# remove old configure.gnu
rm -f ../libraries/tiff/configure.gnu
case "$1" in
clean)
for file in $configure.ac $configure.gnu; do
rm $file 2> /dev/null && echo "Cleanup $file"
done
;;
doc*)
;;
*)
;;
esac
###
### ../libraries/tiff/libtiff/Makefile.am
###
makefile="../libraries/tiff/libtiff/Makefile"
case "$1" in
clean)
for file in $makefile.am; do
rm $file 2> /dev/null && echo "Cleanup $file"
done
if test -f $makefile.in.orig; then
echo "Restore $makefile.in"
mv -f $makefile.in.orig $makefile.in
fi
;;
doc*)
;;
*)
;;
esac
###
### ../libraries/tiff/libtiff/bootstrap
###
bootstrap="../libraries/tiff/libtiff/bootstrap"
case "$1" in
clean)
for file in $bootstrap; do
rm $file 2> /dev/null && echo "Cleanup $file"
done
;;
doc*)
;;
*)
;;
esac
###
### ../libraries/tiff/libtiff/ config scripts
###
dir="../libraries/tiff/libtiff"
case "$1" in
clean)
for file in config.guess config.sub install-sh missing ; do
rm $dir/$file 2> /dev/null && echo "Cleanup $dir/$file"
done
;;
doc*)
;;
*)
;;
esac
##### Supporting libraries: Boost #############################################
###
### ../libraries/boost/configure.ac and configure.gnu
###
configure="../libraries/boost/configure"
case "$1" in
clean)
for file in $configure.ac $configure.gnu; do
rm $file 2> /dev/null && echo "Cleanup $file"
done
if test -f $configure.orig; then
echo "Restore $configure"
mv -f $configure.orig $configure
fi
;;
doc*)
;;
*)
;;
esac
###
### ../libraries/boost/Makefile.am
###
dir="../libraries/boost"
makefile="$dir/Makefile"
case "$1" in
clean)
for file in $makefile.am; do
rm $file 2> /dev/null && echo "Cleanup $file"
done
;;
doc*)
;;
*)
;;
esac
###
### ../libraries/boost/bootstrap
###
bootstrap="../libraries/boost/bootstrap"
case "$1" in
clean)
for file in $bootstrap; do
rm $file 2> /dev/null && echo "Cleanup $file"
done
;;
doc*)
;;
*)
;;
esac
###
### ../libraries/boost/ config scripts
###
dir="../libraries/boost"
case "$1" in
clean)
for file in config.guess config.sub install-sh missing configure ; do
rm $dir/$file 2> /dev/null && echo "Cleanup $dir/$file"
done
test -d $dir && rm -rf $dir && echo "Cleanup $dir"
;;
doc*)
;;
*)
if test -d $dir/boost; then
echo "Removing $dir/boost"
rm -rf $dir/boost
fi
;;
esac
##### VFE #####################################################################
###
### ../vfe/Makefile.am
###
dir="../vfe"
makefile="$dir/Makefile"
case "$1" in
clean)
for file in $makefile.am $makefile.in; do
rm $file 2> /dev/null && echo "Cleanup $file"
done
;;
doc*)
;;
*)
# includes the vfe/unix/ files to avoid circular dependencies when linking
files=`find $dir $dir/unix -maxdepth 1 -name \*.cpp -or -name \*.h | sed s,"$dir/",,g`
echo "Create $makefile.am"
cat Makefile.header > $makefile.am
cat << pbEOF >> $makefile.am
# Makefile.am for the source distribution of POV-Ray $pov_version_base for UNIX
# Written by $pov_config_bugreport
# Libraries to build.
noinst_LIBRARIES = libvfe.a
# Source files.
libvfe_a_SOURCES = \\
`echo $files`
# Include paths for headers.
AM_CPPFLAGS = \\
-I\$(top_srcdir)/vfe/unix \\
-I\$(top_srcdir)/unix \\
-I\$(top_srcdir)/source \\
-I\$(top_srcdir)/source/base \\
-I\$(top_srcdir)/source/backend
# Extra definitions for compiling.
# They cannot be placed in config.h since they indirectly rely on \$prefix.
DEFS = \\
@DEFS@ \\
-DPOVLIBDIR=\"@datadir@/@PACKAGE@-@VERSION_BASE@\" \\
-DPOVCONFDIR=\"@sysconfdir@/@PACKAGE@/@VERSION_BASE@\" \\
-DPOVCONFDIR_BACKWARD=\"@sysconfdir@\"
pbEOF
;;
esac
###############################################################################
# Bootstrapping
###############################################################################
dir=".."
case "$1" in
clean)
# conf.h* is for backward compatibility
for file in aclocal.m4 autom4te.cache conf.h conf.h.in conf.h.in~ config.h config.h.in config.h.in~ configure configure.ac Makefile Makefile.am Makefile.in stamp-h1; do
rm -r $dir/$file 2> /dev/null && echo "Cleanup $dir/$file"
done
;;
doc*)
;;
*)
echo "Run $dir/bootstrap"
ok=`cd $dir/; ./bootstrap`
# post-process DIST_COMMON in unix/Makefile.in
for file in AUTHORS COPYING NEWS README configure.ac ChangeLog; do
sed "s,$file,,g" ./Makefile.in > ./Makefile.in.tmp
mv -f ./Makefile.in.tmp ./Makefile.in
done
;;
esac
dir="../libraries/zlib"
case "$1" in
clean)
# don't remove Makefile, Makefile.in
for file in aclocal.m4 autom4te.cache config.h config.h.in Makefile.am stamp-h1; do
rm -r $dir/$file 2> /dev/null && echo "Cleanup $dir/$file"
done
;;
doc*)
;;
*)
;;
esac # zlib
dir="../libraries/boost"
case "$1" in
clean)
for file in aclocal.m4 autom4te.cache config.h config.h.in Makefile Makefile.am Makefile.in stamp-h1; do
rm -r $dir/$file 2> /dev/null && echo "Cleanup $dir/$file"
done
;;
esac # boost