xref: /PHP-5.3/scripts/phpize.in (revision a8e42c91)
1#!/bin/sh
2
3# Variable declaration
4prefix='@prefix@'
5exec_prefix="`eval echo @exec_prefix@`"
6phpdir="`eval echo @libdir@`/build"
7includedir="`eval echo @includedir@`/php"
8builddir="`pwd`"
9SED="@SED@"
10
11FILES_BUILD="mkdep.awk scan_makefile_in.awk shtool libtool.m4"
12FILES="acinclude.m4 Makefile.global config.sub config.guess ltmain.sh run-tests*.php"
13CLEAN_FILES="$FILES *.o *.lo *.la .deps .libs/ build/ include/ modules/ install-sh \
14	mkinstalldirs missing config.nice config.sub config.guess configure configure.in \
15	aclocal.m4 config.h config.h.in conftest* ltmain.sh libtool config.cache autom4te.cache/ \
16	config.log config.status Makefile Makefile.fragments Makefile.objects confdefs.h \
17	run-tests*.php tests/*.diff tests/*.exp tests/*.log tests/*.out tests/*.php"
18
19# function declaration
20phpize_usage()
21{
22  echo "Usage: $0 [--clean|--help|--version|-v]"
23}
24
25phpize_no_configm4()
26{
27  if test $@ -eq 1; then
28    clean=" --clean"
29  fi
30
31  echo "Cannot find config.m4. "
32  echo "Make sure that you run '$0$clean' in the top level source directory of the module"
33  echo
34}
35
36phpize_clean()
37{
38  echo "Cleaning.."
39  for i in $CLEAN_FILES; do
40    if test -f "$i"; then
41      rm -f $i
42    elif test -d "$i"; then
43      rm -rf $i
44    fi
45  done
46}
47
48phpize_check_configm4()
49{
50  if test ! -r config.m4; then
51     phpize_no_configm4 $@
52    exit 1
53  fi
54
55}
56
57phpize_get_api_numbers()
58{
59  # extracting API NOs:
60  PHP_API_VERSION=`grep '#define PHP_API_VERSION' $includedir/main/php.h|$SED 's/#define PHP_API_VERSION//'`
61  ZEND_MODULE_API_NO=`grep '#define ZEND_MODULE_API_NO' $includedir/Zend/zend_modules.h|$SED 's/#define ZEND_MODULE_API_NO//'`
62  ZEND_EXTENSION_API_NO=`grep '#define ZEND_EXTENSION_API_NO' $includedir/Zend/zend_extensions.h|$SED 's/#define ZEND_EXTENSION_API_NO//'`
63}
64
65phpize_print_api_numbers()
66{
67  phpize_get_api_numbers
68  echo "Configuring for:"
69  echo "PHP Api Version:        "$PHP_API_VERSION
70  echo "Zend Module Api No:     "$ZEND_MODULE_API_NO
71  echo "Zend Extension Api No:  "$ZEND_EXTENSION_API_NO
72}
73
74phpize_check_build_files()
75{
76  if test ! -d "$phpdir"; then
77    cat <<EOF
78Cannot find build files at '$phpdir'. Please check your PHP installation.
79
80EOF
81    exit 1
82  fi
83
84  case "$phpdir" in
85  *\ * | *\	*)
86    cat <<EOF
87Invalid source path '$phpdir'. Whitespace is not allowed in source path.
88
89EOF
90    exit 1;;
91  esac
92
93  case "$builddir" in
94  *\ * | *\	*)
95    cat <<EOF
96Invalid build path '$builddir'. Whitespace is not allowed in build path.
97
98EOF
99      exit 1;;
100  esac
101}
102
103phpize_check_shtool()
104{
105  test -x "$builddir/build/shtool" || chmod +x "$builddir/build/shtool"
106
107  if test ! -x "$builddir/build/shtool"; then
108    cat <<EOF
109shtool at '$builddir/build/shtool' does not exist or is not executable. 
110Make sure that the file exists and is executable and then rerun this script. 
111
112EOF
113    exit 1
114  else
115    php_shtool=$builddir/build/shtool
116  fi
117}
118
119phpize_check_autotools()
120{
121  test -z "$PHP_AUTOCONF" && PHP_AUTOCONF=autoconf
122  test -z "$PHP_AUTOHEADER" && PHP_AUTOHEADER=autoheader
123
124  if test ! -x "$PHP_AUTOCONF" && test ! -x "`$php_shtool path $PHP_AUTOCONF`"; then
125    cat <<EOF
126Cannot find autoconf. Please check your autoconf installation and the
127\$PHP_AUTOCONF environment variable. Then, rerun this script.
128
129EOF
130    exit 1
131  fi
132  if test ! -x "$PHP_AUTOHEADER" && test ! -x "`$php_shtool path $PHP_AUTOHEADER`"; then
133    cat <<EOF
134Cannot find autoheader. Please check your autoconf installation and the
135\$PHP_AUTOHEADER environment variable. Then, rerun this script.
136
137EOF
138    exit 1
139  fi
140}
141
142phpize_copy_files()
143{
144  test -d build || mkdir build
145
146  (cd "$phpdir" && cp $FILES_BUILD "$builddir"/build)
147  (cd "$phpdir" && cp $FILES "$builddir")
148  (cd "$builddir" && cat acinclude.m4 ./build/libtool.m4 > aclocal.m4)
149}
150
151phpize_replace_prefix()
152{
153  $SED \
154  -e "s#@prefix@#$prefix#" \
155  < "$phpdir/phpize.m4" > configure.in
156}
157
158phpize_autotools()
159{
160  $PHP_AUTOCONF   || exit 1
161  $PHP_AUTOHEADER || exit 1
162}
163
164# Main script
165
166case "$1" in
167  # Cleanup
168  --clean)
169    phpize_check_configm4 1
170    phpize_clean
171    exit 0
172    ;;
173
174  # Usage
175  --help)
176    phpize_usage
177    exit 0
178    ;;
179
180  # Version
181  --version|-v)
182    phpize_print_api_numbers
183    exit 0
184  ;;
185
186  # Default
187  *)
188     phpize_check_configm4 0
189
190     phpize_check_build_files
191
192     phpize_print_api_numbers
193
194     phpize_copy_files
195
196     phpize_replace_prefix
197
198     touch install-sh mkinstalldirs missing
199
200     phpize_check_shtool
201
202     phpize_check_autotools
203
204     phpize_autotools
205     ;;
206esac
207
208exit 0
209