summaryrefslogtreecommitdiff
path: root/buildconf
blob: f3ce3e6ca5393e11ef80879df3539925874ef3a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#!/bin/sh
#
# A wrapper around Autoconf that generates files to build PHP on *nix systems.

MAKE=${MAKE:-make}
PHP_AUTOCONF=${PHP_AUTOCONF:-autoconf}
PHP_AUTOHEADER=${PHP_AUTOHEADER:-autoheader}
force=0
debug=0

# Go to project root.
cd $(CDPATH= cd -- "$(dirname -- "$0")" && pwd -P)

php_extra_version=$(grep '^AC_INIT(' configure.ac)
case "$php_extra_version" in
  *-dev*)
    dev=1
    ;;
  *)
    dev=0
    ;;
esac

while test $# -gt 0; do
  if test "$1" = "-h" || test "$1" = "--help"; then
    cat << HELP
PHP buildconf

A wrapper around the autoconf and autoheader that generate files for building
PHP on *nix systems (configure and main/php_config.h.in). The configure script
is used to customize the PHP build based on the provided options and system. PHP
releases downloaded from PHP.net already include the configure script so
installing Autoconf and running buildconf is not needed. For the PHP sources
from the Git repository, buildconf is used for generating a new configure script
and required files.

SYNOPSIS:
  buildconf [<options>]

OPTIONS:
  -f, --force     Clean cache and overwrite configure files.
  --debug         Display warnings emitted by Autoconf.
  -h, --help      Display this help.

ENVIRONMENT:
  The following optional variables are supported:

  MAKE            Overrides the path to make tool.
                  MAKE=/path/to/make ./buildconf
  PHP_AUTOCONF    Overrides the path to autoconf tool.
                  PHP_AUTOCONF=/path/to/autoconf ./buildconf
  PHP_AUTOHEADER  Overrides the path to autoheader tool.
                  PHP_AUTOHEADER=/path/to/autoheader ./buildconf
HELP
    exit 0
  fi

  if test "$1" = "-f" || test "$1" = "--force"; then
    force=1
  fi

  if test "$1" = "--debug"; then
    debug=1
  fi

  shift
done

if test "$dev" = "0" -a "$force" = "0"; then
  if test -f "configure"; then
    echo "The configure script has already been built for you. All done."
    echo "Run ./configure to proceed with customizing the PHP build."
    exit 0
  else
    echo "Configure script is missing." >&2
    echo "Run ./buildconf --force to create a configure script." >&2
    exit 1
  fi
fi

if test "$force" = "1"; then
  echo "buildconf: Forcing buildconf"
  echo "buildconf: Removing configure caches and files"
  rm -rf autom4te.cache config.cache configure
fi

echo "buildconf: Checking installation"

# Get minimum required autoconf version from the configure.ac file.
min_version=$(sed -n 's/AC_PREREQ(\[\(.*\)\])/\1/p' configure.ac)

# Check if autoconf exists.
ac_version=$($PHP_AUTOCONF --version 2>/dev/null|head -n 1|sed -e 's/^[^0-9]*//' -e 's/[a-z]* *$//')

if test -z "$ac_version"; then
  echo "buildconf: autoconf not found." >&2
  echo "           You need autoconf version $min_version or newer installed" >&2
  echo "           to build PHP from Git." >&2
  exit 1
fi

# Check autoconf version.
set -f; IFS='.'; set -- $ac_version; set +f; IFS=' '
ac_version_num="$(expr ${1} \* 10000 + ${2} \* 100)"
set -f; IFS='.'; set -- $min_version; set +f; IFS=' '
min_version_num="$(expr ${1} \* 10000 + ${2} \* 100)"

if test "$ac_version_num" -lt "$min_version_num"; then
  echo "buildconf: autoconf version $ac_version found." >&2
  echo "           You need autoconf version $min_version or newer installed" >&2
  echo "           to build PHP from Git." >&2
  exit 1
else
  echo "buildconf: autoconf version $ac_version (ok)"
fi

# Check if make exists.
if ! test -x "$(command -v $MAKE)"; then
  echo "buildconf: make not found." >&2
  echo "           You need to have make installed to build PHP." >&2
  exit 1
fi

echo "buildconf: Building configure files"

if test "$debug" = "1"; then
  autoconf_flags="-f -Wall"
else
  autoconf_flags="-f"
fi

$MAKE -s -f build/build.mk \
  PHP_AUTOCONF="$PHP_AUTOCONF" \
  PHP_AUTOHEADER="$PHP_AUTOHEADER" \
  PHP_AUTOCONF_FLAGS="$autoconf_flags" \
  PHP_M4_FILES="$(echo TSRM/*.m4 Zend/Zend.m4 build/*.m4 ext/*/config*.m4 sapi/*/config*.m4)"