Initial revision
[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_YACC(bison, :)
41 AC_PROG_LEX(flex, :)
42 AC_CHECK_PROG(AUTOCONF, autoconf, autoconf, :)
43 AC_CHECK_PROG(AS, as, as, :)
44 AC_CHECK_PROG(CP, cp, cp, :)
45
46 AC_LANG_C
47
48 # Checking for header files.
49 # ===========================================================================
50 AC_HEADER_STDC
51 AC_CHECK_HEADERS(getopt.h)
52 AC_CHECK_HEADERS(unistd.h)
53 AC_CHECK_HEADERS(endian.h)
54 AC_CHECK_HEADERS(sys/isa_defs.h)
55 AC_CHECK_HEADERS(sys/socket.h)
56 AC_HEADER_DIRENT
57
58 # This must be after CPP
59
60 AC_CACHE_CHECK(which header file defines FD_ macros, s51_cv_fd,
61 [sdcc_cv_fd="unknown"
62 AC_EGREP_CPP(yes, [
63 #include <sys/time.h>
64 #ifdef FD_ZERO
65 yes
66 #endif], sdcc_cv_fd="<sys/time.h>")
67 AC_EGREP_CPP(yes, [
68 #include <sys/types.h>
69 #ifdef FD_ZERO
70 yes
71 #endif], sdcc_cv_fd="<sys/types.h>")
72 AC_EGREP_CPP(yes, [
73 #include <sys/select.h>
74 #ifdef FD_ZERO
75 yes
76 #endif], sdcc_cv_fd="<sys/types.h>")])
77
78 AC_DEFINE(FD_HEADER_OK, 0)
79 if echo $sdcc_cv_fd|grep time >/dev/null 2>&1; then
80 AC_DEFINE(FD_NEED_TIME_H, 1)
81 AC_DEFINE(FD_HEADER_OK, 1)
82 else
83 AC_DEFINE(FD_NEED_TIME_H, 0)
84 fi
85 if echo $sdcc_cv_fd|grep types >/dev/null 2>&1; then
86 AC_DEFINE(FD_NEED_TYPES_H, 1)
87 AC_DEFINE(FD_HEADER_OK, 1)
88 else
89 AC_DEFINE(FD_NEED_TYPES_H, 0)
90 fi
91 if echo $sdcc_cv_fd|grep select >/dev/null 2>&1; then
92 AC_DEFINE(FD_NEED_SELECT_H, 1)
93 AC_DEFINE(FD_HEADER_OK, 1)
94 else
95 AC_DEFINE(FD_NEED_SELECT_H, 0)
96 fi
97
98 AC_DEFINE_UNQUOTED(HEADER_FD, ${sdcc_cv_fd})
99
100
101 # Checking for functions
102 # ===========================================================================
103 AC_CHECK_FUNCS(strlen strcpy strcat strstr strcmp strerror strtok strdup)
104 AC_CHECK_FUNCS(strchr memcpy)
105 dnl AC_CHECK_FUNCS(getline)
106 dnl AC_CHECK_FUNCS(getdelim)
107 AC_CHECK_FUNCS(fgets)
108 AC_CHECK_FUNCS(yylex)
109
110 # check if -lsocket && -lxnet is required to compile socket stuff
111 AC_SEARCH_LIBS(socket,socket)
112 AC_SEARCH_LIBS(inet_addr,nsl xnet)
113
114 # Macro definitions
115 ###################
116
117 # DD_COPT macro checks if the compiler specified as the 1st parameter
118 # supports option specified as the 2nd parameter
119 # For example: DD_CPORT(CXX, fPIC)
120
121 AC_DEFUN(DD_COPT, [
122 AC_CACHE_CHECK(whether $$1 accepts -$2,sdcc_cv_$1$2,
123 cat >_test_.c <<EOF
124 #include <stdio.h>
125 void main(void) {}
126 EOF
127 $$1 -v -$2 -c _test_.c 1>&5 2>&5
128 if test "$?" = "0"; then
129   sdcc_cv_$1$2="yes"
130 else
131   sdcc_cv_$1$2="no"
132 fi
133 rm -f _test_.* a.out)
134 ])
135
136
137 # Checking characteristics of compilers and other programs
138 # --------------------------------------------------------
139 AC_CACHE_CHECK(whether preprocessor accepts -MM or -M,sdcc_cv_MM,
140 echo "#include <stdio.h>" >_test_.c
141 echo "" >>_test_.c
142 $CPP -v -MM _test_.c 1>&5 2>&5
143 if test "$?" = "0"; then
144   sdcc_cv_MM="-MM"
145 else
146   sdcc_cv_MM="-M"
147 fi
148 rm -f _test_.*)
149 M_OR_MM=$sdcc_cv_MM
150 AC_SUBST(M_OR_MM)
151
152 # This is the first time when CFLAGS are set/modified!!
153 DD_COPT(CC, ggdb)
154 if test "$sdcc_cv_CCggdb" = "yes"; then
155   CFLAGS="-ggdb -O2"
156 fi
157
158 DD_COPT(CC, pipe)
159 if test "$sdcc_cv_CCpipe" = "yes"; then
160   CFLAGS="$CFLAGS -pipe"
161 fi
162
163
164 # Checks for typedefs, structures, and compiler characteristics.
165 # ===========================================================================
166 AC_TYPE_SIGNAL
167
168 #
169 #
170 if test "${prefix}" = "NONE"; then
171     prefix="/usr/local"
172 fi
173
174 config_in=`pwd`
175 if test "${datadir}" = "\${prefix}/share"; then
176   sdcc_datadir=${prefix}/share
177 else
178   sdcc_datadir=${datadir}
179 fi
180 AC_DEFINE_UNQUOTED(STANDARD_INCLUDE_DIR, "${sdcc_datadir}/sdcc51inc")
181 AC_DEFINE_UNQUOTED(SDCC_INCLUDE_DIR, "${sdcc_datadir}/sdcc51inc")
182 AC_DEFINE_UNQUOTED(SDCC_LIB_DIR, "${sdcc_datadir}/sdcc51lib")
183 AC_DEFINE_UNQUOTED(STD_LIB, "libsdcc")
184 AC_DEFINE_UNQUOTED(STD_INT_LIB, "libint")
185 AC_DEFINE_UNQUOTED(STD_LONG_LIB, "liblong")
186 AC_DEFINE_UNQUOTED(STD_FP_LIB, "libfloat")
187
188 AC_DEFINE_UNQUOTED(PREFIX, "${prefix}")
189 AC_DEFINE_UNQUOTED(DATADIR, "${sdcc_datadir}")
190 AC_DEFINE_UNQUOTED(SRCDIR, "${config_in}")
191
192
193 # Generating output files
194 # ===========================================================================
195 AC_CONFIG_SUBDIRS(s51.src)
196 AC_OUTPUT(main.mk:main_in.mk
197 support/gc/Makefile
198 src/Makefile
199 as/mcs51/Makefile
200 support/cpp/Makefile
201 device/include/Makefile
202 device/lib/Makefile
203 debugger/mcs51/Makefile
204 )
205
206 # End of configure/configure.in