* Makefile.common.in: unused PORT, SCC and SAS removed, fixed docdir
[fw/sdcc] / configure.in
1 #!/bin/sh
2
3 AC_PREREQ(2.54)
4 AC_INIT
5 AC_CONFIG_SRCDIR([Makefile])
6 AC_CONFIG_HEADER(sdccconf.h:sdccconf_in.h)
7
8 AC_PROG_AWK
9
10 AC_MSG_CHECKING(version of the package)
11 if test -f .version; then
12   VERSION=`cat .version`
13 elif test -f ../.version; then
14   VERSION=`cat ../.version`
15 else
16   VERSION="0.0.0"
17 fi
18 VERSIONHI=`echo $VERSION|$AWK 'BEGIN {FS="."} {print $1}'`
19 VERSIONLO=`echo $VERSION|$AWK 'BEGIN {FS="."} {print $2}'`
20 VERSIONP=`echo $VERSION|$AWK 'BEGIN {FS="."} {print $3}'`
21 # Assume no special extension
22 EXEEXT=`echo $EXEEXT`
23
24 AC_MSG_RESULT(${VERSION})
25 AC_SUBST(VERSION)
26 AC_SUBST(VERSIONHI)
27 AC_SUBST(VERSIONLO)
28 AC_SUBST(VERSIONP)
29 AC_DEFINE_UNQUOTED(SDCC_VERSION_LO, ${VERSIONLO})
30 AC_DEFINE_UNQUOTED(SDCC_VERSION_HI, ${VERSIONHI})
31 AC_DEFINE_UNQUOTED(SDCC_VERSION_P, ${VERSIONP})
32 AC_DEFINE_UNQUOTED(SDCC_VERSION_STR, "${VERSION}")
33 AC_ARG_PROGRAM
34 sdcc_cv_version=$VERSION
35 sdcc_cv_versionhi=$VERSIONHI
36 sdcc_cv_versionlo=$VERSIONLO
37 sdcc_cv_versionp=$VERSIONP
38
39
40 # Required programs
41 # ===========================================================================
42 AC_PROG_CC
43 AC_PROG_CXX
44 AC_PROG_CPP
45 AC_PROG_INSTALL
46 AC_PROG_RANLIB
47 AC_PROG_LEX
48 AC_PROG_YACC
49 AC_CHECK_PROG(AUTOCONF, autoconf, autoconf, :)
50 AC_CHECK_PROG(STRIP, strip, strip, :)
51 AC_CHECK_PROG(AS, as, as, :)
52 AC_CHECK_PROG(CP, cp, cp, :)
53
54 AC_CHECK_PROG(LYX,        lyx,        lyx, :)
55 AC_CHECK_PROG(LATEX,      latex,      latex, :)
56 AC_CHECK_PROG(LATEX2HTML, latex2html, latex2html, :)
57 AC_CHECK_PROG(PDFLATEX,   pdflatex,   pdflatex, :)
58 AC_CHECK_PROG(DVIPDF,     dvipdf,     dvipdf, :)
59
60 AC_DEFUN(SDCC_REQUIRE_PROG,
61 [if test "$1" = ":"; then
62   AC_MSG_ERROR([Cannot find required program $2.])
63  fi
64 ])
65
66 SDCC_REQUIRE_PROG($YACC, bison)
67 SDCC_REQUIRE_PROG($LEX, lex)
68
69 AC_LANG([C])
70
71
72 # Checking for header files.
73 # ===========================================================================
74 AC_CHECK_HEADERS(sys/socket.h)
75
76
77 # Checking for functions
78 # ===========================================================================
79 AC_CHECK_FUNCS(strerror)
80 AC_CHECK_FUNCS(vsnprintf snprintf vsprintf mkstemp)
81
82
83 # Macro definitions
84 # ===========================================================================
85
86 # DD_COPT macro checks if the compiler specified as the 1st parameter
87 # supports option specified as the 2nd parameter
88 # For example: DD_CPORT(CXX, fPIC)
89
90 AC_DEFUN(DD_COPT, [
91 AC_CACHE_CHECK(whether $$1 accepts -$2,sdcc_cv_$1$2,
92 cat >_test_.c <<EOF
93 #include <stdio.h>
94 void main(void) {}
95 EOF
96 $$1 -v -$2 -c _test_.c 1>&5 2>&5
97 if test "$?" = "0"; then
98   sdcc_cv_$1$2="yes"
99 else
100   sdcc_cv_$1$2="no"
101 fi
102 rm -f _test_.* a.out)
103 ])
104
105 # This macro expands DIR and assigns it to RET.
106 # If DIR is NONE, then it's replaced by DEFAULT.
107 #
108 # Based on AC_DEFINE_DIR
109 #
110 # Examples:
111 #
112 #  AC_EXPAND(prefix, "/usr/local", expanded_prefix)
113
114 AC_DEFUN([AC_EXPAND], [
115   test "x$prefix" = xNONE && prefix="$ac_default_prefix"
116   test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
117   ac_expand=[$]$1
118   test "x$ac_expand" = xNONE && ac_expand="[$]$2"
119   ac_expand=`eval echo [$]ac_expand`
120   $3=`eval echo [$]ac_expand`
121 ])
122
123 # adl_NORMALIZE_PATH
124 #
125 #  - empty paths are changed to '.'
126 #  - trailing slashes are removed
127 #  - repeated slashes are squeezed except a leading doubled slash '//'
128 #    (which might indicate a networked disk on some OS).
129 #
130 #
131 # REFERENCE_STRING is used to turn '/' into '\' and vice-versa: if
132 # REFERENCE_STRING contains some backslashes, all slashes and backslashes
133 # are turned into backslashes, otherwise they are all turned into slashes.
134 #
135 # This makes processing of DOS filenames quite easier, because you can turn a
136 # filename to the Unix notation, make your processing, and turn it back to
137 # original notation.
138
139 dnl Available from the GNU Autoconf Macro Archive at:
140 dnl http://www.gnu.org/software/ac-archive/htmldoc/normpath.html
141 dnl
142 AC_DEFUN([adl_NORMALIZE_PATH],
143 [case ":[$]$1:" in
144 # change empty paths to '.'
145   ::) $1='.' ;;
146 # strip trailing slashes
147   :*[[\\/]]:) $1=`echo "[$]$1" | sed 's,[[\\/]]*[$],,'` ;;
148   :*:) ;;
149 esac
150 # squeze repeated slashes
151 case ifelse($2,,"[$]$1",$2) in
152 # if the path contains any backslashes, turn slashes into backslashes
153
154 # Bernhard Held 2003-04-06
155 # This was the original line. It doesn't:
156 # - convert the first slash
157 # - replace a slash with a double-backslash
158 # *\\*) $1=`echo "[$]$1" | sed 's,\(.\)[[\\/]][[\\/]]*,\1\\\\,g'` ;;
159  *\\*) $1=`echo "[$]$1" | sed 's,[[\\/]][[\\/]]*,\1\\\\\\\\,g'` ;;
160
161 # if the path contains slashes, also turn backslashes into slashes
162  *) $1=`echo "[$]$1" | sed 's,\(.\)[[\\/]][[\\/]]*,\1/,g'` ;;
163 esac])
164
165
166 # adl_COMPUTE_RELATIVE_PATH
167 #
168 # PATH_LIST is a space-separated list of colon-separated triplets of the form
169 # 'FROM:TO:RESULT'. This function iterates over these triplets and set $RESULT
170 # to the relative path from $FROM to $TO. Note that $FROM and $TO needs to be
171 # absolute filenames for this macro to success.
172
173 AC_DEFUN([adl_COMPUTE_RELATIVE_PATHS],
174 [for _lcl_i in $1; do
175   _lcl_from=\[$]`echo "[$]_lcl_i" | sed 's,:.*$,,'`
176   _lcl_to=\[$]`echo "[$]_lcl_i" | sed 's,^[[^:]]*:,,' | sed 's,:[[^:]]*$,,'`
177   _lcl_result_var=`echo "[$]_lcl_i" | sed 's,^.*:,,'`
178   adl_RECURSIVE_EVAL([[$]_lcl_from], [_lcl_from])
179   adl_RECURSIVE_EVAL([[$]_lcl_to], [_lcl_to])
180   _lcl_notation="$_lcl_from$_lcl_to"
181   adl_NORMALIZE_PATH([_lcl_from],['/'])
182   adl_NORMALIZE_PATH([_lcl_to],['/'])
183   adl_COMPUTE_RELATIVE_PATH([_lcl_from], [_lcl_to], [_lcl_result_tmp])
184   adl_NORMALIZE_PATH([_lcl_result_tmp],["[$]_lcl_notation"])
185   eval $_lcl_result_var='[$]_lcl_result_tmp'
186 done])
187
188 ## Note:
189 ## *****
190 ## The following helper macros are too fragile to be used out
191 ## of adl_COMPUTE_RELATIVE_PATHS (mainly because they assume that
192 ## paths are normalized), that's why I'm keeping them in the same file.
193 ## Still, some of them maybe worth to reuse.
194
195 dnl adl_COMPUTE_RELATIVE_PATH(FROM, TO, RESULT)
196 dnl ===========================================
197 dnl Compute the relative path to go from $FROM to $TO and set the value
198 dnl of $RESULT to that value.  This function work on raw filenames
199 dnl (for instead it will considerate /usr//local and /usr/local as
200 dnl two distinct paths), you should really use adl_COMPUTE_REALTIVE_PATHS
201 dnl instead to have the paths sanitized automatically.
202 dnl
203 dnl For instance:
204 dnl    first_dir=/somewhere/on/my/disk/bin
205 dnl    second_dir=/somewhere/on/another/disk/share
206 dnl    adl_COMPUTE_RELATIVE_PATH(first_dir, second_dir, first_to_second)
207 dnl will set $first_to_second to '../../../another/disk/share'.
208 AC_DEFUN([adl_COMPUTE_RELATIVE_PATH],
209 [adl_COMPUTE_COMMON_PATH([$1], [$2], [_lcl_common_prefix])
210 adl_COMPUTE_BACK_PATH([$1], [_lcl_common_prefix], [_lcl_first_rel])
211 adl_COMPUTE_SUFFIX_PATH([$2], [_lcl_common_prefix], [_lcl_second_suffix])
212 $3="[$]_lcl_first_rel[$]_lcl_second_suffix"])
213
214 dnl adl_COMPUTE_COMMON_PATH(LEFT, RIGHT, RESULT)
215 dnl ============================================
216 dnl Compute the common path to $LEFT and $RIGHT and set the result to $RESULT.
217 dnl
218 dnl For instance:
219 dnl    first_path=/somewhere/on/my/disk/bin
220 dnl    second_path=/somewhere/on/another/disk/share
221 dnl    adl_COMPUTE_COMMON_PATH(first_path, second_path, common_path)
222 dnl will set $common_path to '/somewhere/on'.
223 AC_DEFUN([adl_COMPUTE_COMMON_PATH],
224 [$3=''
225 _lcl_second_prefix_match=''
226 while test "[$]_lcl_second_prefix_match" != 0; do
227   _lcl_first_prefix=`expr "x[$]$1" : "x\([$]$3/*[[^/]]*\)"`
228   _lcl_second_prefix_match=`expr "x[$]$2" : "x[$]_lcl_first_prefix"`
229   if test "[$]_lcl_second_prefix_match" != 0; then
230     if test "[$]_lcl_first_prefix" != "[$]$3"; then
231       $3="[$]_lcl_first_prefix"
232     else
233       _lcl_second_prefix_match=0
234     fi
235   fi
236 done])
237
238 dnl adl_COMPUTE_SUFFIX_PATH(PATH, SUBPATH, RESULT)
239 dnl ==============================================
240 dnl Substrack $SUBPATH from $PATH, and set the resulting suffix
241 dnl (or the empty string if $SUBPATH is not a subpath of $PATH)
242 dnl to $RESULT.
243 dnl
244 dnl For instace:
245 dnl    first_path=/somewhere/on/my/disk/bin
246 dnl    second_path=/somewhere/on
247 dnl    adl_COMPUTE_SUFFIX_PATH(first_path, second_path, common_path)
248 dnl will set $common_path to '/my/disk/bin'.
249 AC_DEFUN([adl_COMPUTE_SUFFIX_PATH],
250 [$3=`expr "x[$]$1" : "x[$]$2/*\(.*\)"`])
251
252 dnl adl_COMPUTE_BACK_PATH(PATH, SUBPATH, RESULT)
253 dnl ============================================
254 dnl Compute the relative path to go from $PATH to $SUBPATH, knowing that
255 dnl $SUBPATH is a subpath of $PATH (any other words, only repeated '../'
256 dnl should be needed to move from $PATH to $SUBPATH) and set the value
257 dnl of $RESULT to that value.  If $SUBPATH is not a subpath of PATH,
258 dnl set $RESULT to the empty string.
259 dnl
260 dnl For instance:
261 dnl    first_path=/somewhere/on/my/disk/bin
262 dnl    second_path=/somewhere/on
263 dnl    adl_COMPUTE_BACK_PATH(first_path, second_path, back_path)
264 dnl will set $back_path to '../../../'.
265 AC_DEFUN([adl_COMPUTE_BACK_PATH],
266 [adl_COMPUTE_SUFFIX_PATH([$1], [$2], [_lcl_first_suffix])
267 $3=''
268 _lcl_tmp='xxx'
269 while test "[$]_lcl_tmp" != ''; do
270   _lcl_tmp=`expr "x[$]_lcl_first_suffix" : "x[[^/]]*/*\(.*\)"`
271   if test "[$]_lcl_first_suffix" != ''; then
272      _lcl_first_suffix="[$]_lcl_tmp"
273      $3="../[$]$3"
274   fi
275 done])
276
277
278 dnl adl_RECURSIVE_EVAL(VALUE, RESULT)
279 dnl =================================
280 dnl Interpolate the VALUE in loop until it doesn't change,
281 dnl and set the result to $RESULT.
282 dnl WARNING: It's easy to get an infinite loop with some unsane input.
283 AC_DEFUN([adl_RECURSIVE_EVAL],
284 [_lcl_receval="$1"
285 $2=`(test "x$prefix" = xNONE && prefix="$ac_default_prefix"
286      test "x$exec_prefix" = xNONE && exec_prefix="${prefix}"
287      _lcl_receval_old=''
288      while test "[$]_lcl_receval_old" != "[$]_lcl_receval"; do
289        _lcl_receval_old="[$]_lcl_receval"
290        eval _lcl_receval="\"[$]_lcl_receval\""
291      done
292      echo "[$]_lcl_receval")`])
293
294
295 # AC_NORMALIZE_DEFINE_UNQUOTED(var, DEFINE, REFERENCE_STRING)
296
297 AC_DEFUN([AC_NORMALIZE_DEFINE_UNQUOTED], [
298   ac_ndu=[$]$1
299   adl_NORMALIZE_PATH([ac_ndu], [$]$3)
300   AC_DEFINE_UNQUOTED($2, "${ac_ndu}")
301 ])
302
303
304 # Checking characteristics of compilers and other programs
305 # ===========================================================================
306 AC_CACHE_CHECK(whether preprocessor accepts -MM or -M,sdcc_cv_MM,
307 echo "#include <stdio.h>" >_test_.c
308 echo "" >>_test_.c
309 $CPP -v -MM _test_.c 1>&5 2>&5
310 if test "$?" = "0"; then
311   sdcc_cv_MM="-MM"
312 else
313   sdcc_cv_MM="-M"
314 fi
315 rm -f _test_.*)
316 M_OR_MM=$sdcc_cv_MM
317 AC_SUBST(M_OR_MM)
318
319 # This is the first time when CFLAGS are set/modified!!
320 DD_COPT(CC, ggdb)
321 if test "$sdcc_cv_CCggdb" = "yes"; then
322   CFLAGS="-ggdb ${CFLAGS}"
323 fi
324
325 DD_COPT(CC, pipe)
326 if test "$sdcc_cv_CCpipe" = "yes"; then
327   CFLAGS="-pipe $CFLAGS"
328 fi
329
330
331 # Checks for typedefs, structures, and compiler characteristics.
332 # ===========================================================================
333 AC_TYPE_SIGNAL
334
335 AC_CHECK_SIZEOF(char)
336 AC_CHECK_SIZEOF(short)
337 AC_CHECK_SIZEOF(int)
338 AC_CHECK_SIZEOF(long)
339
340 type_name()
341 {
342     if expr "$ac_cv_sizeof_char" '>=' "$1" >/dev/null; then
343         echo "char"
344         exit
345     fi
346     if expr "$ac_cv_sizeof_short" '>=' "$1" >/dev/null; then
347         echo "short"
348         exit
349     fi
350     if expr "$ac_cv_sizeof_int" '>=' "$1" >/dev/null; then
351         echo "int"
352         exit
353     fi
354     if expr "$ac_cv_sizeof_long" '>=' "$1" >/dev/null; then
355         echo "long"
356         exit
357     fi
358     echo "long"
359 }
360
361 AC_MSG_CHECKING(type name for byte)
362 TYPE_BYTE=`type_name 1`
363 AC_MSG_RESULT($TYPE_BYTE)
364 AC_MSG_CHECKING(type name for word)
365 TYPE_WORD=`type_name 2`
366 AC_MSG_RESULT($TYPE_WORD)
367 AC_MSG_CHECKING(type name for dword)
368 TYPE_DWORD=`type_name 4`
369 AC_MSG_RESULT($TYPE_DWORD)
370 AC_DEFINE_UNQUOTED(TYPE_BYTE,  $TYPE_BYTE)
371 AC_DEFINE_UNQUOTED(TYPE_WORD,  $TYPE_WORD)
372 AC_DEFINE_UNQUOTED(TYPE_DWORD, $TYPE_DWORD)
373
374 AC_C_BIGENDIAN
375
376 # Set standard installation paths
377 # ===========================================================================
378
379 # In the Makefiles we need paths with '/' as directory separator, even if
380 # crosscompiling for Win32.
381 # And we want to preserve the macros (e.g. ${prefix}) in the Makefiles.
382 # The variables in the Makefiles are replaced by AC_SUBST()
383 #
384 # In sdccconf.h the '/' in paths are replaced by "\\" (normalized).
385 # The macros are expanded for the header.
386 # The variables in the header are replaced by AC_*DEFINE*()
387
388 AC_MSG_CHECKING(-mno-cygwin)
389   case ${CFLAGS} in
390       *-mno-cygwin*)
391           MINGW32_HOST="yes"
392           ;;
393       *)
394           MINGW32_HOST="no"
395           ;;
396   esac
397 AC_MSG_RESULT($MINGW32_HOST)
398
399 AC_MSG_CHECKING(host mingw32)
400   case ${host} in
401       *mingw32*)
402           MINGW32_HOST="yes"
403           ;;
404   esac
405 AC_MSG_RESULT($MINGW32_HOST)
406
407 if test "${MINGW32_HOST}" = "no"; then
408     dir_separator="/"
409 else
410     dir_separator="\\\\"
411 fi
412
413
414 # Makefiles
415 ###########
416
417 # include_dir_suffix:
418 # *nix    default: "sdcc/include"
419 # mingw32 default: "include"
420   if test "${MINGW32_HOST}" = "no"; then
421         include_dir_suffix="sdcc/include"
422   else
423         include_dir_suffix="include"
424   fi
425 AC_SUBST(include_dir_suffix)
426
427 # lib_dir_suffix:
428 # *nix    default: "sdcc/lib"
429 # mingw32 default: "lib"
430   if test "${MINGW32_HOST}" = "no"; then
431         lib_dir_suffix="sdcc/lib"
432   else
433         lib_dir_suffix="lib"
434   fi
435 AC_SUBST(lib_dir_suffix)
436
437 # docdir:
438 # *nix    default: "${datadir}/sdcc/doc"
439 # mingw32 default: "${datadir}/doc"
440   if test "${MINGW32_HOST}" = "no"; then
441         doc_suffix="/sdcc/doc"
442   else
443         doc_suffix="/doc"
444   fi
445   docdir="\${datadir}"${doc_suffix}
446 AC_SUBST(docdir)
447
448 # sdccconf.h
449 ############
450
451 AC_DEFINE_UNQUOTED(DIR_SEPARATOR_STRING, "${dir_separator}")
452 AC_DEFINE_UNQUOTED(DIR_SEPARATOR_CHAR  , '${dir_separator}')
453
454 # prefix:
455 # *nix    default: "NONE", ${ac_default_prefix}: "/usr/local"
456 # mingw32 default: "/sdcc"
457 AC_EXPAND(prefix, ac_default_prefix, expanded_prefix)
458 AC_NORMALIZE_DEFINE_UNQUOTED(expanded_prefix, PREFIX, dir_separator)
459
460 # exec_prefix:
461 # default: "${prefix}"
462 AC_EXPAND(exec_prefix, expanded_prefix, expanded_exec_prefix)
463 AC_NORMALIZE_DEFINE_UNQUOTED(expanded_exec_prefix, EXEC_PREFIX, dir_separator)
464
465 # bindir:
466 # default: "${exec_prefix}/bin"
467 AC_EXPAND(bindir, "NONE", expanded_bindir)
468 AC_NORMALIZE_DEFINE_UNQUOTED(expanded_bindir, BINDIR, dir_separator)
469
470 # datadir:
471 # *nix    default: "${prefix}/share"
472 # mingw32 default: "/sdcc"
473 AC_EXPAND(datadir, "NONE", expanded_datadir)
474 AC_NORMALIZE_DEFINE_UNQUOTED(expanded_datadir, DATADIR, dir_separator)
475
476 # include/lib suffix
477 norm_inc_dir_suffix=${include_dir_suffix}
478 adl_NORMALIZE_PATH([norm_inc_dir_suffix], [$dir_separator])
479 AC_DEFINE_UNQUOTED(INCLUDE_DIR_SUFFIX,
480                    DIR_SEPARATOR_STRING "${norm_inc_dir_suffix}")
481 norm_lib_dir_suffix=${lib_dir_suffix}
482 adl_NORMALIZE_PATH([norm_lib_dir_suffix], [$dir_separator])
483 AC_DEFINE_UNQUOTED(LIB_DIR_SUFFIX,
484                    DIR_SEPARATOR_STRING "${norm_lib_dir_suffix}")
485
486 # relative paths
487 adl_COMPUTE_RELATIVE_PATHS([expanded_bindir:expanded_datadir:bin2data_dir])
488 adl_NORMALIZE_PATH(bin2data_dir, [$dir_separator])
489 AC_DEFINE_UNQUOTED(BIN2DATA_DIR,
490                    DIR_SEPARATOR_STRING "${bin2data_dir}")
491
492 adl_COMPUTE_RELATIVE_PATHS([expanded_prefix:expanded_bindir:prefix2bin_dir])
493 adl_NORMALIZE_PATH(prefix2bin_dir, [$dir_separator])
494 AC_DEFINE_UNQUOTED(PREFIX2BIN_DIR,
495                    DIR_SEPARATOR_STRING "${prefix2bin_dir}")
496
497 adl_COMPUTE_RELATIVE_PATHS([expanded_prefix:expanded_datadir:prefix2data_dir])
498 adl_NORMALIZE_PATH(prefix2data_dir, [$dir_separator])
499 if test "${prefix2data_dir}" = "."; then
500     # small optimization for Mingw32; otherwise Borut will complain ;-)
501     AC_DEFINE_UNQUOTED(PREFIX2DATA_DIR, "")
502 else
503     AC_DEFINE_UNQUOTED(PREFIX2DATA_DIR,
504                        DIR_SEPARATOR_STRING "${prefix2data_dir}")
505 fi
506
507 # standard libs
508 AC_DEFINE_UNQUOTED(STD_LIB,       "libsdcc")
509 AC_DEFINE_UNQUOTED(STD_INT_LIB,   "libint")
510 AC_DEFINE_UNQUOTED(STD_LONG_LIB,  "liblong")
511 AC_DEFINE_UNQUOTED(STD_FP_LIB,    "libfloat")
512 AC_DEFINE_UNQUOTED(STD_DS390_LIB, "libds390")
513 AC_DEFINE_UNQUOTED(STD_xa51_LIB,  "xa51")
514
515 ### <Obsolete>
516 sdcc_include_dir="\${datadir}/${include_dir_suffix}"
517 AC_SUBST(sdcc_include_dir)
518 AC_EXPAND(sdcc_include_dir,
519           "NONE", expanded_sdcc_include_dir)
520 AC_DEFINE_UNQUOTED(SDCC_INCLUDE_DIR, "${expanded_sdcc_include_dir}")
521
522 sdcc_lib_dir="\${datadir}/\${lib_dir_suffix}"
523 # AC_SUBST(sdcc_lib_dir)
524 AC_EXPAND(sdcc_lib_dir,
525           "NONE", expanded_sdcc_lib_dir)
526 AC_DEFINE_UNQUOTED(SDCC_LIB_DIR, "${expanded_sdcc_lib_dir}")
527
528 sdcc_datadir=${datadir}/sdcc
529 AC_SUBST(sdcc_datadir)
530
531 ### </Obsolete>
532
533 # environment variables
534 sdcc_dir_name="SDCC_HOME"
535 AC_DEFINE_UNQUOTED(SDCC_DIR_NAME, "${sdcc_dir_name}")
536
537 sdcc_include_name="SDCC_INCLUDE"
538 AC_DEFINE_UNQUOTED(SDCC_INCLUDE_NAME, "${sdcc_include_name}")
539
540 sdcc_lib_name="SDCC_LIB"
541 AC_DEFINE_UNQUOTED(SDCC_LIB_NAME, "${sdcc_lib_name}")
542
543 # Now handle the port selection
544 # ===========================================================================
545 rm -f ports.all ports.build
546 AC_ARG_ENABLE(mcs51-port,
547             AC_HELP_STRING([--disable-mcs51-port],
548                            [Excludes the Intel mcs51 port]))
549 echo mcs51 >>ports.all
550 if test "$enable_mcs51_port" = "no"; then
551     AC_DEFINE_UNQUOTED(OPT_DISABLE_MCS51, 1)
552 else
553     echo mcs51 >>ports.build
554     AC_DEFINE_UNQUOTED(OPT_DISABLE_MCS51, 0)
555 fi
556
557 AC_ARG_ENABLE(gbz80-port,
558             AC_HELP_STRING([--disable-gbz80-port],
559                            [Excludes the Gameboy gbz80 port]))
560 echo z80 >>ports.all
561 if test "$enable_gbz80_port" = "no"; then
562     AC_DEFINE_UNQUOTED(OPT_DISABLE_GBZ80, 1)
563 else
564     echo z80 >>ports.build
565     AC_DEFINE_UNQUOTED(OPT_DISABLE_GBZ80, 0)
566 fi
567
568 AC_ARG_ENABLE(z80-port,
569             AC_HELP_STRING([--disable-z80-port],
570                            [Excludes the z80 port]))
571 echo z80 >>ports.all
572 if test "$enable_z80_port" = "no"; then
573     AC_DEFINE_UNQUOTED(OPT_DISABLE_Z80, 1)
574 else
575     echo z80 >>ports.build
576     AC_DEFINE_UNQUOTED(OPT_DISABLE_Z80, 0)
577 fi
578
579 AC_ARG_ENABLE(avr-port,
580             AC_HELP_STRING([--disable-avr-port],
581                            [Excludes the AVR port]))
582 echo avr >>ports.all
583 if test "$enable_avr_port" = "no"; then
584     AC_DEFINE_UNQUOTED(OPT_DISABLE_AVR, 1)
585 else
586     echo avr >>ports.build
587     AC_DEFINE_UNQUOTED(OPT_DISABLE_AVR, 0)
588 fi
589
590 AC_ARG_ENABLE(ds390-port,
591             AC_HELP_STRING([--disable-ds390-port],
592                            [Excludes the DS390 port]))
593 echo ds390 >>ports.all
594 if test "$enable_ds390_port" = "no"; then
595     AC_DEFINE_UNQUOTED(OPT_DISABLE_DS390, 1)
596     AC_DEFINE_UNQUOTED(OPT_DISABLE_TININative, 1)
597 else
598     echo ds390 >>ports.build
599     AC_DEFINE_UNQUOTED(OPT_DISABLE_DS390, 0)
600     AC_DEFINE_UNQUOTED(OPT_DISABLE_TININative, 0)
601 fi
602
603 AC_ARG_ENABLE(pic-port,
604             AC_HELP_STRING([--disable-pic-port],
605                            [Excludes the PIC port]))
606 echo pic >>ports.all
607 if test "$enable_pic_port" = "no"; then
608     AC_DEFINE_UNQUOTED(OPT_DISABLE_PIC, 1)
609 else
610     echo pic >>ports.build
611     AC_DEFINE_UNQUOTED(OPT_DISABLE_PIC, 0)
612 fi
613
614 AC_ARG_ENABLE(xa51-port,
615             AC_HELP_STRING([--disable-xa51-port],
616                            [Excludes the XA51 port]))
617 echo xa51 >>ports.all
618 if test "$enable_xa51_port" = "no"; then
619     AC_DEFINE_UNQUOTED(OPT_DISABLE_XA51, 1)
620 else
621     echo xa51 >>ports.build
622     AC_DEFINE_UNQUOTED(OPT_DISABLE_XA51, 0)
623 fi
624
625 AC_ARG_ENABLE(ucsim,
626               AC_HELP_STRING([--disable-ucsim],
627                              [Disables configuring and building of ucsim]))
628 OPT_ENABLE_UCSIM=$enable_ucsim
629 AC_SUBST(OPT_ENABLE_UCSIM)
630
631 AC_ARG_ENABLE(device-lib-build,
632               AC_HELP_STRING([--disable-device-lib-build],
633                              [Disables automatically building device libraries]))
634 OPT_ENABLE_DEVICE_LIB_BUILD=$enable_device_lib_build
635 AC_SUBST(OPT_ENABLE_DEVICE_LIB_BUILD)
636
637 AC_ARG_ENABLE(packihx,
638               AC_HELP_STRING([--disable-packihx],
639                              [Disables building packihx]))
640 OPT_ENABLE_PACKIHX=$enable_packihx
641 AC_SUBST(OPT_ENABLE_PACKIHX)
642
643 AC_ARG_ENABLE(libgc,
644               AC_HELP_STRING([--enable-libgc],
645                              [Use the Bohem memory allocator. Lower runtime footprint.]))
646 if test "$enable_libgc" = "yes"; then
647         AC_CHECK_LIB(gc, GC_malloc)
648         OPT_ENABLE_LIBGC=1
649 else
650         OPT_ENABLE_LIBGC=0
651 fi
652 AC_DEFINE_UNQUOTED(OPT_ENABLE_LIBGC, $OPT_ENABLE_LIBGC)
653
654 #remove duplicates
655 cat ports.all | uniq >ports
656 mv ports ports.all
657 cat ports.build | uniq >ports
658 mv ports ports.build
659
660 # Generating output files
661 # ===========================================================================
662 AC_CONFIG_SUBDIRS(support/cpp2)
663 AC_CONFIG_SUBDIRS(packihx)
664 AC_CONFIG_SUBDIRS(sim/ucsim)
665 AC_CONFIG_FILES([main.mk:main_in.mk
666 src/Makefile
667 as/mcs51/Makefile
668 device/include/Makefile
669 device/lib/Makefile
670 debugger/mcs51/Makefile
671 Makefile.common:Makefile.common.in
672 ])
673 AC_OUTPUT
674
675 # End of configure/configure.in