Home | History | Annotate | Download | only in dist
      1 #/bin/sh
      2 
      3 # Script to prepare the files for building a PCRE release. It does some
      4 # processing of the documentation, detrails files, and creates pcre.h.generic
      5 # and config.h.generic (for use by builders who can't run ./configure).
      6 
      7 # You must run this script before runnning "make dist". If its first argument
      8 # is "doc", it stops after preparing the documentation. There are no other
      9 # arguments. The script makes use of the following files:
     10 
     11 # 132html     A Perl script that converts a .1 or .3 man page into HTML. It
     12 #             "knows" the relevant troff constructs that are used in the PCRE
     13 #             man pages.
     14 
     15 # CheckMan    A Perl script that checks man pages for typos in the mark up.
     16 
     17 # CleanTxt    A Perl script that cleans up the output of "nroff -man" by
     18 #             removing backspaces and other redundant text so as to produce
     19 #             a readable .txt file.
     20 
     21 # Detrail     A Perl script that removes trailing spaces from files.
     22 
     23 # doc/index.html.src
     24 #             A file that is copied as index.html into the doc/html directory
     25 #             when the HTML documentation is built. It works like this so that
     26 #             doc/html can be deleted and re-created from scratch.
     27 
     28 # README & NON-AUTOTOOLS-BUILD
     29 #             These files are copied into the doc/html directory, with .txt
     30 #             extensions so that they can by hyperlinked from the HTML 
     31 #             documentation, because some people just go to the HTML without
     32 #             looking for text files.
     33 
     34 
     35 # First, sort out the documentation. Remove pcredemo.3 first because it won't
     36 # pass the markup check (it is created below, using markup that none of the
     37 # other pages use).
     38 
     39 cd doc
     40 echo Processing documentation
     41 
     42 /bin/rm -f pcredemo.3
     43 
     44 # Check the remaining man pages
     45 
     46 perl ../CheckMan *.1 *.3
     47 if [ $? != 0 ] ; then exit 1; fi
     48 
     49 # Make Text form of the documentation. It needs some mangling to make it
     50 # tidy for online reading. Concatenate all the .3 stuff, but omit the
     51 # individual function pages.
     52 
     53 cat <<End >pcre.txt
     54 -----------------------------------------------------------------------------
     55 This file contains a concatenation of the PCRE man pages, converted to plain
     56 text format for ease of searching with a text editor, or for use on systems
     57 that do not have a man page processor. The small individual files that give
     58 synopses of each function in the library have not been included. Neither has
     59 the pcredemo program. There are separate text files for the pcregrep and
     60 pcretest commands.
     61 -----------------------------------------------------------------------------
     62 
     63 
     64 End
     65 
     66 echo "Making pcre.txt"
     67 for file in pcre pcre16 pcre32 pcrebuild pcrematching pcreapi pcrecallout \
     68             pcrecompat pcrepattern pcresyntax pcreunicode pcrejit pcrepartial \
     69             pcreprecompile pcreperform pcreposix pcrecpp pcresample \
     70             pcrelimits pcrestack ; do
     71   echo "  Processing $file.3"
     72   nroff -c -man $file.3 >$file.rawtxt
     73   perl ../CleanTxt <$file.rawtxt >>pcre.txt
     74   /bin/rm $file.rawtxt
     75   echo "------------------------------------------------------------------------------" >>pcre.txt
     76   if [ "$file" != "pcresample" ] ; then
     77     echo " " >>pcre.txt
     78     echo " " >>pcre.txt
     79   fi
     80 done
     81 
     82 # The three commands
     83 for file in pcretest pcregrep pcre-config ; do
     84   echo Making $file.txt
     85   nroff -c -man $file.1 >$file.rawtxt
     86   perl ../CleanTxt <$file.rawtxt >$file.txt
     87   /bin/rm $file.rawtxt
     88 done
     89 
     90 
     91 # Make pcredemo.3 from the pcredemo.c source file
     92 
     93 echo "Making pcredemo.3"
     94 perl <<"END" >pcredemo.3
     95   open(IN, "../pcredemo.c") || die "Failed to open pcredemo.c\n";
     96   open(OUT, ">pcredemo.3") || die "Failed to open pcredemo.3\n";
     97   print OUT ".\\\" Start example.\n" .
     98             ".de EX\n" .
     99             ".  nr mE \\\\n(.f\n" .
    100             ".  nf\n" .
    101             ".  nh\n" .
    102             ".  ft CW\n" .
    103             "..\n" .
    104             ".\n" .
    105             ".\n" .
    106             ".\\\" End example.\n" .
    107             ".de EE\n" .
    108             ".  ft \\\\n(mE\n" .
    109             ".  fi\n" .
    110             ".  hy \\\\n(HY\n" .
    111             "..\n" .
    112             ".\n" .
    113             ".EX\n" ;
    114   while (<IN>)
    115     {
    116     s/\\/\\e/g;
    117     print OUT;
    118     }
    119   print OUT ".EE\n";
    120   close(IN);
    121   close(OUT);
    122 END
    123 if [ $? != 0 ] ; then exit 1; fi
    124 
    125 
    126 # Make HTML form of the documentation.
    127 
    128 echo "Making HTML documentation"
    129 /bin/rm html/*
    130 cp index.html.src html/index.html
    131 cp ../README html/README.txt
    132 cp ../NON-AUTOTOOLS-BUILD html/NON-AUTOTOOLS-BUILD.txt
    133 
    134 for file in *.1 ; do
    135   base=`basename $file .1`
    136   echo "  Making $base.html"
    137   perl ../132html -toc $base <$file >html/$base.html
    138 done
    139 
    140 # Exclude table of contents for function summaries. It seems that expr
    141 # forces an anchored regex. Also exclude them for small pages that have
    142 # only one section.
    143 
    144 for file in *.3 ; do
    145   base=`basename $file .3`
    146   toc=-toc
    147   if [ `expr $base : '.*_'` -ne 0 ] ; then toc="" ; fi
    148   if [ "$base" = "pcresample" ]  || \
    149      [ "$base" = "pcrestack" ]   || \
    150      [ "$base" = "pcrecompat" ]  || \
    151      [ "$base" = "pcrelimits" ]  || \
    152      [ "$base" = "pcreperform" ] || \
    153      [ "$base" = "pcreunicode" ] ; then
    154     toc=""
    155   fi
    156   echo "  Making $base.html"
    157   perl ../132html $toc $base <$file >html/$base.html
    158   if [ $? != 0 ] ; then exit 1; fi
    159 done
    160 
    161 # End of documentation processing; stop if only documentation required.
    162 
    163 cd ..
    164 echo Documentation done
    165 if [ "$1" = "doc" ] ; then exit; fi
    166 
    167 # These files are detrailed; do not detrail the test data because there may be
    168 # significant trailing spaces. Do not detrail RunTest.bat, because it has CRLF
    169 # line endings and the detrail script removes all trailing white space. The
    170 # configure files are also omitted from the detrailing. We don't bother with
    171 # those pcre[16|32]_xx files that just define COMPILE_PCRE16 and then #include the
    172 # common file, because they aren't going to change.
    173 
    174 files="\
    175   Makefile.am \
    176   Makefile.in \
    177   configure.ac \
    178   README \
    179   LICENCE \
    180   COPYING \
    181   AUTHORS \
    182   NEWS \
    183   NON-UNIX-USE \
    184   NON-AUTOTOOLS-BUILD \
    185   INSTALL \
    186   132html \
    187   CleanTxt \
    188   Detrail \
    189   ChangeLog \
    190   CMakeLists.txt \
    191   RunGrepTest \
    192   RunTest \
    193   pcre-config.in \
    194   libpcre.pc.in \
    195   libpcre16.pc.in \
    196   libpcre32.pc.in \
    197   libpcreposix.pc.in \
    198   libpcrecpp.pc.in \
    199   config.h.in \
    200   pcre_chartables.c.dist \
    201   pcredemo.c \
    202   pcregrep.c \
    203   pcretest.c \
    204   dftables.c \
    205   pcreposix.c \
    206   pcreposix.h \
    207   pcre.h.in \
    208   pcre_internal.h \
    209   pcre_byte_order.c \
    210   pcre_compile.c \
    211   pcre_config.c \
    212   pcre_dfa_exec.c \
    213   pcre_exec.c \
    214   pcre_fullinfo.c \
    215   pcre_get.c \
    216   pcre_globals.c \
    217   pcre_jit_compile.c \
    218   pcre_jit_test.c \
    219   pcre_maketables.c \
    220   pcre_newline.c \
    221   pcre_ord2utf8.c \
    222   pcre16_ord2utf16.c \
    223   pcre32_ord2utf32.c \
    224   pcre_printint.c \
    225   pcre_refcount.c \
    226   pcre_string_utils.c \
    227   pcre_study.c \
    228   pcre_tables.c \
    229   pcre_valid_utf8.c \
    230   pcre_version.c \
    231   pcre_xclass.c \
    232   pcre16_utf16_utils.c \
    233   pcre32_utf32_utils.c \
    234   pcre16_valid_utf16.c \
    235   pcre32_valid_utf32.c \
    236   pcre_scanner.cc \
    237   pcre_scanner.h \
    238   pcre_scanner_unittest.cc \
    239   pcrecpp.cc \
    240   pcrecpp.h \
    241   pcrecpparg.h.in \
    242   pcrecpp_unittest.cc \
    243   pcre_stringpiece.cc \
    244   pcre_stringpiece.h.in \
    245   pcre_stringpiece_unittest.cc \
    246   perltest.pl \
    247   ucp.h \
    248   makevp.bat \
    249   pcre.def \
    250   libpcre.def \
    251   libpcreposix.def"
    252 
    253 echo Detrailing
    254 perl ./Detrail $files doc/p* doc/html/*
    255 
    256 echo Done
    257 
    258 #End
    259