Insist on bison: yacc isn't good enough
[fw/sdcc] / configure.in
1 #!/bin/sh
2
3 AC_INIT(Makefile)
4 AC_CONFIG_HEADER(sdccconf.h:sdccconf_in.h)
5
6 AC_PROG_AWK
7
8 AC_MSG_CHECKING(version of the package)
9 if test -f .version; then
10   VERSION=`cat .version`
11 elif test -f ../.version; then
12   VERSION=`cat ../.version`
13 else
14   VERSION="0.0.0"
15 fi
16 VERSIONHI=`echo $VERSION|$AWK 'BEGIN {FS="."} {print $1}'`
17 VERSIONLO=`echo $VERSION|$AWK 'BEGIN {FS="."} {print $2}'`
18 VERSIONP=`echo $VERSION|$AWK 'BEGIN {FS="."} {print $3}'`
19 AC_MSG_RESULT(${VERSION})
20 AC_SUBST(VERSION)
21 AC_SUBST(VERSIONHI)
22 AC_SUBST(VERSIONLO)
23 AC_SUBST(VERSIONP)
24 AC_DEFINE_UNQUOTED(SDCC_VERSION_LO, ${VERSIONLO})
25 AC_DEFINE_UNQUOTED(SDCC_VERSION_HI, ${VERSIONHI})
26 AC_DEFINE_UNQUOTED(SDCC_VERSION_P, ${VERSIONP})
27 AC_DEFINE_UNQUOTED(SDCC_VERSION_STR, "${VERSION}")
28 sdcc_cv_version=$VERSION
29 sdcc_cv_versionhi=$VERSIONHI
30 sdcc_cv_versionlo=$VERSIONLO
31 sdcc_cv_versionp=$VERSIONP
32
33 # Required programs
34 #-------------------
35 AC_PROG_CC
36 AC_PROG_CXX
37 AC_PROG_CPP
38 AC_PROG_INSTALL
39 AC_PROG_RANLIB
40 AC_PROG_LEX(flex, :)
41 AC_CHECK_PROG(YACC, bison, bison -y, :)
42 AC_CHECK_PROG(AUTOCONF, autoconf, autoconf, :)
43 AC_CHECK_PROG(AS, as, as, :)
44 AC_CHECK_PROG(CP, cp, cp, :)
45
46 AC_DEFUN(SDCC_REQUIRE_PROG, 
47 [if test "$1" = ":"; then
48   AC_MSG_ERROR([Cannot find required program $2.])
49  fi
50 ])
51
52 SDCC_REQUIRE_PROG($YACC, bison)
53 SDCC_REQUIRE_PROG($LEX, lex)
54
55 AC_LANG_C
56
57 # Checking for header files.
58 # ===========================================================================
59 AC_HEADER_STDC
60 AC_CHECK_HEADERS(getopt.h)
61 AC_CHECK_HEADERS(unistd.h)
62 AC_CHECK_HEADERS(endian.h)
63 AC_CHECK_HEADERS(sys/isa_defs.h)
64 AC_CHECK_HEADERS(sys/socket.h)
65 AC_HEADER_DIRENT
66
67 # This must be after CPP
68
69 AC_CACHE_CHECK(which header file defines FD_ macros, s51_cv_fd,
70 [sdcc_cv_fd="unknown"
71 AC_EGREP_CPP(yes, [
72 #include <sys/time.h>
73 #ifdef FD_ZERO
74 yes
75 #endif], sdcc_cv_fd="<sys/time.h>")
76 AC_EGREP_CPP(yes, [
77 #include <sys/types.h>
78 #ifdef FD_ZERO
79 yes
80 #endif], sdcc_cv_fd="<sys/types.h>")
81 AC_EGREP_CPP(yes, [
82 #include <sys/select.h>
83 #ifdef FD_ZERO
84 yes
85 #endif], sdcc_cv_fd="<sys/types.h>")])
86
87 AC_DEFINE(FD_HEADER_OK, 0)
88 if echo $sdcc_cv_fd|grep time >/dev/null 2>&1; then
89 AC_DEFINE(FD_NEED_TIME_H, 1)
90 AC_DEFINE(FD_HEADER_OK, 1)
91 else
92 AC_DEFINE(FD_NEED_TIME_H, 0)
93 fi
94 if echo $sdcc_cv_fd|grep types >/dev/null 2>&1; then
95 AC_DEFINE(FD_NEED_TYPES_H, 1)
96 AC_DEFINE(FD_HEADER_OK, 1)
97 else
98 AC_DEFINE(FD_NEED_TYPES_H, 0)
99 fi
100 if echo $sdcc_cv_fd|grep select >/dev/null 2>&1; then
101 AC_DEFINE(FD_NEED_SELECT_H, 1)
102 AC_DEFINE(FD_HEADER_OK, 1)
103 else
104 AC_DEFINE(FD_NEED_SELECT_H, 0)
105 fi
106
107 AC_DEFINE_UNQUOTED(HEADER_FD, ${sdcc_cv_fd})
108
109
110 # Checking for functions
111 # ===========================================================================
112 AC_CHECK_FUNCS(strlen strcpy strcat strstr strcmp strerror strtok strdup)
113 AC_CHECK_FUNCS(strchr memcpy)
114 dnl AC_CHECK_FUNCS(getline)
115 dnl AC_CHECK_FUNCS(getdelim)
116 AC_CHECK_FUNCS(fgets)
117 AC_CHECK_FUNCS(yylex)
118
119 # check if -lsocket && -lxnet is required to compile socket stuff
120 AC_SEARCH_LIBS(socket,socket)
121 AC_SEARCH_LIBS(inet_addr,nsl xnet)
122
123 # Macro definitions
124 ###################
125
126 # DD_COPT macro checks if the compiler specified as the 1st parameter
127 # supports option specified as the 2nd parameter
128 # For example: DD_CPORT(CXX, fPIC)
129
130 AC_DEFUN(DD_COPT, [
131 AC_CACHE_CHECK(whether $$1 accepts -$2,sdcc_cv_$1$2,
132 cat >_test_.c <<EOF
133 #include <stdio.h>
134 void main(void) {}
135 EOF
136 $$1 -v -$2 -c _test_.c 1>&5 2>&5
137 if test "$?" = "0"; then
138   sdcc_cv_$1$2="yes"
139 else
140   sdcc_cv_$1$2="no"
141 fi
142 rm -f _test_.* a.out)
143 ])
144
145
146 # Checking characteristics of compilers and other programs
147 # --------------------------------------------------------
148 AC_CACHE_CHECK(whether preprocessor accepts -MM or -M,sdcc_cv_MM,
149 echo "#include <stdio.h>" >_test_.c
150 echo "" >>_test_.c
151 $CPP -v -MM _test_.c 1>&5 2>&5
152 if test "$?" = "0"; then
153   sdcc_cv_MM="-MM"
154 else
155   sdcc_cv_MM="-M"
156 fi
157 rm -f _test_.*)
158 M_OR_MM=$sdcc_cv_MM
159 AC_SUBST(M_OR_MM)
160
161 # This is the first time when CFLAGS are set/modified!!
162 DD_COPT(CC, ggdb)
163 if test "$sdcc_cv_CCggdb" = "yes"; then
164   CFLAGS="-ggdb -O2"
165 fi
166
167 DD_COPT(CC, pipe)
168 if test "$sdcc_cv_CCpipe" = "yes"; then
169   CFLAGS="$CFLAGS -pipe"
170 fi
171
172
173 # Checks for typedefs, structures, and compiler characteristics.
174 # ===========================================================================
175 AC_TYPE_SIGNAL
176
177 #
178 #
179 if test "${prefix}" = "NONE"; then
180     prefix="/usr/local"
181 fi
182
183 config_in=`pwd`
184 if test "${datadir}" = "\${prefix}/share"; then
185   sdcc_datadir=${prefix}/share
186 else
187   sdcc_datadir=${datadir}
188 fi
189 AC_DEFINE_UNQUOTED(STANDARD_INCLUDE_DIR, "${sdcc_datadir}/include")
190 AC_DEFINE_UNQUOTED(SDCC_INCLUDE_DIR, "${sdcc_datadir}/include")
191 AC_DEFINE_UNQUOTED(SDCC_LIB_DIR, "${sdcc_datadir}/lib")
192 AC_DEFINE_UNQUOTED(STD_LIB, "libsdcc")
193 AC_DEFINE_UNQUOTED(STD_INT_LIB, "libint")
194 AC_DEFINE_UNQUOTED(STD_LONG_LIB, "liblong")
195 AC_DEFINE_UNQUOTED(STD_FP_LIB, "libfloat")
196 AC_DEFINE_UNQUOTED(STD_DS390_LIB, "libds390")
197
198 AC_DEFINE_UNQUOTED(PREFIX, "${prefix}")
199 AC_DEFINE_UNQUOTED(DATADIR, "${sdcc_datadir}")
200 AC_DEFINE_UNQUOTED(SRCDIR, "${config_in}")
201
202 # mlh: dont compile libgc if it's available locally
203 AC_CHECK_LIB(gc,GC_malloc,HAVE_LIBGC=1)
204 AC_SUBST(HAVE_LIBGC)
205
206 # Now handle the port selection
207 AC_ARG_ENABLE(z80-port,--disable-z80-port: Excludes the z80 port)
208 if test "$enable_z80_port" = "no"; then
209     AC_DEFINE_UNQUOTED(OPT_DISABLE_Z80, 1)
210 else
211     AC_DEFINE_UNQUOTED(OPT_DISABLE_Z80, 0)
212 fi
213
214 AC_ARG_ENABLE(gbz80-port,--disable-gbz80-port: Excludes the Gameboy gbz80 port)
215 if test "$enable_gbz80_port" = "no"; then
216     AC_DEFINE_UNQUOTED(OPT_DISABLE_GBZ80, 1)
217 else
218     AC_DEFINE_UNQUOTED(OPT_DISABLE_GBZ80, 0)
219 fi
220
221 AC_ARG_ENABLE(mcs51-port,--disable-mcs51-port: Excludes the Intel mcs51 port)
222 if test "$enable_mcs51_port" = "no"; then
223     AC_DEFINE_UNQUOTED(OPT_DISABLE_MCS51, 1)
224 else
225     AC_DEFINE_UNQUOTED(OPT_DISABLE_MCS51, 0)
226 fi
227
228 AC_ARG_ENABLE(avr-port,--disable-avr-port: Excludes the AVR port)
229 if test "$enable_avr_port" = "no"; then
230     AC_DEFINE_UNQUOTED(OPT_DISABLE_AVR, 1)
231 else
232     AC_DEFINE_UNQUOTED(OPT_DISABLE_AVR, 0)
233 fi
234
235 # Generating output files
236 # ===========================================================================
237 AC_CONFIG_SUBDIRS(sim/ucsim)
238 # MLH: removed as the rules are already in Makefile.common
239 #as/z80/Makefile
240 #link/z80/Makefile
241 AC_OUTPUT(main.mk:main_in.mk
242 support/gc/Makefile
243 support/gc/Makefile.cross
244 src/Makefile
245 as/mcs51/Makefile
246 support/cpp/Makefile
247 device/include/Makefile
248 device/lib/Makefile
249 debugger/mcs51/Makefile
250 Makefile.common:Makefile.common.in
251 )
252
253 # End of configure/configure.in