1 dnl Process this file with autoconf to produce a configure script.
3 AC_INIT([pcb], [1.99z])
4 AC_CONFIG_SRCDIR([src/draw.c])
6 AM_INIT_AUTOMAKE([1.9])
8 AM_CONFIG_HEADER([config.h])
10 ##########################################################################
12 # Try to figure out if we are building from git sources.
13 # If we are then unless building of the documentation has
14 # been disabled then just require the user have all the right
15 # tools. Users building from a tarball won't need latex, makeinfo,
16 # etc. but if you're already downloading development sources, then
17 # it is not unreasonable to require development tools. What motivated
18 # this is that using maintainer mode proved to cause regular confusion.
21 AC_MSG_CHECKING([if you are building from a git checkout])
23 if test -f $srcdir/.gitignore ; then
30 AM_CONDITIONAL(GIT_VERSION, test x$pcb_git_version = xyes)
32 AC_MSG_CHECKING([if you are building from a anoncvs checkout])
34 if test -f $srcdir/CVS/Root ; then
41 AM_CONDITIONAL(CVS_VERSION, test x$pcb_cvs_version = xyes)
42 AM_CONDITIONAL(GIT_OR_CVS_VERSION, test x$pcb_git_version = xyes -o x$pcb_cvs_version = xyes)
45 ##########################################################################
47 # See if we are supposed to build the docs
51 AC_MSG_CHECKING([if the documentation should be built])
53 [ --enable-doc Build and install the documentation [[default=yes]]],
55 if test "X$enable_doc" = "Xno" ; then
73 AC_MSG_CHECKING([if maintainer mode is required])
74 if test "$docs_yesno" = "yes" -a "$pcb_git_version" = "yes" ; then
75 AC_MSG_RESULT([yes -- the documentation build is enabled and your sources are from git])
76 enable_maintainer_mode=yes
84 dnl determine host type
86 AC_MSG_CHECKING(for windows)
87 PCB_PATH_DELIMETER=":"
88 PCB_DIR_SEPARATOR_S="/"
89 PCB_DIR_SEPARATOR_C='/'
92 CFLAGS="$CFLAGS ${CYGWIN_CFLAGS}"
93 CPPFLAGS="$CPPFLAGS ${CYGWIN_CPPFLAGS}"
98 CFLAGS="$CFLAGS ${MINGW_CFLAGS:--mms-bitfields -mwindows}"
99 CPPFLAGS="$CPPFLAGS ${MINGW_CPPFLAGS:--mms-bitfields -mwindows}"
107 AC_MSG_RESULT($WIN32)
109 AM_CONDITIONAL(WIN32, test x$WIN32 = xyes)
110 if test "x$WIN32" = "xyes" ; then
111 PCB_PATH_DELIMETER=";"
112 PCB_DIR_SEPARATOR_S="\\\\"
113 PCB_DIR_SEPARATOR_C='\\'
116 AC_DEFINE_UNQUOTED(PCB_DIR_SEPARATOR_C,'$PCB_DIR_SEPARATOR_C',[Directory separator char])
117 AC_DEFINE_UNQUOTED(PCB_DIR_SEPARATOR_S,"$PCB_DIR_SEPARATOR_S",[Directory separator string])
118 AC_DEFINE_UNQUOTED(PCB_PATH_DELIMETER,"$PCB_PATH_DELIMETER",[Search path separator string])
121 dnl Checks for programs.
125 if test "x$WIN32" = "xyes" ; then
126 AC_CHECK_TOOL(WINDRES, windres, [no])
127 if test "$WINDRES" = "no" ; then
128 AC_MSG_ERROR([*** Could not find an implementation of windres in your PATH.])
133 GETTEXT_PACKAGE=$PACKAGE
134 AH_TEMPLATE([GETTEXT_PACKAGE], [Name of this program's gettext domain])
135 AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], ["$GETTEXT_PACKAGE"])
136 AC_SUBST(GETTEXT_PACKAGE)
138 AM_GNU_GETTEXT_VERSION([0.14])
140 IT_PROG_INTLTOOL([0.35.0])
150 AC_PATH_PROG(LEX_PATH, $LEX, [notfound])
151 if test "$LEX_PATH" = "notfound" ; then
152 AC_MSG_ERROR([Couldn't find a usable lex program.
153 Please install flex which is available from
154 ftp://ftp.gnu.org/pub/non-gnu/flex/
160 AC_PATH_PROG(YACC_PATH, $YACC, [notfound])
161 if test "$YACC_PATH" = "notfound" ; then
162 AC_MSG_ERROR([Couldn't find a usable yacc program.
163 Please install bison which is available from
164 ftp://ftp.gnu.org/pub/gnu/bison/
172 # Used for building the icons
174 AC_PATH_PROG(XPMTOPPM, xpmtoppm, notfound)
175 AC_PATH_PROG(PPMTOWINICON, ppmtowinicon, notfound)
176 AC_PATH_PROG(CONVERT, convert, notfound)
178 ##########################################################################
181 if test "X$docs_yesno" = "Xyes" -a "X$pcb_git_version" = "Xyes" ; then
182 AC_PATH_PROG(MKINFO, makeinfo, no)
183 if test "X$MKINFO" != "Xno"; then
184 AC_MSG_CHECKING([for GNU makeinfo version >= 4.6])
185 v=`$MKINFO --version | grep "GNU texinfo"`
186 if test $? -ne 0; then
187 AC_MSG_RESULT([non-GNU])
191 if test "X$MKINFO" != "Xno"; then
192 vmajor=`echo "$v" | sed 's/.* \([[0-9]]*\)\.\([[0-9]]*\)$/\1/'`
193 vminor=`echo "$v" | sed 's/.* \([[0-9]]*\)\.\([[0-9]]*\)$/\2/'`
194 AC_MSG_RESULT([$vmajor.$vminor])
195 if test "$vmajor" -lt 4 \
196 || (test "$vmajor" -eq 4 && test "$vminor" -lt 6); then
200 if test "X$MKINFO" = "Xno"; then
201 AC_MSG_ERROR([You have requested a build
202 of the documentation. For this to work, you must have version 4.6 or newer of
203 the GNU texinfo package. You seem to have
207 Please update to a newer version of texinfo or disable building of
208 the documentation with --disable-doc
212 AC_PATH_PROG(TEXI2DVI, texi2dvi, no)
213 if test "X$TEXI2DVI" = "Xno"; then
214 AC_MSG_ERROR([You have requested a build
215 of the documentation. For this to work, you must have the texi2dvi program
216 installed. Alternatively, you can disable building the documentation with
221 AC_PATH_PROG(PERL, perl, notfound)
222 if test "X$PERL" = "Xnotfound"; then
223 AC_MSG_ERROR([You have requested a build
224 of the documentation. For this to work, you must have perl installed.
225 Alternatively, you can disable building the documentation with
231 AC_PATH_PROG([KPSEWHICH], [kpsewhich], [no])
232 if test "X$KPSEWHICH" = "Xno"; then
233 AC_MSG_ERROR([You have requested a build
234 of the documentation. For this to work, you must have a functional install of
235 TeX and LaTeX. kpsewhich is part of TeX.
236 Alternatively, you can disable building the documentation with
240 AC_MSG_CHECKING([If your TeX installation contains epsf.tex])
241 f=`$KPSEWHICH epsf.tex`
242 if test $? -eq 0 ; then
243 AC_MSG_RESULT([yes ($f)])
246 AC_MSG_ERROR([You have requested a build
247 of the documentation. For this to work, you must have a functional install of
248 TeX and LaTeX that includes epsf.tex. On some linux distributions this is
249 part of the texlive-generic-recommended package.
250 Alternatively, you can disable building the documentation with
256 ##########################################################################
260 # FIXME: for now, only try to add -rdynamic if we're using gcc. We really
261 # need to figure out what the correct test is here. In the mean time, this
262 # should let things build with SunPRO again.
263 if test "x$GCC" = "xyes"; then
264 AC_MSG_CHECKING([If the compiler accepts -rdynamic])
265 old_LDFLAGS="$LDFLAGS"
266 LDFLAGS="$LDFLAGS -rdynamic"
267 AC_LINK_IFELSE([AC_LANG_PROGRAM()],
268 [AC_MSG_RESULT([yes])],
269 [LDFLAGS="$old_LDFLAGS"
274 # ------------- HID config -------------------
281 for hid in `cd $srcdir/src/hid; echo *`; do
282 F=$srcdir/src/hid/$hid/hid.conf
288 gui ) hid_guis="$hid_guis $hid" ;;
289 printer ) hid_printers="$hid_printers $hid" ;;
290 export ) hid_exporters="$hid_exporters $hid" ;;
291 always ) hid_always="$hid_always $hid" ;;
296 AC_MSG_CHECKING([for which gui to use])
298 [ --with-gui= Specify the GUI to use: batch gtk lesstif [[default=gtk]]],
302 AC_MSG_RESULT([$with_gui])
303 case " $hid_guis no none " in
304 *\ $with_gui\ * ) HIDLIST="$with_gui" ;;
305 * ) AC_MSG_ERROR([$with_gui is not a valid gui]) ;;
308 if test x"$with_gui" = x"none" -o x"$with_gui" = x"no"
313 AC_MSG_CHECKING([whether to enable toporouter])
314 AC_ARG_ENABLE([toporouter],
315 [AS_HELP_STRING([--enable-toporouter], [build toporouter [default=yes]]) ]
317 AS_CASE(["x$enable_toporouter"],[xyes | xno],,
318 [enable_toporouter=yes
321 AC_MSG_RESULT([$enable_toporouter])
322 AM_CONDITIONAL([WITH_TOPOROUTER], test $enable_toporouter != no)
324 AC_MSG_CHECKING([whether to enable toporouter output])
325 AC_ARG_ENABLE([toporouter-output],
326 [AS_HELP_STRING([--enable-toporouter-output], [enable toporouter graphical output [default=no]]) ]
328 AS_CASE(["z$enable_toporouter_output"],[zyes | zno],,
329 [enable_toporouter_output=no]
331 AC_MSG_RESULT([$enable_toporouter_output])
332 AS_CASE([$enable_toporouter_output],[yes],
334 topo_output_enabled=1
337 topo_output_enabled=0
340 AC_DEFINE_UNQUOTED([TOPO_OUTPUT_ENABLED], [$topo_output_enabled],
341 [Define to 1 to enable toporouter graphical output]
344 PKG_PROG_PKG_CONFIG()
346 if test "x$enable_toporouter_output" = "xyes"; then
347 PKG_CHECK_MODULES(CAIRO, cairo,,
348 [AC_MSG_ERROR([Cannot find cairo, needed by the toporouter
349 Please review the following errors:
354 AC_MSG_CHECKING([for whether to use DBUS])
355 AC_ARG_ENABLE([dbus],
356 [ --enable-dbus Enable DBUS IPC],
358 case " $with_gui " in
359 *\ gtk\ *) enable_dbus=yes ;;
360 *\ lesstif\ *) enable_dbus=yes ;;
361 * ) enable_dbus=no ;;
365 AC_MSG_RESULT([$enable_dbus])
366 AM_CONDITIONAL(WITH_DBUS, test x$enable_dbus = xyes)
368 if test "x$enable_dbus" = "xyes"; then
369 case " $with_gui " in
372 * ) AC_MSG_ERROR([DBUS enabled but only works with a mainloop capable GUI HID.
373 Either do not use --enable-dbus or enable the gtk or lesstif GUI HID.])
376 PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.61,
378 LIBS="$LIBS $DBUS_LIBS"
379 AC_CHECK_FUNCS(dbus_watch_get_unix_fd)
380 LIBS="$saved_LIBS" ],
381 [AC_MSG_ERROR([Cannot find dbus-1 >= 0.61, install it and rerun ./configure
382 Please review the following errors:
385 DBUS_VERSION=`$PKG_CONFIG dbus-1 --modversion`
387 AC_DEFINE([HAVE_DBUS], 1,
388 [Define to 1 if DBUS IPC is to be compiled in])
392 AC_MSG_CHECKING([for which printer to use])
393 AC_ARG_WITH([printer],
394 [ --with-printer= Specify the printer: lpr [[default=lpr]]],
395 [],[with_printer=lpr])
396 AC_MSG_RESULT([$with_printer])
397 case " $hid_printers " in
398 *\ $with_printer\ * )
399 HIDLIST="$HIDLIST $with_printer"
401 * ) AC_MSG_ERROR([$with_printer is not a valid printer]) ;;
404 AC_MSG_CHECKING([for which exporters to use])
405 AC_ARG_WITH([exporters],
406 [ --with-exporters= Enable export devices: bom gerber gcode nelma png ps [[default=bom gerber gcode nelma png ps]]],
407 [],[with_exporters=$hid_exporters])
408 AC_MSG_RESULT([$with_exporters])
409 for e in `echo $with_exporters | sed 's/,/ /g'`; do
410 case " $hid_exporters " in
412 HIDLIST="$HIDLIST $e"
414 * ) AC_MSG_ERROR([$e is not a valid exporter]) ;;
418 if test "X$enable_jpeg" = "Xno" -a "X$enable_gif" = "Xno" -a "X$enable_png" = "Xno" ; then
419 case " ${HIDLIST} " in
421 AC_MSG_ERROR([you have requested the png HID but turned off all output
422 formats! If you do not want gif/jpeg/png output, use --with-exporters to list
423 which exporters you want and do not list png there.])
431 for hid in $HIDLIST; do
432 F=$srcdir/src/hid/$hid/hid.conf
434 echo checking $hid depedencies
438 if test "X`echo $HIDLIST | grep $dep`" = "X"; then
439 AC_MSG_ERROR([you have requested the $hid HID but not the $dep HID, which it depends on])
445 for e in $HIDLIST; do
446 HIDLIBS="$HIDLIBS lib$e.a"
452 # ------------- end HID config -------------------
454 ######################################################################
456 # desktop integration
459 AC_PATH_PROG(SETENV, env, [])
460 AC_PATH_PROG(GTK_UPDATE_ICON_CACHE_BIN, gtk-update-icon-path, [true])
462 # Change default location for XDG files (MIME and Icons)
463 AC_ARG_WITH(xdgdatadir, [ --with-xdgdatadir=path Change where the theme icons
464 and mime registrations are installed [[DATADIR]]], [opt_xdgdatadir=$withval])
466 # Change default location for KDE data files (KDE MIME registrations)
467 AC_ARG_WITH(kdedatadir, [ --with-kdedatadir=path Change where the KDE mime reg
468 istrations are installed [[DATADIR]]], [opt_kdedatadir=$withval])
470 if test x$opt_xdgdatadir = x; then
471 # path was not specified with --with-xdgdatadir
472 XDGDATADIR='${datadir}'
474 # path WAS specified with --with-xdgdatadir
475 XDGDATADIR="$opt_xdgdatadir"
479 if test x$opt_kdedatadir = x; then
480 # path was not specified with --with-kdedatadir
481 KDEDATADIR='${datadir}'
483 # path WAS specified with --with-kdedatadir
484 KDEDATADIR="$opt_kdedatadir"
488 AC_ARG_ENABLE(update-desktop-database,
489 AC_HELP_STRING([--disable-update-desktop-database],
490 [do not update desktop database after installation]),,
491 enable_update_desktop_database=yes)
493 AM_CONDITIONAL(ENABLE_UPDATE_DESKTOP_DATABASE, test x$enable_update_desktop_database = xyes)
495 if test x$enable_update_desktop_database = xyes ; then
496 AC_PATH_PROG(UPDATE_DESKTOP_DATABASE, [update-desktop-database], no)
497 if test $UPDATE_DESKTOP_DATABASE = no; then
498 AC_MSG_ERROR([Cannot find update-desktop-database, make sure it is installed and in your PATH, or configure with --disable-update-desktop-database])
502 AC_ARG_ENABLE(update-mime-database,
503 AC_HELP_STRING([--disable-update-mime-database],
504 [do not update mime database after installation]),,
505 enable_update_mime_database=yes)
507 AM_CONDITIONAL(ENABLE_UPDATE_MIME_DATABASE, test x$enable_update_mime_database = xyes)
509 if test x$enable_update_mime_database = xyes ; then
510 AC_PATH_PROG(UPDATE_MIME_DATABASE, [update-mime-database], no)
511 if test $UPDATE_MIME_DATABASE = no; then
512 AC_MSG_ERROR([Cannot find update-mime-database, make sure it is installed and in your PATH, or configure with --disable-update-mime-database])
517 ######################################################################
519 AC_PATH_PROGS(M4, gm4 m4, [none])
520 if test "X$M4" = "Xnone" ; then
521 AC_MSG_ERROR([Did not find a m4 executible. You need to make sure
522 that m4 is installed on your system and that m4 is in your path])
524 AC_MSG_CHECKING([if $M4 has the division involving negative numbers bug])
525 pcb_m4_r=`echo "eval(-2/2)" | $M4`
526 if test "$pcb_m4_r" != "-1" ; then
528 AC_MSG_ERROR([It appears that $M4 has a bug involving division
529 with negative numbers. In particular it just returned the result that
530 -2/2 = $pcb_m4_r instead of -1. This is a known bug in GNU m4-1.4.9. Please
531 install a non-broken m4.])
537 AC_PATH_PROGS(WISH, wish wish83 wish8.3 wish80 wish8.0 cygwish83 cygwish80,[none])
538 if test "X$WISH" = "Xnone" ; then
539 AC_MSG_ERROR([Did not find the wish executible. You need to make sure
540 that tcl is installed on your system and that wish is in your path])
543 AC_DEFINE_UNQUOTED(M4,$M4,[m4 executible])
546 AC_DEFINE_UNQUOTED(GNUM4,"$M4",[m4 program used by pcb])
548 AC_PATH_PROG(LATEX, latex, notfound)
549 AM_CONDITIONAL(MISSING_LATEX, test x$LATEX = xnotfound)
551 AC_PATH_PROG(PDFLATEX, pdflatex, notfound)
552 AM_CONDITIONAL(MISSING_PDFLATEX, test x$PDFLATEX = xnotfound)
554 AC_PATH_PROG(DVIPS, dvips, notfound)
555 AM_CONDITIONAL(MISSING_DVIPS, test x$DVIPS = xnotfound)
557 AC_PATH_PROG(TEXI2DVI, texi2dvi, notfound)
558 AM_CONDITIONAL(MISSING_TEXI2DVI, test x$TEXI2DVI = xnotfound)
560 AC_PATH_PROG(PS2PDF, ps2pdf, notfound)
561 AM_CONDITIONAL(MISSING_PS2PDF, test x$PS2PDF = xnotfound)
563 # used to build some of the getting started guide
564 AC_PATH_PROG(GSCHEM, gschem, notfound)
565 AM_CONDITIONAL(MISSING_GSCHEM, test x$GSCHEM = xnotfound)
567 if test "X$docs_yesno" = "Xyes" -a "X$pcb_git_version" = "Xyes" ; then
568 if test "$LATEX" = "notfound" -o "$PDFLATEX" = "notfound" -o "$DVIPS" = "notfound" -o "$TEXI2DVI" = "notfound" -o "$PS2PDF" = "notfound" ; then
569 AC_MSG_ERROR([It appears that you are building from a source tree obtained
570 via git but you do not have the required tools installed to build the documentation. Here
571 is a list of tools and the detected values:
579 Either make sure these tools are installed or disable building and installing the documentation
580 by using the --disable-doc configure option.
585 ############################################################################
587 # These checks are for tools used by the testsuite. It will not be fatal
588 # if these are missing because this is primarily for developer use. It is
589 # possible that we might add some --enable flag in the future that forces
590 # full tools for development work.
592 # Check for ImageMagick tools used by the testsuite
593 AC_PATH_PROG(IM_ANIMATE, animate, notfound)
594 AC_PATH_PROG(IM_COMPARE, compare, notfound)
595 AC_PATH_PROG(IM_COMPOSITE, composite, notfound)
596 AC_PATH_PROG(IM_CONVERT, convert, notfound)
597 AC_PATH_PROG(IM_DISPLAY, display, notfound)
598 AC_PATH_PROG(IM_MONTAGE, montage, notfound)
600 test "${IM_ANIMATE}" != "notfound" || missing_magick="${missing_magick} animate"
601 test "${IM_COMPARE}" != "notfound" || missing_magick="${missing_magick} compare"
602 test "${IM_COMPOSITE}" != "notfound" || missing_magick="${missing_magick} composite"
603 test "${IM_CONVERT}" != "notfound" || missing_magick="${missing_magick} convert"
604 test "${IM_DISPLAY}" != "notfound" || missing_magick="${missing_magick} display"
605 test "${IM_MONTAGE}" != "notfound" || missing_magick="${missing_magick} montage"
607 AC_MSG_CHECKING([if all ImageMagick tools needed for the testsuite were found])
608 if test "X${missing_magick}" != "X" ; then
609 AC_MSG_RESULT([no. The testsuite will be disabled because the following
610 tools from the ImageMagick suite were not found:
612 No loss in pcb functionality should be experienced, you just will not
613 be able to run the full regression testsuite.
623 test $have_magick = yes || have_test_tools=no
625 # the RS274-X export HID is partially checked by looking at the result with
627 AC_PATH_PROG(GERBV, gerbv, notfound)
628 test $GERBV != notfound || have_test_tools=no
631 AM_CONDITIONAL(HAVE_TEST_TOOLS, test x$have_test_tools = xyes)
632 AC_MSG_CHECKING([if all the requried testsuite tools were found])
633 if test x$have_test_tools = xyes ; then
636 AC_MSG_RESULT([no -- the testsuite will be disabled])
641 ############################################################################
644 dnl Checks for libraries.
645 AC_CHECK_LIB(m, sqrt)
646 AC_CHECK_LIB(dl, dlopen)
647 AC_CHECK_LIB(xnet, gethostbyname)
648 AC_CHECK_LIB(fl, yywrap)
649 AC_CHECK_FUNCS(strerror)
650 AC_CHECK_FUNCS(regcomp re_comp)
651 AC_CHECK_FUNCS(logf expf rint)
652 AC_CHECK_FUNCS(vsnprintf)
653 AC_CHECK_FUNCS(getpwuid getcwd)
654 AC_CHECK_FUNCS(random)
657 AC_CHECK_FUNCS(mkdtemp)
659 # normally used for all file i/o
660 AC_CHECK_FUNCS(popen)
663 AC_CHECK_FUNCS(realpath canonicalize_file_name)
664 libiberty_NEED_DECLARATION(canonicalize_file_name)
666 # for pcb_spawnvp in action.c on Windows
667 AC_CHECK_FUNCS(_spawnvp)
670 AC_CHECK_HEADERS(limits.h locale.h string.h sys/types.h regex.h pwd.h)
671 AC_CHECK_HEADERS(sys/socket.h netinet/in.h netdb.h sys/param.h sys/times.h sys/wait.h)
672 AC_CHECK_HEADERS(dlfcn.h)
674 if test "x${WIN32}" = "xyes" ; then
675 AC_CHECK_HEADERS(windows.h)
678 PKG_CHECK_MODULES(GLIB, glib-2.0, ,
679 [AC_MSG_RESULT([Note: cannot find glib-2.0.
680 You may want to review the following errors:
684 for e in $HIDLIST; do
688 CPPFLAGS="$CFLAGS $X_CFLAGS"
689 AC_CHECK_LIB(X11, XOpenDisplay, , , $X_LIBS)
690 AC_CHECK_LIB(ICE, main, , , $X_LIBS)
691 AC_CHECK_LIB(SM, main, , , $X_LIBS)
692 AC_CHECK_LIB(Xext, main, , , $X_LIBS)
693 AC_CHECK_LIB(Xt, XtOpenDisplay, , , $X_LIBS)
694 AC_CHECK_LIB(Xmu, main, , , $X_LIBS)
695 AC_CHECK_LIB(Xpm, main, , , $X_LIBS)
696 AC_CHECK_LIB(Xm, XmCreateMainWindow, , , $X_LIBS)
697 case $ac_cv_lib_Xm_XmCreateMainWindow in
699 AC_MSG_ERROR([You don't seem to have the Lesstif development environment installed.])
703 AC_CHECK_HEADERS(Xm/Xm.h)
704 case $ac_cv_header_Xm_Xm_h in
706 AC_MSG_ERROR([You don't seem to have the Lesstif development environment installed.])
713 # Check for pkg-config
714 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
715 if test "$PKG_CONFIG" = "no"; then
716 AC_MSG_ERROR([Cannot find pkg-config, make sure it is installed and in your PATH])
719 PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.12.0, ,
720 [AC_MSG_ERROR([Cannot find gtk+ >= 2.12.0, install it and rerun ./configure
721 Please review the following errors:
724 GTK_VERSION=`$PKG_CONFIG gtk+-2.0 --modversion`
725 GLIB_VERSION=`$PKG_CONFIG glib-2.0 --modversion`
729 # Check for gdlib-config for gd (www.boutell.com/gd)
730 AC_PATH_PROG(GDLIB_CONFIG, gdlib-config, no)
731 if test "$GDLIB_CONFIG" = "no"; then
732 AC_MSG_RESULT([Cannot find gdlib-config.
733 Make sure it is installed and in your PATH.
734 gdlib-config is part of the GD library available from www.boutell.com/gd.
735 This is needed for the png HID. I will look for libgd anyway and maybe
738 if test "$WIN32" != "yes" ; then
739 AC_CHECK_LIB(gd,main,,
740 AC_MSG_ERROR([[You have requested gcode, nelma, or png HIDs but -lgd could not be found]]))
742 AC_CHECK_LIB(bgd,main,,
743 AC_MSG_ERROR([[You have requested gcode, nelma, or png HIDs but -lbgd could not be found]]))
746 if test "$WIN32" = "yes" ; then
751 AC_MSG_CHECKING([for libgd cflags])
752 GD_CFLAGS="`$GDLIB_CONFIG --cflags`"
753 AC_MSG_RESULT([$GD_CFLAGS])
754 AC_MSG_CHECKING([for libgd libs])
755 GD_LIBS="`$GDLIB_CONFIG --ldflags` `$GDLIB_CONFIG --libs` -l${GD}"
756 AC_MSG_RESULT([$GD_LIBS])
759 # since some linux systems evidently install gdlib-config but fail to
760 # install the headers (nice), check for the header too and fail if it
762 CFLAGS="$CFLAGS $GD_CFLAGS"
763 CPPFLAGS="$CPPFLAGS $GD_CFLAGS"
764 AC_CHECK_HEADERS(gd.h)
765 case $ac_cv_header_gd_h in
768 You evidentally do not have a complete installation of the GD library available from www.boutell.com/gd.
769 This is needed for the nelma and/or png HID.
775 # Some versions of gd (prior to the expiration of the
776 # patent related to gif compression) do not support
777 # gif output. Check for that here.
779 LIBS="$save_LIBS $GD_LIBS $X_LIBS"
781 AC_MSG_CHECKING([if GIF output from the png HID is desired])
783 [ --disable-gif Disable support for gif output when the png HID is used [[default=include gif support]]],
785 if test "X$enable_gif" != "Xno" ; then
797 if test "X$with_gif" = "Xyes" ; then
798 AC_CHECK_FUNCS(gdImageGif)
799 if test "$ac_cv_func_gdImageGif" != "yes"; then
800 AC_MSG_ERROR([Your gd installation does not appear to include gif support.
801 You may need to update your installation of gd or disable
802 gif export with --disable-gif])
806 AC_MSG_CHECKING([if JPEG output from the png HID is desired])
807 AC_ARG_ENABLE([jpeg],
808 [ --disable-jpeg Disable support for JPEG output when the png HID is used [[default=include JPEG support]]],
810 if test "X$enable_jpeg" != "Xno" ; then
822 if test "X$with_jpeg" = "Xyes" ; then
823 AC_CHECK_FUNCS(gdImageJpeg)
824 if test "$ac_cv_func_gdImageJpeg" != "yes"; then
825 AC_MSG_ERROR([Your gd installation does not appear to include JPEG support.
826 You may need to update your installation of gd or disable
827 JPEG export with --disable-jpeg])
832 AC_MSG_CHECKING([if PNG output from the png HID is desired])
834 [ --disable-png Disable support for PNG output when the png HID is used [[default=include PNG support]]],
836 if test "X$enable_png" != "Xno" ; then
848 if test "X$with_png" = "Xyes" ; then
849 AC_CHECK_FUNCS(gdImagePng)
850 if test "$ac_cv_func_gdImagePng" != "yes"; then
851 AC_MSG_ERROR([Your gd installation does not appear to include PNG support.
852 You may need to update your installation of gd or disable
853 PNG export with --disable-png])
863 AM_CONDITIONAL(PNG, test x$with_png = xyes)
864 AM_CONDITIONAL(GIF, test x$with_gif = xyes)
866 # ------------- check if png previews should be built for pcblib-newlib
867 AC_MSG_CHECKING([if the m4lib to newlib export should create png previews])
870 [ --enable-m4lib-png Enable creating png previews for the m4 library],
871 [],[enable_m4lib_png=no])
872 AC_MSG_RESULT([$enable_m4lib_png])
873 AM_CONDITIONAL(PNG_PREVIEW, test x$enable_m4lib_png = xyes)
876 # Run away.... more ugly stuff here. By default we don't actually build
877 # pcblib-newlib from pcblib unless we are building from cvs or git sources.
878 # The reason is it takes a while and requires the png HID. The problem is,
879 # what if someone wants to use --enable-m4lib-png but the tarball was built
880 # without the previews. Or, what if someone does not want the PNG previews
881 # but the person building the tarball included them. Ugh! So what the following
882 # code attempts to do is detect that mismatch situation. Note that we only
883 # want to kick this code in when *not* building from git or cvs sources.
884 build_pcblib_newlib=no
885 if test "$pcb_sources" = "tarball" ; then
886 AC_MSG_CHECKING([If pcblib-newlib was built with png previews])
887 stamp=$srcdir/lib/pcblib-newlib.stamp
888 if test ! -f ${stamp} ; then
889 AC_MSG_RESULT([unknown, missing ${stamp}])
890 build_pcblib_newlib=yes
892 if test "`cat ${stamp}`" = "png-preview=yes" ; then
894 # lib exists and built with preview.
895 # if we don't want the preview, than rebuild
896 if test x$enable_m4lib_png != xyes ; then
897 build_pcblib_newlib=yes
901 # lib exists and built without preview.
902 # if we want the preview, than rebuild
903 if test x$enable_m4lib_png = xyes ; then
904 build_pcblib_newlib=yes
909 build_pcblib_newlib=yes
911 AC_MSG_CHECKING([If pcblib-newlib needs to be rebuilt])
912 AC_MSG_RESULT([$build_pcblib_newlib])
913 AM_CONDITIONAL(BUILD_PCBLIB_NEWLIB, test x$build_pcblib_newlib = xyes)
915 if test "X$cross_compiling" = "Xyes" ; then
916 # we are cross compiling so we will need a build host binary for pcb
917 AC_PATH_PROG(PCB, [pcb], [notfound])
919 PCB="\${top_builddir}/src/pcb"
923 # now make see how essential it was that we have a pcb executable for the build
925 if test "X$pcb_git_version" = "Xyes" ; then
926 if test "X$docs_yesno" = "Xyes" -o "X$enable_m4lib_png" = "Xyes" ; then
927 if test "$PCB" = "notfound" ; then
928 AC_MSG_ERROR([You have selected a build with m4lib png
929 previews enabled and/or with building the documentation enabled but you also
930 appear to be cross-compiling. For this to work, you must have a pcb installed that
931 can run on this machine (the build machine) because it is needed for generating
932 library footprint png previews as well as some of the figures in the documentation.
933 If you wish to skip building the documentation and the footprint previews then add
934 --disable-doc --disable-m4lib-png
935 This will allow your cross build to work.])
940 # ------------- Xrender -------------------
942 AC_CHECK_LIB(Xrender,XRenderQueryExtension,have_xrender=yes,have_xrender=no,$X_LIBS)
944 AC_ARG_ENABLE([xrender],
945 [ --disable-xrender Compile and link with Xrender [default=yes]])
946 case "$have_xrender:$enable_xrender" in
950 X_LIBS="-lXrender $X_LIBS"
951 AC_DEFINE([HAVE_XRENDER], 1,
952 [Define to 1 if Xrender is available])
956 # ------------- dmalloc -------------------
959 AC_MSG_CHECKING([if dmalloc debugging should be enabled])
960 AC_ARG_ENABLE([dmalloc],
961 [ --enable-dmalloc Compile and link with dmalloc for malloc debugging [default=no]],
963 if test "X$enable_dmalloc" != "Xno" ; then
965 AC_CHECK_HEADER(dmalloc.h,,
966 AC_MSG_ERROR([You have requested dmalloc debugging but dmalloc.h could not be found]))
967 AC_CHECK_LIB(dmalloc,main,,
968 AC_MSG_ERROR([You have requested dmalloc debugging but -ldmalloc could not be found]))
969 DMALLOC_LIBS="-ldmalloc"
981 # ------------- ElectricFence -------------------
982 dnl ElectricFence checks
984 AC_MSG_CHECKING([if ElectricFence debugging should be enabled])
985 AC_ARG_ENABLE([efence],
986 [ --enable-efence Link with ElectricFence for malloc debugging [default=no]],
988 if test "X$enable_efence" != "Xno" ; then
990 AC_CHECK_LIB(efence,main,,
991 AC_MSG_ERROR([You have requested ElectricFence debugging but -lefence could not be found]))
1001 # ------------- Enable Debug code -------------------
1002 AC_MSG_CHECKING([for whether to enable debugging code])
1003 AC_ARG_ENABLE([debug],
1004 [ --enable-debug Enable debugging code],
1005 [],[enable_debug=no])
1007 AC_MSG_RESULT([$enable_debug])
1008 AM_CONDITIONAL(DEBUG_BUILD, test x$enable_debug = xyes)
1011 # ------------- Complete set of CFLAGS and LIBS -------------------
1013 CFLAGS="$CFLAGS $X_CFLAGS $DBUS_CFLAGS $GLIB_CFLAGS $GTK_CFLAGS $CAIRO_CFLAGS"
1014 LIBS="$LIBS $XM_LIBS $DBUS_LIBS $X_LIBS $GLIB_LIBS $GTK_LIBS $DMALLOC_LIBS $GD_LIBS $INTLLIBS $CAIRO_LIBS"
1017 # if we have gcc then add -Wall
1018 if test "x$GCC" = "xyes"; then
1019 # see about adding some extra checks if the compiler takes them
1020 for flag in -Wall ; do
1021 case " ${CFLAGS} " in
1023 # flag is already present
1026 AC_MSG_CHECKING([if the compiler accepts ${flag}])
1027 ac_save_CFLAGS="$CFLAGS"
1028 CFLAGS="$CFLAGS ${flag}"
1029 AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
1030 [AC_MSG_RESULT([yes])],
1031 [AC_MSG_RESULT([no])
1032 CFLAGS="$ac_save_CFLAGS"
1042 # Now add C-specific flags
1043 if test "x$GCC" = "xyes"; then
1044 # see about adding some extra checks if the compiler takes them
1045 for flag in -Wdeclaration-after-statement ; do
1046 case " ${CFLAGS} " in
1048 # flag is already present
1051 AC_MSG_CHECKING([if the compiler accepts ${flag}])
1052 ac_save_CFLAGS="$CFLAGS"
1053 CFLAGS="$CFLAGS ${flag}"
1054 AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
1055 [AC_MSG_RESULT([yes])],
1056 [AC_MSG_RESULT([no])
1057 CFLAGS="$ac_save_CFLAGS"
1065 # See if we are building gcc with C++.
1066 AC_ARG_ENABLE(build-with-cxx,
1067 [ --enable-build-with-cxx build with C++ compiler instead of C compiler],
1068 ENABLE_BUILD_WITH_CXX=$enableval,
1069 ENABLE_BUILD_WITH_CXX=no)
1071 case "$ENABLE_BUILD_WITH_CXX" in
1074 CC_OR_CXX_FLAGS="$CXXFLAGS"
1078 CC_OR_CXX_FLAGS="$CFLAGS"
1082 AC_SUBST(CC_OR_CXX_FLAGS)
1085 FONTFILENAME=${FONTFILENAME:-"default_font"}
1086 AC_SUBST(FONTFILENAME)
1087 AC_DEFINE_UNQUOTED(FONTFILENAME,"$FONTFILENAME",[File for default font])
1089 # standard autoconf variables
1090 CPPFLAGS="$CPPFLAGS -DPREFIXDIR=\\\"\${prefix}\\\""
1091 CPPFLAGS="$CPPFLAGS -DBINDIR=\\\"\${bindir}\\\""
1092 CPPFLAGS="$CPPFLAGS -DHOST=\\\"\${host}\\\""
1094 # directory for old-style library and for fonts
1095 PCBLIBDIR=${datadir}/pcb
1097 #AC_DEFINE_UNQUOTED(PCBLIBDIR,"$PCBLIBDIR",[Library directory])
1098 CPPFLAGS="$CPPFLAGS -DPCBLIBDIR=\\\"$PCBLIBDIR\\\""
1100 # name for old-style library
1101 LIBRARYFILENAME=pcblib
1102 AC_SUBST(LIBRARYFILENAME)
1103 AC_DEFINE_UNQUOTED(LIBRARYFILENAME,"$LIBRARYFILENAME",[library file name])
1106 # directory for new library
1107 PCBTREEDIR=${datadir}/pcb/newlib
1108 PCBTREEPATH=${PCBTREEDIR}:${PCBLIBDIR}/pcblib-newlib
1109 PCBTREEDIR=${PCBTREEDIR:-"$PCBTREEDIR"}
1110 AC_SUBST(PCBTREEDIR)
1111 AC_SUBST(PCBTREEPATH)
1112 #AC_DEFINE_UNQUOTED(PCBTREEDIR,"$PCBLIB",[top directory for new style pcb library])
1113 CPPFLAGS="$CPPFLAGS -DPCBTREEDIR=\\\"$PCBTREEDIR\\\""
1114 CPPFLAGS="$CPPFLAGS -DPCBTREEPATH=\\\"$PCBTREEPATH\\\""
1116 # Figure out relative paths
1117 AC_MSG_CHECKING([for the bindir to pcblibdir relative path])
1118 adl_COMPUTE_RELATIVE_PATHS([bindir:PCBLIBDIR:bindir_to_pcblibdir])
1119 adl_NORMALIZE_PATH([bindir_to_pcblibdir], [$PCB_DIR_SEPARATOR_S])
1120 AC_MSG_RESULT([$bindir_to_pcblibdir])
1121 AC_DEFINE_UNQUOTED(BINDIR_TO_PCBLIBDIR, "$bindir_to_pcblibdir", [Relative path from bindir to pcblibdir])
1123 AC_MSG_CHECKING([for the bindir to pcbtreedir relative path])
1124 adl_COMPUTE_RELATIVE_PATHS([bindir:PCBTREEDIR:bindir_to_pcbtreedir])
1125 adl_NORMALIZE_PATH([bindir_to_pcbtreedir], [$PCB_DIR_SEPARATOR_S])
1126 AC_MSG_RESULT([$bindir_to_pcbtreedir])
1127 AC_DEFINE_UNQUOTED(BINDIR_TO_PCBTREEDIR, "$bindir_to_pcbtreedir", [Relative path from bindir to pcbtreedir])
1130 AC_MSG_CHECKING([for the bindir to exec_prefix relative path])
1131 adl_COMPUTE_RELATIVE_PATHS([bindir:exec_prefix:bindir_to_execprefix])
1132 adl_NORMALIZE_PATH([bindir_to_execprefix], [$PCB_DIR_SEPARATOR_S])
1133 AC_MSG_RESULT([$bindir_to_execprefix])
1134 AC_DEFINE_UNQUOTED(BINDIR_TO_EXECPREFIX, "$bindir_to_execprefix", [Relative path from bindir to exec_prefix])
1137 BTNMOD=${BTNMOD:-"Mod1"}
1141 for dir in src lib newlib doc example tools tutorial README_FILES
1143 test -d $dir/. && TOPDIRS="$TOPDIRS $dir"
1147 AC_CONFIG_FILES(Makefile data/Makefile intl/Makefile po/Makefile.in)
1149 if test -d $srcdir/README_FILES; then
1150 AC_CONFIG_FILES(README_FILES/Makefile)
1152 if test -d $srcdir/doc; then
1153 AC_CONFIG_FILES(doc/Makefile)
1155 if test -d $srcdir/doc/gs; then
1156 AC_CONFIG_FILES(doc/gs/Makefile)
1157 AC_CONFIG_FILES(doc/gs/gafrc)
1158 AC_CONFIG_FILES(doc/gs/gschemrc)
1160 if test -d $srcdir/example; then
1161 AC_CONFIG_FILES(example/Makefile)
1162 AC_CONFIG_FILES(example/libraries/Makefile)
1164 if test -d $srcdir/lib; then
1165 AC_CONFIG_FILES(lib/CreateLibraryContents.sh)
1166 AC_CONFIG_FILES(lib/CreateLibrary.sh)
1167 AC_CONFIG_FILES(lib/ListLibraryContents.sh)
1168 AC_CONFIG_FILES(lib/Makefile)
1169 AC_CONFIG_FILES(lib/QueryLibrary.sh)
1170 AC_CONFIG_FILES(lib/qfp-ui)
1172 if test -d $srcdir/newlib; then
1173 AC_CONFIG_FILES(newlib/2_pin_thru-hole_packages/Makefile)
1174 AC_CONFIG_FILES(newlib/Makefile)
1175 AC_CONFIG_FILES(newlib/connectors/Makefile)
1176 AC_CONFIG_FILES(newlib/crystal/Makefile)
1177 AC_CONFIG_FILES(newlib/electro-optics/Makefile)
1178 AC_CONFIG_FILES(newlib/headers/Makefile)
1179 AC_CONFIG_FILES(newlib/keystone/Makefile)
1180 AC_CONFIG_FILES(newlib/msp430/Makefile)
1181 AC_CONFIG_FILES(newlib/not_vetted_ingo/Makefile)
1182 AC_CONFIG_FILES(newlib/sockets/Makefile)
1183 AC_CONFIG_FILES(newlib/tests/Makefile)
1185 AC_CONFIG_FILES(src/Makefile)
1186 AC_CONFIG_FILES(src/icons/Makefile)
1187 if test -d $srcdir/tools; then
1188 AC_CONFIG_FILES(tools/Makefile)
1190 if test -d $srcdir/tutorial; then
1191 AC_CONFIG_FILES(tutorial/Makefile)
1195 AC_CONFIG_FILES(tests/inputs/Makefile)
1196 AC_CONFIG_FILES(tests/golden/Makefile)
1197 AC_CONFIG_FILES(tests/golden/hid_bom1/Makefile)
1198 AC_CONFIG_FILES(tests/golden/hid_bom2/Makefile)
1199 AC_CONFIG_FILES(tests/golden/hid_bom3/Makefile)
1200 AC_CONFIG_FILES(tests/golden/hid_bom4/Makefile)
1201 AC_CONFIG_FILES(tests/golden/hid_gcode1/Makefile)
1202 AC_CONFIG_FILES(tests/golden/hid_gcode2/Makefile)
1203 AC_CONFIG_FILES(tests/golden/hid_gcode3/Makefile)
1204 AC_CONFIG_FILES(tests/golden/hid_gcode4/Makefile)
1205 AC_CONFIG_FILES(tests/golden/hid_gcode5/Makefile)
1206 AC_CONFIG_FILES(tests/golden/hid_gcode6/Makefile)
1207 AC_CONFIG_FILES(tests/golden/hid_gcode7/Makefile)
1208 AC_CONFIG_FILES(tests/golden/hid_gcode8/Makefile)
1209 AC_CONFIG_FILES(tests/golden/hid_gcode9/Makefile)
1210 AC_CONFIG_FILES(tests/golden/hid_gcode10/Makefile)
1211 AC_CONFIG_FILES(tests/golden/hid_gcode11/Makefile)
1212 AC_CONFIG_FILES(tests/golden/hid_gerber1/Makefile)
1213 AC_CONFIG_FILES(tests/golden/hid_gerber2/Makefile)
1214 AC_CONFIG_FILES(tests/golden/hid_png1/Makefile)
1215 AC_CONFIG_FILES(tests/golden/hid_png2/Makefile)
1216 AC_CONFIG_FILES(tests/golden/hid_png3/Makefile)
1217 AC_CONFIG_FILES(tests/Makefile)
1219 dnl win32 build scripts
1220 AC_CONFIG_FILES(win32/Makefile)
1222 dnl GTS 0.7.6 - http://gts.sourceforge.net/
1223 AC_CONFIG_FILES(gts/Makefile)
1227 with_gui=`echo $with_gui`
1228 with_printer=`echo $with_printer`
1229 with_exporters=`echo $with_exporters | sed 's/,/ /g'`
1231 expandedXDGDATADIR=`eval "echo $XDGDATADIR"`
1232 expandedKDEDATADIR=`eval "echo $KDEDATADIR"`
1235 ** Configuration summary for $PACKAGE $VERSION:
1238 Printer: $with_printer
1239 Exporters: $with_exporters
1240 Source tree distribution: $pcb_sources
1241 Build documentation: $docs_yesno
1242 Build toporouter: $enable_toporouter
1243 Enable toporouter output: $enable_toporouter_output
1244 xdg data directory: $expandedXDGDATADIR
1245 KDE data directory: $expandedKDEDATADIR
1246 dmalloc debugging: $with_dmalloc
1247 ElectricFence debugging: $with_efence
1249 Cross Compiling: $cross_compiling