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 AC_CONFIG_HEADERS([config.h])
10 m4_include(configure.ac.system) dnl checks for system functions, headers, libs
12 ##########################################################################
14 # Try to figure out if we are building from git sources.
15 # If we are then unless building of the documentation has
16 # been disabled then just require the user have all the right
17 # tools. Users building from a tarball won't need latex, makeinfo,
18 # etc. but if you're already downloading development sources, then
19 # it is not unreasonable to require development tools. What motivated
20 # this is that using maintainer mode proved to cause regular confusion.
23 AC_MSG_CHECKING([if you are building from a git checkout])
25 if test -f $srcdir/.gitignore ; then
32 AM_CONDITIONAL(GIT_VERSION, test x$pcb_git_version = xyes)
34 AC_MSG_CHECKING([if you are building from a anoncvs checkout])
36 if test -f $srcdir/CVS/Root ; then
43 AM_CONDITIONAL(CVS_VERSION, test x$pcb_cvs_version = xyes)
44 AM_CONDITIONAL(GIT_OR_CVS_VERSION, test x$pcb_git_version = xyes -o x$pcb_cvs_version = xyes)
47 ##########################################################################
49 # See if we are supposed to build the docs
53 AC_MSG_CHECKING([if the documentation should be built])
55 [ --enable-doc Build and install the documentation [[default=yes]]],
57 if test "X$enable_doc" = "Xno" ; then
75 AC_MSG_CHECKING([if maintainer mode is required])
76 if test "$docs_yesno" = "yes" -a "$pcb_git_version" = "yes" ; then
77 AC_MSG_RESULT([yes -- the documentation build is enabled and your sources are from git])
78 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='/'
93 CFLAGS="$CFLAGS ${MINGW_CFLAGS:--mms-bitfields -mwindows}"
94 CPPFLAGS="$CPPFLAGS ${MINGW_CPPFLAGS}"
102 AC_MSG_RESULT($WIN32)
104 AM_CONDITIONAL(WIN32, test x$WIN32 = xyes)
105 if test "x$WIN32" = "xyes" ; then
106 PCB_PATH_DELIMETER=";"
107 PCB_DIR_SEPARATOR_S="\\\\"
108 PCB_DIR_SEPARATOR_C='\\'
111 AC_DEFINE_UNQUOTED(PCB_DIR_SEPARATOR_C,'$PCB_DIR_SEPARATOR_C',[Directory separator char])
112 AC_DEFINE_UNQUOTED(PCB_DIR_SEPARATOR_S,"$PCB_DIR_SEPARATOR_S",[Directory separator string])
113 AC_DEFINE_UNQUOTED(PCB_PATH_DELIMETER,"$PCB_PATH_DELIMETER",[Search path separator string])
116 dnl Checks for programs.
120 if test "x$WIN32" = "xyes" ; then
121 AC_CHECK_TOOL(WINDRES, windres, [no])
122 if test "$WINDRES" = "no" ; then
123 AC_MSG_ERROR([*** Could not find an implementation of windres in your PATH.])
128 GETTEXT_PACKAGE=$PACKAGE
129 AH_TEMPLATE([GETTEXT_PACKAGE], [Name of this program's gettext domain])
130 AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], ["$GETTEXT_PACKAGE"])
131 AC_SUBST(GETTEXT_PACKAGE)
133 AM_GNU_GETTEXT_VERSION([0.14])
135 IT_PROG_INTLTOOL([0.35.0])
145 AC_PATH_PROG(LEX_PATH, $LEX, [notfound])
146 if test "$LEX_PATH" = "notfound" ; then
147 AC_MSG_ERROR([Couldn't find a usable lex program.
148 Please install flex which is available from
149 ftp://ftp.gnu.org/pub/non-gnu/flex/
155 AC_PATH_PROG(YACC_PATH, $YACC, [notfound])
156 if test "$YACC_PATH" = "notfound" ; then
157 AC_MSG_ERROR([Couldn't find a usable yacc program.
158 Please install bison which is available from
159 ftp://ftp.gnu.org/pub/gnu/bison/
167 # Used for building the icons
169 AC_PATH_PROG(XPMTOPPM, xpmtoppm, notfound)
170 AC_PATH_PROG(PPMTOWINICON, ppmtowinicon, notfound)
171 AC_PATH_PROG(CONVERT, convert, notfound)
173 ##########################################################################
176 if test "X$docs_yesno" = "Xyes" -a "X$pcb_git_version" = "Xyes" ; then
177 AC_PATH_PROG(MKINFO, makeinfo, no)
178 if test "X$MKINFO" != "Xno"; then
179 AC_MSG_CHECKING([for GNU makeinfo version >= 4.6])
180 v=`$MKINFO --version | grep "GNU texinfo"`
181 if test $? -ne 0; then
182 AC_MSG_RESULT([non-GNU])
186 if test "X$MKINFO" != "Xno"; then
187 vmajor=`echo "$v" | sed 's/.* \([[0-9]]*\)\.\([[0-9]]*\)$/\1/'`
188 vminor=`echo "$v" | sed 's/.* \([[0-9]]*\)\.\([[0-9]]*\)$/\2/'`
189 AC_MSG_RESULT([$vmajor.$vminor])
190 if test "$vmajor" -lt 4 \
191 || (test "$vmajor" -eq 4 && test "$vminor" -lt 6); then
195 if test "X$MKINFO" = "Xno"; then
196 AC_MSG_ERROR([You have requested a build
197 of the documentation. For this to work, you must have version 4.6 or newer of
198 the GNU texinfo package. You seem to have
202 Please update to a newer version of texinfo or disable building of
203 the documentation with --disable-doc
207 AC_PATH_PROG(TEXI2DVI, texi2dvi, no)
208 if test "X$TEXI2DVI" = "Xno"; then
209 AC_MSG_ERROR([You have requested a build
210 of the documentation. For this to work, you must have the texi2dvi program
211 installed. Alternatively, you can disable building the documentation with
216 AC_PATH_PROG(PERL, perl, notfound)
217 if test "X$PERL" = "Xnotfound"; then
218 AC_MSG_ERROR([You have requested a build
219 of the documentation. For this to work, you must have perl installed.
220 Alternatively, you can disable building the documentation with
226 AC_PATH_PROG([KPSEWHICH], [kpsewhich], [no])
227 if test "X$KPSEWHICH" = "Xno"; then
228 AC_MSG_ERROR([You have requested a build
229 of the documentation. For this to work, you must have a functional install of
230 TeX and LaTeX. kpsewhich is part of TeX.
231 Alternatively, you can disable building the documentation with
235 AC_MSG_CHECKING([If your TeX installation contains epsf.tex])
236 f=`$KPSEWHICH epsf.tex`
237 if test $? -eq 0 ; then
238 AC_MSG_RESULT([yes ($f)])
241 AC_MSG_ERROR([You have requested a build
242 of the documentation. For this to work, you must have a functional install of
243 TeX and LaTeX that includes epsf.tex. On some linux distributions this is
244 part of the texlive-generic-recommended package.
245 Alternatively, you can disable building the documentation with
251 ##########################################################################
255 # FIXME: for now, only try to add -rdynamic if we're using gcc. We really
256 # need to figure out what the correct test is here. In the mean time, this
257 # should let things build with SunPRO again.
258 if test "x$GCC" = "xyes"; then
259 AC_MSG_CHECKING([If the compiler accepts -rdynamic])
260 old_LDFLAGS="$LDFLAGS"
261 LDFLAGS="$LDFLAGS -rdynamic"
262 AC_LINK_IFELSE([AC_LANG_PROGRAM()],
263 [AC_MSG_RESULT([yes])],
264 [LDFLAGS="$old_LDFLAGS"
269 # ------------- HID config -------------------
276 for hid in `cd $srcdir/src/hid; echo *`; do
277 F=$srcdir/src/hid/$hid/hid.conf
283 gui ) hid_guis="$hid_guis $hid" ;;
284 printer ) hid_printers="$hid_printers $hid" ;;
285 export ) hid_exporters="$hid_exporters $hid" ;;
286 always ) hid_always="$hid_always $hid" ;;
291 AC_MSG_CHECKING([for which gui to use])
293 [ --with-gui= Specify the GUI to use: batch gtk lesstif [[default=gtk]]],
297 AC_MSG_RESULT([$with_gui])
298 case " $hid_guis no none " in
299 *\ $with_gui\ * ) HIDLIST="$with_gui" ;;
300 * ) AC_MSG_ERROR([$with_gui is not a valid gui]) ;;
303 if test x"$with_gui" = x"none" -o x"$with_gui" = x"no"
308 AC_MSG_CHECKING([whether to enable toporouter])
309 AC_ARG_ENABLE([toporouter],
310 [AS_HELP_STRING([--enable-toporouter], [build toporouter [default=yes]]) ]
312 AS_CASE(["x$enable_toporouter"],[xyes | xno],,
313 [enable_toporouter=yes
316 AC_MSG_RESULT([$enable_toporouter])
317 AM_CONDITIONAL([WITH_TOPOROUTER], test $enable_toporouter != no)
319 AC_MSG_CHECKING([whether to enable toporouter output])
320 AC_ARG_ENABLE([toporouter-output],
321 [AS_HELP_STRING([--enable-toporouter-output], [enable toporouter graphical output [default=no]]) ]
323 AS_CASE(["z$enable_toporouter_output"],[zyes | zno],,
324 [enable_toporouter_output=no]
326 AC_MSG_RESULT([$enable_toporouter_output])
327 AS_CASE([$enable_toporouter_output],[yes],
329 topo_output_enabled=1
332 topo_output_enabled=0
335 AC_DEFINE_UNQUOTED([TOPO_OUTPUT_ENABLED], [$topo_output_enabled],
336 [Define to 1 to enable toporouter graphical output]
339 PKG_PROG_PKG_CONFIG()
341 if test "x$enable_toporouter_output" = "xyes"; then
342 PKG_CHECK_MODULES(CAIRO, cairo,,
343 [AC_MSG_ERROR([Cannot find cairo, needed by the toporouter
344 Please review the following errors:
349 AC_MSG_CHECKING([for whether to use DBUS])
350 AC_ARG_ENABLE([dbus],
351 [ --enable-dbus Enable DBUS IPC],
353 case " $with_gui " in
354 *\ gtk\ *) enable_dbus=yes ;;
355 *\ lesstif\ *) enable_dbus=yes ;;
356 * ) enable_dbus=no ;;
360 AC_MSG_RESULT([$enable_dbus])
361 AM_CONDITIONAL(WITH_DBUS, test x$enable_dbus = xyes)
363 if test "x$enable_dbus" = "xyes"; then
364 case " $with_gui " in
367 * ) AC_MSG_ERROR([DBUS enabled but only works with a mainloop capable GUI HID.
368 Either do not use --enable-dbus or enable the gtk or lesstif GUI HID.])
371 PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.61,
373 LIBS="$LIBS $DBUS_LIBS"
374 AC_CHECK_FUNCS(dbus_watch_get_unix_fd)
375 LIBS="$saved_LIBS" ],
376 [AC_MSG_ERROR([Cannot find dbus-1 >= 0.61, install it and rerun ./configure
377 Please review the following errors:
380 DBUS_VERSION=`$PKG_CONFIG dbus-1 --modversion`
382 AC_DEFINE([HAVE_DBUS], 1,
383 [Define to 1 if DBUS IPC is to be compiled in])
388 AC_MSG_CHECKING([for whether to use GL drawing])
390 [ --enable-gl Enable GL drawing (with GTK HID)],
392 case " $with_gui " in
393 *\ gtk\ *) enable_gl=yes;;
397 AC_MSG_RESULT([$enable_gl])
398 AM_CONDITIONAL(USE_GL, test x$enable_gl = xyes)
400 if test "x$enable_gl" = "xyes"; then
401 case " $with_gui " in
403 * ) AC_MSG_ERROR([GL drawing enabled but only works with the GTK HID.
404 Either do not use --enable-gl or enable the gtk HID.])
409 AS_IF([test X$no_gl = Xyes],
410 [AC_MSG_FAILURE([OpenGL is required.])])
413 AS_IF([test X$no_glu = Xyes],
414 [AC_MSG_FAILURE([The OpenGL GLU library is required.])])
416 AC_DEFINE([ENABLE_GL], 1,
417 [Define to 1 if GL support is to be compiled in])
420 AC_MSG_CHECKING([for which printer to use])
421 AC_ARG_WITH([printer],
422 [ --with-printer= Specify the printer: lpr [[default=lpr]]],
423 [],[with_printer=lpr])
424 AC_MSG_RESULT([$with_printer])
425 case " $hid_printers " in
426 *\ $with_printer\ * )
427 HIDLIST="$HIDLIST $with_printer"
429 * ) AC_MSG_ERROR([$with_printer is not a valid printer]) ;;
432 AC_MSG_CHECKING([for which exporters to use])
433 AC_ARG_WITH([exporters],
434 [ --with-exporters= Enable export devices: bom gerber gcode nelma png ps [[default=bom gerber gcode nelma png ps]]],
435 [],[with_exporters=$hid_exporters])
436 AC_MSG_RESULT([$with_exporters])
437 for e in `echo $with_exporters | sed 's/,/ /g'`; do
438 case " $hid_exporters " in
440 HIDLIST="$HIDLIST $e"
442 * ) AC_MSG_ERROR([$e is not a valid exporter]) ;;
446 if test "X$enable_jpeg" = "Xno" -a "X$enable_gif" = "Xno" -a "X$enable_png" = "Xno" ; then
447 case " ${HIDLIST} " in
449 AC_MSG_ERROR([you have requested the png HID but turned off all output
450 formats! If you do not want gif/jpeg/png output, use --with-exporters to list
451 which exporters you want and do not list png there.])
459 for hid in $HIDLIST; do
460 F=$srcdir/src/hid/$hid/hid.conf
462 echo checking $hid dependencies
466 if test "X`echo $HIDLIST | grep $dep`" = "X"; then
467 AC_MSG_ERROR([you have requested the $hid HID but not the $dep HID, which it depends on])
473 for e in $HIDLIST; do
474 HIDLIBS="$HIDLIBS lib$e.a"
480 # ------------- end HID config -------------------
482 ######################################################################
484 # desktop integration
487 AC_PATH_PROG(SETENV, env, [])
488 AC_PATH_PROG(GTK_UPDATE_ICON_CACHE_BIN, gtk-update-icon-path, [true])
490 # Change default location for XDG files (MIME and Icons)
491 AC_ARG_WITH(xdgdatadir, [ --with-xdgdatadir=path Change where the theme icons
492 and mime registrations are installed [[DATADIR]]], [opt_xdgdatadir=$withval])
494 # Change default location for KDE data files (KDE MIME registrations)
495 AC_ARG_WITH(kdedatadir, [ --with-kdedatadir=path Change where the KDE mime reg
496 istrations are installed [[DATADIR]]], [opt_kdedatadir=$withval])
498 if test x$opt_xdgdatadir = x; then
499 # path was not specified with --with-xdgdatadir
500 XDGDATADIR='${datadir}'
502 # path WAS specified with --with-xdgdatadir
503 XDGDATADIR="$opt_xdgdatadir"
507 if test x$opt_kdedatadir = x; then
508 # path was not specified with --with-kdedatadir
509 KDEDATADIR='${datadir}'
511 # path WAS specified with --with-kdedatadir
512 KDEDATADIR="$opt_kdedatadir"
516 AC_ARG_ENABLE(update-desktop-database,
517 AC_HELP_STRING([--disable-update-desktop-database],
518 [do not update desktop database after installation]),,
519 enable_update_desktop_database=yes)
521 AM_CONDITIONAL(ENABLE_UPDATE_DESKTOP_DATABASE, test x$enable_update_desktop_database = xyes)
523 if test x$enable_update_desktop_database = xyes ; then
524 AC_PATH_PROG(UPDATE_DESKTOP_DATABASE, [update-desktop-database], no)
525 if test $UPDATE_DESKTOP_DATABASE = no; then
526 AC_MSG_ERROR([Cannot find update-desktop-database, make sure it is installed and in your PATH, or configure with --disable-update-desktop-database])
530 AC_ARG_ENABLE(update-mime-database,
531 AC_HELP_STRING([--disable-update-mime-database],
532 [do not update mime database after installation]),,
533 enable_update_mime_database=yes)
535 AM_CONDITIONAL(ENABLE_UPDATE_MIME_DATABASE, test x$enable_update_mime_database = xyes)
537 if test x$enable_update_mime_database = xyes ; then
538 AC_PATH_PROG(UPDATE_MIME_DATABASE, [update-mime-database], no)
539 if test $UPDATE_MIME_DATABASE = no; then
540 AC_MSG_ERROR([Cannot find update-mime-database, make sure it is installed and in your PATH, or configure with --disable-update-mime-database])
545 ######################################################################
547 AC_PATH_PROGS(M4, gm4 m4, [none])
548 if test "X$M4" = "Xnone" ; then
549 AC_MSG_ERROR([Did not find a m4 executible. You need to make sure
550 that m4 is installed on your system and that m4 is in your path])
552 AC_MSG_CHECKING([if $M4 has the division involving negative numbers bug])
553 pcb_m4_r=`echo "eval(-2/2)" | $M4`
554 if test "$pcb_m4_r" != "-1" ; then
556 AC_MSG_ERROR([It appears that $M4 has a bug involving division
557 with negative numbers. In particular it just returned the result that
558 -2/2 = $pcb_m4_r instead of -1. This is a known bug in GNU m4-1.4.9. Please
559 install a non-broken m4.])
565 AC_PATH_PROGS(WISH, wish wish85 wish8.5 wish83 wish8.3 wish80 wish8.0 cygwish83 cygwish80,[none])
566 if test "X$WISH" = "Xnone" ; then
567 AC_MSG_ERROR([Did not find the wish executible. You need to make sure
568 that tcl is installed on your system and that wish is in your path])
571 AC_DEFINE_UNQUOTED(M4,$M4,[m4 executible])
574 AC_DEFINE_UNQUOTED(GNUM4,"$M4",[m4 program used by pcb])
576 AC_PATH_PROG(PDFLATEX, pdflatex, notfound)
577 AM_CONDITIONAL(MISSING_PDFLATEX, test x$PDFLATEX = xnotfound)
579 AC_PATH_PROG(TEXI2DVI, texi2dvi, notfound)
580 AM_CONDITIONAL(MISSING_TEXI2DVI, test x$TEXI2DVI = xnotfound)
582 AC_PATH_PROG(PS2PDF, ps2pdf, notfound)
583 AM_CONDITIONAL(MISSING_PS2PDF, test x$PS2PDF = xnotfound)
585 # used to build some of the getting started guide
586 AC_PATH_PROG(GSCHEM, gschem, notfound)
587 AM_CONDITIONAL(MISSING_GSCHEM, test x$GSCHEM = xnotfound)
589 if test "X$docs_yesno" = "Xyes" -a "X$pcb_git_version" = "Xyes" ; then
590 if test "$PDFLATEX" = "notfound" -o "$TEXI2DVI" = "notfound" -o "$PS2PDF" = "notfound" ; then
591 AC_MSG_ERROR([It appears that you are building from a source tree obtained
592 via git but you do not have the required tools installed to build the documentation. Here
593 is a list of tools and the detected values:
599 Either make sure these tools are installed or disable building and installing the documentation
600 by using the --disable-doc configure option.
605 ############################################################################
607 # These checks are for tools used by the testsuite. It will not be fatal
608 # if these are missing because this is primarily for developer use. It is
609 # possible that we might add some --enable flag in the future that forces
610 # full tools for development work.
612 # Check for ImageMagick tools used by the testsuite
613 AC_PATH_PROG(IM_ANIMATE, animate, notfound)
614 AC_PATH_PROG(IM_COMPARE, compare, notfound)
615 AC_PATH_PROG(IM_COMPOSITE, composite, notfound)
616 AC_PATH_PROG(IM_CONVERT, convert, notfound)
617 AC_PATH_PROG(IM_DISPLAY, display, notfound)
618 AC_PATH_PROG(IM_MONTAGE, montage, notfound)
620 test "${IM_ANIMATE}" != "notfound" || missing_magick="${missing_magick} animate"
621 test "${IM_COMPARE}" != "notfound" || missing_magick="${missing_magick} compare"
622 test "${IM_COMPOSITE}" != "notfound" || missing_magick="${missing_magick} composite"
623 test "${IM_CONVERT}" != "notfound" || missing_magick="${missing_magick} convert"
624 test "${IM_DISPLAY}" != "notfound" || missing_magick="${missing_magick} display"
625 test "${IM_MONTAGE}" != "notfound" || missing_magick="${missing_magick} montage"
627 AC_MSG_CHECKING([if all ImageMagick tools needed for the testsuite were found])
628 if test "X${missing_magick}" != "X" ; then
629 AC_MSG_RESULT([no. The testsuite will be disabled because the following
630 tools from the ImageMagick suite were not found:
632 No loss in pcb functionality should be experienced, you just will not
633 be able to run the full regression testsuite.
643 test $have_magick = yes || have_test_tools=no
645 # the RS274-X export HID is partially checked by looking at the result with
647 AC_PATH_PROG(GERBV, gerbv, notfound)
648 test $GERBV != notfound || have_test_tools=no
651 AM_CONDITIONAL(HAVE_TEST_TOOLS, test x$have_test_tools = xyes)
652 AC_MSG_CHECKING([if all the requried testsuite tools were found])
653 if test x$have_test_tools = xyes ; then
656 AC_MSG_RESULT([no -- the testsuite will be disabled])
661 ############################################################################
664 dnl Checks for libraries.
665 AC_CHECK_LIB(m, sqrt)
666 AC_CHECK_LIB(dl, dlopen)
667 AC_CHECK_LIB(xnet, gethostbyname)
668 AC_CHECK_LIB(fl, yywrap)
669 AC_CHECK_FUNCS(strerror)
670 AC_CHECK_FUNCS(regcomp re_comp)
671 AC_CHECK_FUNCS(logf expf rint)
672 AC_CHECK_FUNCS(vsnprintf)
673 AC_CHECK_FUNCS(getpwuid getcwd)
674 AC_CHECK_FUNCS(rand random)
677 AC_CHECK_FUNCS(mkdtemp)
679 # normally used for all file i/o
680 AC_CHECK_FUNCS(popen)
683 AC_CHECK_FUNCS(realpath canonicalize_file_name)
684 libiberty_NEED_DECLARATION(canonicalize_file_name)
686 # for pcb_spawnvp in action.c on Windows
687 AC_CHECK_FUNCS(_spawnvp)
690 AC_CHECK_HEADERS(limits.h locale.h string.h sys/types.h regex.h pwd.h)
691 AC_CHECK_HEADERS(sys/socket.h netinet/in.h netdb.h sys/param.h sys/times.h sys/wait.h)
692 AC_CHECK_HEADERS(dlfcn.h)
694 if test "x${WIN32}" = "xyes" ; then
695 AC_CHECK_HEADERS(windows.h)
698 PKG_CHECK_MODULES(GLIB, glib-2.0, ,
699 [AC_MSG_RESULT([Note: cannot find glib-2.0.
700 You may want to review the following errors:
709 for e in $HIDLIST; do
713 save_CPPFLAGS="$CPPFLAGS"
715 AC_CHECK_LIB(X11, XOpenDisplay, , , $X_LIBS)
716 AC_CHECK_LIB(ICE, main, , , $X_LIBS)
717 AC_CHECK_LIB(SM, main, , , $X_LIBS)
718 AC_CHECK_LIB(Xext, main, , , $X_LIBS)
719 AC_CHECK_LIB(Xt, XtOpenDisplay, , , $X_LIBS)
720 AC_CHECK_LIB(Xmu, main, , , $X_LIBS)
721 AC_CHECK_LIB(Xpm, main, , , $X_LIBS)
722 AC_CHECK_LIB(Xm, XmCreateMainWindow, , , $X_LIBS)
723 CPPFLAGS="$save_CPPFLAGS"
724 case $ac_cv_lib_Xm_XmCreateMainWindow in
726 AC_MSG_ERROR([You don't seem to have the Lesstif development environment installed.])
730 AC_CHECK_HEADERS(Xm/Xm.h)
731 case $ac_cv_header_Xm_Xm_h in
733 AC_MSG_ERROR([You don't seem to have the Lesstif development environment installed.])
740 # Check for pkg-config
741 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
742 if test "$PKG_CONFIG" = "no"; then
743 AC_MSG_ERROR([Cannot find pkg-config, make sure it is installed and in your PATH])
746 PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.18.0, ,
747 [AC_MSG_ERROR([Cannot find gtk+ >= 2.18.0, install it and rerun ./configure
748 Please review the following errors:
751 GTK_VERSION=`$PKG_CONFIG gtk+-2.0 --modversion`
752 GLIB_VERSION=`$PKG_CONFIG glib-2.0 --modversion`
754 if test "x$enable_gl" = "xyes"; then
756 PKG_CHECK_MODULES(GTKGLEXT, gtkglext-1.0 >= 1.0.0, , [AC_MSG_ERROR([
757 *** Required version of gtkglext is not installed - please install first ***
758 Please review the following errors:
759 $GTKGLEXT_PKG_ERRORS])]
761 GTKGLEXT_VER=`$PKG_CONFIG gtkglext-1.0 --modversion`
768 AC_MSG_CHECKING([if GIF output from the png HID is desired])
770 [ --disable-gif Disable support for gif output when the png HID is used [[default=include gif support]]],
772 if test "X$enable_gif" != "Xno" ; then
784 AC_MSG_CHECKING([if JPEG output from the png HID is desired])
785 AC_ARG_ENABLE([jpeg],
786 [ --disable-jpeg Disable support for JPEG output when the png HID is used [[default=include JPEG support]]],
788 if test "X$enable_jpeg" != "Xno" ; then
800 AC_MSG_CHECKING([if PNG output from the png HID is desired])
802 [ --disable-png Disable support for PNG output when the png HID is used [[default=include PNG support]]],
804 if test "X$enable_png" != "Xno" ; then
825 if test "$need_gdlib" = "yes"; then
826 # Check for gdlib-config for gd (www.boutell.com/gd)
827 AC_PATH_PROG(GDLIB_CONFIG, gdlib-config, no)
828 if test "$GDLIB_CONFIG" = "no"; then
829 AC_MSG_RESULT([Cannot find gdlib-config.
830 Make sure it is installed and in your PATH.
831 gdlib-config is part of the GD library available from www.boutell.com/gd.
832 This is needed for the png HID. I will look for libgd anyway and maybe
835 if test "$WIN32" != "yes" ; then
836 AC_CHECK_LIB(gd,main,,
837 AC_MSG_ERROR([[You have requested gcode, nelma, or png HIDs but -lgd could not be found]]))
839 AC_CHECK_LIB(bgd,main,,
840 AC_MSG_ERROR([[You have requested gcode, nelma, or png HIDs but -lbgd could not be found]]))
843 if test "$WIN32" = "yes" ; then
848 AC_MSG_CHECKING([for libgd cflags])
849 GD_CFLAGS="`$GDLIB_CONFIG --cflags`"
850 AC_MSG_RESULT([$GD_CFLAGS])
851 AC_MSG_CHECKING([for libgd libs])
852 GD_LIBS="`$GDLIB_CONFIG --ldflags` `$GDLIB_CONFIG --libs` -l${GD}"
853 AC_MSG_RESULT([$GD_LIBS])
856 # since some linux systems evidently install gdlib-config but fail to
857 # install the headers (nice), check for the header too and fail if it
859 save_CPPFLAGS="$CPPFLAGS"
860 CPPFLAGS="$CPPFLAGS $GD_CFLAGS"
861 AC_CHECK_HEADERS(gd.h)
862 CPPFLASS="$save_CPPFLAGS"
863 case $ac_cv_header_gd_h in
866 You evidentally do not have a complete installation of the GD library available from www.boutell.com/gd.
867 This is needed for the nelma and/or png HID.
873 # Some versions of gd (prior to the expiration of the
874 # patent related to gif compression) do not support
875 # gif output. Check for that here.
877 LIBS="$save_LIBS $GD_LIBS $X_LIBS"
879 if test "X$with_gif" = "Xyes" ; then
880 AC_CHECK_FUNCS(gdImageGif)
881 if test "$ac_cv_func_gdImageGif" != "yes"; then
882 AC_MSG_ERROR([Your gd installation does not appear to include gif support.
883 You may need to update your installation of gd or disable
884 gif export with --disable-gif])
888 if test "X$with_jpeg" = "Xyes" ; then
889 AC_CHECK_FUNCS(gdImageJpeg)
890 if test "$ac_cv_func_gdImageJpeg" != "yes"; then
891 AC_MSG_ERROR([Your gd installation does not appear to include JPEG support.
892 You may need to update your installation of gd or disable
893 JPEG export with --disable-jpeg])
897 if test "X$with_png" = "Xyes" ; then
898 AC_CHECK_FUNCS(gdImagePng)
899 if test "$ac_cv_func_gdImagePng" != "yes"; then
900 AC_MSG_ERROR([Your gd installation does not appear to include PNG support.
901 You may need to update your installation of gd or disable
902 PNG export with --disable-png])
908 AM_CONDITIONAL(PNG, test x$with_png = xyes)
909 AM_CONDITIONAL(GIF, test x$with_gif = xyes)
911 # ------------- check if png previews should be built for pcblib-newlib
912 AC_MSG_CHECKING([if the m4lib to newlib export should create png previews])
915 [ --enable-m4lib-png Enable creating png previews for the m4 library],
916 [],[enable_m4lib_png=no])
917 AC_MSG_RESULT([$enable_m4lib_png])
918 AM_CONDITIONAL(PNG_PREVIEW, test x$enable_m4lib_png = xyes)
921 # Run away.... more ugly stuff here. By default we don't actually build
922 # pcblib-newlib from pcblib unless we are building from cvs or git sources.
923 # The reason is it takes a while and requires the png HID. The problem is,
924 # what if someone wants to use --enable-m4lib-png but the tarball was built
925 # without the previews. Or, what if someone does not want the PNG previews
926 # but the person building the tarball included them. Ugh! So what the following
927 # code attempts to do is detect that mismatch situation. Note that we only
928 # want to kick this code in when *not* building from git or cvs sources.
929 build_pcblib_newlib=no
930 if test "$pcb_sources" = "tarball" ; then
931 AC_MSG_CHECKING([If pcblib-newlib was built with png previews])
932 stamp=$srcdir/lib/pcblib-newlib.stamp
933 if test ! -f ${stamp} ; then
934 AC_MSG_RESULT([unknown, missing ${stamp}])
935 build_pcblib_newlib=yes
937 if test "`cat ${stamp}`" = "png-preview=yes" ; then
939 # lib exists and built with preview.
940 # if we don't want the preview, than rebuild
941 if test x$enable_m4lib_png != xyes ; then
942 build_pcblib_newlib=yes
946 # lib exists and built without preview.
947 # if we want the preview, than rebuild
948 if test x$enable_m4lib_png = xyes ; then
949 build_pcblib_newlib=yes
954 build_pcblib_newlib=yes
956 AC_MSG_CHECKING([If pcblib-newlib needs to be rebuilt])
957 AC_MSG_RESULT([$build_pcblib_newlib])
958 AM_CONDITIONAL(BUILD_PCBLIB_NEWLIB, test x$build_pcblib_newlib = xyes)
960 if test "X$cross_compiling" = "Xyes" ; then
961 # we are cross compiling so we will need a build host binary for pcb
962 AC_PATH_PROG(PCB, [pcb], [notfound])
964 PCB="\${top_builddir}/src/pcb"
968 # now make see how essential it was that we have a pcb executable for the build
970 if test "X$pcb_git_version" = "Xyes" ; then
971 if test "X$docs_yesno" = "Xyes" -o "X$enable_m4lib_png" = "Xyes" ; then
972 if test "$PCB" = "notfound" ; then
973 AC_MSG_ERROR([You have selected a build with m4lib png
974 previews enabled and/or with building the documentation enabled but you also
975 appear to be cross-compiling. For this to work, you must have a pcb installed that
976 can run on this machine (the build machine) because it is needed for generating
977 library footprint png previews as well as some of the figures in the documentation.
978 If you wish to skip building the documentation and the footprint previews then add
979 --disable-doc --disable-m4lib-png
980 This will allow your cross build to work.])
985 # ------------- Xrender -------------------
987 AC_CHECK_LIB(Xrender,XRenderQueryExtension,have_xrender=yes,have_xrender=no,$X_LIBS)
989 AC_ARG_ENABLE([xrender],
990 [ --disable-xrender Compile and link with Xrender [default=yes]])
991 case "$have_xrender:$enable_xrender" in
995 X_LIBS="-lXrender $X_LIBS"
996 AC_DEFINE([HAVE_XRENDER], 1,
997 [Define to 1 if Xrender is available])
1001 # ------------- Xinerama -------------------
1003 AC_CHECK_LIB(Xinerama,XineramaQueryExtension,have_xinerama=yes,have_xinerama=no,$X_LIBS)
1005 AC_ARG_ENABLE([xinerama],
1006 [ --disable-xinerama Compile and link with Xinerama [default=yes]])
1007 case "$have_xinerama:$enable_xinerama" in
1011 X_LIBS="-lXinerama $X_LIBS"
1012 AC_DEFINE([HAVE_XINERAMA], 1,
1013 [Define to 1 if Xinerama is available])
1017 # ------------- dmalloc -------------------
1020 AC_MSG_CHECKING([if dmalloc debugging should be enabled])
1021 AC_ARG_ENABLE([dmalloc],
1022 [ --enable-dmalloc Compile and link with dmalloc for malloc debugging [default=no]],
1024 if test "X$enable_dmalloc" != "Xno" ; then
1025 AC_MSG_RESULT([yes])
1026 AC_CHECK_HEADER(dmalloc.h,,
1027 AC_MSG_ERROR([You have requested dmalloc debugging but dmalloc.h could not be found]))
1028 AC_CHECK_LIB(dmalloc,main,,
1029 AC_MSG_ERROR([You have requested dmalloc debugging but -ldmalloc could not be found]))
1030 DMALLOC_LIBS="-ldmalloc"
1042 # ------------- ElectricFence -------------------
1043 dnl ElectricFence checks
1045 AC_MSG_CHECKING([if ElectricFence debugging should be enabled])
1046 AC_ARG_ENABLE([efence],
1047 [ --enable-efence Link with ElectricFence for malloc debugging [default=no]],
1049 if test "X$enable_efence" != "Xno" ; then
1050 AC_MSG_RESULT([yes])
1051 AC_CHECK_LIB(efence,main,,
1052 AC_MSG_ERROR([You have requested ElectricFence debugging but -lefence could not be found]))
1062 # ------------- Enable Debug code -------------------
1063 AC_MSG_CHECKING([for whether to enable debugging code])
1064 AC_ARG_ENABLE([debug],
1065 [ --enable-debug Enable debugging code],
1066 [],[enable_debug=no])
1068 AC_MSG_RESULT([$enable_debug])
1069 AM_CONDITIONAL(DEBUG_BUILD, test x$enable_debug = xyes)
1071 # ------------- mkdir required for win32 compatibility ------------
1072 # WIN32 mkdir takes only one argument, POSIX takes two.
1073 # #include "misc.h" where mkdir is required.
1074 m4_include([m4/m4_ax_func_mkdir.m4])
1077 # ------------- Type used for "Coord" type -------------------
1079 AC_CHECK_HEADERS(stdint.h)
1080 AC_ARG_ENABLE([coord64],
1081 [ --enable-coord64 Force 64-bit coordinate types],
1082 [],[enable_coord64=no])
1083 AC_ARG_ENABLE([coord32],
1084 [ --enable-coord32 Force 32-bit coordinate types],
1085 [],[enable_coord32=no])
1089 echo "$enable_coord32:$enable_coord64:$ac_cv_header_stdint_h"
1090 case "$enable_coord32:$enable_coord64:$ac_cv_header_stdint_h" in
1092 COORD_TYPE="int32_t"
1093 COORD_MAX="INT32_MAX"
1096 COORD_TYPE="int64_t"
1097 COORD_MAX="INT64_MAX"
1104 COORD_TYPE="long long"
1105 COORD_MAX="LLONG_MAX"
1108 AC_MSG_ERROR("*** cannot require both 32 and 64 bit coordinates")
1112 COORD_MAX="LONG_MAX"
1115 AC_DEFINE_UNQUOTED([COORD_TYPE],[$COORD_TYPE],
1116 [C type for Coordinates])
1117 AC_DEFINE_UNQUOTED([COORD_MAX],[$COORD_MAX],
1118 [Maximum value of coordinate type])
1120 # ------------- Complete set of CPPFLAGS and LIBS -------------------
1122 CPPFLAGS="$CPPFLAGS $X_CFLAGS $DBUS_CFLAGS $GLIB_CFLAGS $GTK_CFLAGS $GD_CFLAGS $CAIRO_CFLAGS $GTKGLEXT_CFLAGS $GLU_CFLAGS $GL_CFLAGS"
1123 LIBS="$LIBS $XM_LIBS $DBUS_LIBS $X_LIBS $GLIB_LIBS $GTK_LIBS $DMALLOC_LIBS $GD_LIBS $INTLLIBS $CAIRO_LIBS $GTKGLEXT_LIBS $GLU_LIBS $GL_LIBS"
1126 # if we have gcc then add -Wall
1127 if test "x$GCC" = "xyes"; then
1128 # see about adding some extra checks if the compiler takes them
1129 for flag in -Wall ; do
1130 case " ${CFLAGS} " in
1132 # flag is already present
1135 AC_MSG_CHECKING([if the compiler accepts ${flag}])
1136 ac_save_CFLAGS="$CFLAGS"
1137 CFLAGS="$CFLAGS ${flag}"
1138 AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
1139 [AC_MSG_RESULT([yes])],
1140 [AC_MSG_RESULT([no])
1141 CFLAGS="$ac_save_CFLAGS"
1151 # Now add C-specific flags
1152 if test "x$GCC" = "xyes"; then
1153 # see about adding some extra checks if the compiler takes them
1154 for flag in -Wdeclaration-after-statement ; do
1155 case " ${CFLAGS} " in
1157 # flag is already present
1160 AC_MSG_CHECKING([if the compiler accepts ${flag}])
1161 ac_save_CFLAGS="$CFLAGS"
1162 CFLAGS="$CFLAGS ${flag}"
1163 AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
1164 [AC_MSG_RESULT([yes])],
1165 [AC_MSG_RESULT([no])
1166 CFLAGS="$ac_save_CFLAGS"
1174 # See if we are building gcc with C++.
1175 AC_ARG_ENABLE(build-with-cxx,
1176 [ --enable-build-with-cxx build with C++ compiler instead of C compiler],
1177 ENABLE_BUILD_WITH_CXX=$enableval,
1178 ENABLE_BUILD_WITH_CXX=no)
1180 case "$ENABLE_BUILD_WITH_CXX" in
1191 FONTFILENAME=${FONTFILENAME:-"default_font"}
1192 AC_SUBST(FONTFILENAME)
1193 AC_DEFINE_UNQUOTED(FONTFILENAME,"$FONTFILENAME",[File for default font])
1195 # standard autoconf variables
1196 CPPFLAGS="$CPPFLAGS -DPREFIXDIR=\\\"\${prefix}\\\""
1197 CPPFLAGS="$CPPFLAGS -DBINDIR=\\\"\${bindir}\\\""
1198 CPPFLAGS="$CPPFLAGS -DHOST=\\\"\${host}\\\""
1200 # directory for old-style library and for fonts
1201 PCBLIBDIR=${datadir}/pcb
1203 #AC_DEFINE_UNQUOTED(PCBLIBDIR,"$PCBLIBDIR",[Library directory])
1204 CPPFLAGS="$CPPFLAGS -DPCBLIBDIR=\\\"$PCBLIBDIR\\\""
1206 # name for old-style library
1207 LIBRARYFILENAME=pcblib
1208 AC_SUBST(LIBRARYFILENAME)
1209 AC_DEFINE_UNQUOTED(LIBRARYFILENAME,"$LIBRARYFILENAME",[library file name])
1212 # directory for new library
1213 PCBTREEDIR=${datadir}/pcb/newlib
1214 PCBTREEPATH=${PCBTREEDIR}:${PCBLIBDIR}/pcblib-newlib
1215 PCBTREEDIR=${PCBTREEDIR:-"$PCBTREEDIR"}
1216 AC_SUBST(PCBTREEDIR)
1217 AC_SUBST(PCBTREEPATH)
1218 #AC_DEFINE_UNQUOTED(PCBTREEDIR,"$PCBLIB",[top directory for new style pcb library])
1219 CPPFLAGS="$CPPFLAGS -DPCBTREEDIR=\\\"$PCBTREEDIR\\\""
1220 CPPFLAGS="$CPPFLAGS -DPCBTREEPATH=\\\"$PCBTREEPATH\\\""
1222 # Figure out relative paths
1223 AC_MSG_CHECKING([for the bindir to pcblibdir relative path])
1224 adl_COMPUTE_RELATIVE_PATHS([bindir:PCBLIBDIR:bindir_to_pcblibdir])
1225 adl_NORMALIZE_PATH([bindir_to_pcblibdir], [$PCB_DIR_SEPARATOR_S])
1226 AC_MSG_RESULT([$bindir_to_pcblibdir])
1227 AC_DEFINE_UNQUOTED(BINDIR_TO_PCBLIBDIR, "$bindir_to_pcblibdir", [Relative path from bindir to pcblibdir])
1229 AC_MSG_CHECKING([for the bindir to pcbtreedir relative path])
1230 adl_COMPUTE_RELATIVE_PATHS([bindir:PCBTREEDIR:bindir_to_pcbtreedir])
1231 adl_NORMALIZE_PATH([bindir_to_pcbtreedir], [$PCB_DIR_SEPARATOR_S])
1232 AC_MSG_RESULT([$bindir_to_pcbtreedir])
1233 AC_DEFINE_UNQUOTED(BINDIR_TO_PCBTREEDIR, "$bindir_to_pcbtreedir", [Relative path from bindir to pcbtreedir])
1236 AC_MSG_CHECKING([for the bindir to exec_prefix relative path])
1237 adl_COMPUTE_RELATIVE_PATHS([bindir:exec_prefix:bindir_to_execprefix])
1238 adl_NORMALIZE_PATH([bindir_to_execprefix], [$PCB_DIR_SEPARATOR_S])
1239 AC_MSG_RESULT([$bindir_to_execprefix])
1240 AC_DEFINE_UNQUOTED(BINDIR_TO_EXECPREFIX, "$bindir_to_execprefix", [Relative path from bindir to exec_prefix])
1243 BTNMOD=${BTNMOD:-"Mod1"}
1247 for dir in src lib newlib doc example tools tutorial README_FILES
1249 test -d $dir/. && TOPDIRS="$TOPDIRS $dir"
1253 AC_CONFIG_FILES(Makefile data/Makefile intl/Makefile po/Makefile.in)
1255 if test -d $srcdir/README_FILES; then
1256 AC_CONFIG_FILES(README_FILES/Makefile)
1258 if test -d $srcdir/doc; then
1259 AC_CONFIG_FILES(doc/Makefile)
1261 if test -d $srcdir/doc/gs; then
1262 AC_CONFIG_FILES(doc/gs/Makefile)
1263 AC_CONFIG_FILES(doc/gs/gafrc)
1264 AC_CONFIG_FILES(doc/gs/gschemrc)
1266 if test -d $srcdir/example; then
1267 AC_CONFIG_FILES(example/Makefile)
1268 AC_CONFIG_FILES(example/libraries/Makefile)
1270 if test -d $srcdir/lib; then
1271 AC_CONFIG_FILES(lib/CreateLibraryContents.sh)
1272 AC_CONFIG_FILES(lib/CreateLibrary.sh)
1273 AC_CONFIG_FILES(lib/ListLibraryContents.sh)
1274 AC_CONFIG_FILES(lib/Makefile)
1275 AC_CONFIG_FILES(lib/QueryLibrary.sh)
1276 AC_CONFIG_FILES(lib/qfp-ui)
1278 if test -d $srcdir/newlib; then
1279 AC_CONFIG_FILES(newlib/2_pin_thru-hole_packages/Makefile)
1280 AC_CONFIG_FILES(newlib/Makefile)
1281 AC_CONFIG_FILES(newlib/connectors/Makefile)
1282 AC_CONFIG_FILES(newlib/crystal/Makefile)
1283 AC_CONFIG_FILES(newlib/electro-optics/Makefile)
1284 AC_CONFIG_FILES(newlib/headers/Makefile)
1285 AC_CONFIG_FILES(newlib/keystone/Makefile)
1286 AC_CONFIG_FILES(newlib/msp430/Makefile)
1287 AC_CONFIG_FILES(newlib/not_vetted_ingo/Makefile)
1288 AC_CONFIG_FILES(newlib/sockets/Makefile)
1289 AC_CONFIG_FILES(newlib/tests/Makefile)
1291 AC_CONFIG_FILES(src/Makefile)
1292 AC_CONFIG_FILES(src/icons/Makefile)
1293 if test -d $srcdir/tools; then
1294 AC_CONFIG_FILES(tools/Makefile)
1296 if test -d $srcdir/tutorial; then
1297 AC_CONFIG_FILES(tutorial/Makefile)
1301 AC_CONFIG_FILES(tests/inputs/Makefile)
1302 AC_CONFIG_FILES(tests/golden/Makefile)
1303 AC_CONFIG_FILES(tests/golden/hid_bom1/Makefile)
1304 AC_CONFIG_FILES(tests/golden/hid_bom2/Makefile)
1305 AC_CONFIG_FILES(tests/golden/hid_bom3/Makefile)
1306 AC_CONFIG_FILES(tests/golden/hid_bom4/Makefile)
1307 AC_CONFIG_FILES(tests/golden/hid_gcode1/Makefile)
1308 AC_CONFIG_FILES(tests/golden/hid_gcode2/Makefile)
1309 AC_CONFIG_FILES(tests/golden/hid_gcode3/Makefile)
1310 AC_CONFIG_FILES(tests/golden/hid_gcode4/Makefile)
1311 AC_CONFIG_FILES(tests/golden/hid_gcode5/Makefile)
1312 AC_CONFIG_FILES(tests/golden/hid_gcode6/Makefile)
1313 AC_CONFIG_FILES(tests/golden/hid_gcode7/Makefile)
1314 AC_CONFIG_FILES(tests/golden/hid_gcode8/Makefile)
1315 AC_CONFIG_FILES(tests/golden/hid_gcode9/Makefile)
1316 AC_CONFIG_FILES(tests/golden/hid_gcode10/Makefile)
1317 AC_CONFIG_FILES(tests/golden/hid_gcode11/Makefile)
1318 AC_CONFIG_FILES(tests/golden/hid_gerber1/Makefile)
1319 AC_CONFIG_FILES(tests/golden/hid_gerber2/Makefile)
1320 AC_CONFIG_FILES(tests/golden/hid_gerber3/Makefile)
1321 AC_CONFIG_FILES(tests/golden/hid_png1/Makefile)
1322 AC_CONFIG_FILES(tests/golden/hid_png2/Makefile)
1323 AC_CONFIG_FILES(tests/golden/hid_png3/Makefile)
1324 AC_CONFIG_FILES(tests/Makefile)
1326 dnl GTS 0.7.6 - http://gts.sourceforge.net/
1327 AC_CONFIG_FILES(gts/Makefile)
1329 dnl win32 build scripts
1330 AC_CONFIG_FILES(w32/Makefile)
1334 with_gui=`echo $with_gui`
1335 with_printer=`echo $with_printer`
1336 with_exporters=`echo $with_exporters | sed 's/,/ /g'`
1338 expandedXDGDATADIR=`eval "echo $XDGDATADIR"`
1339 expandedKDEDATADIR=`eval "echo $KDEDATADIR"`
1342 ** Configuration summary for $PACKAGE $VERSION:
1345 Printer: $with_printer
1346 Exporters: $with_exporters
1347 Coordinate type: $COORD_TYPE
1348 Source tree distribution: $pcb_sources
1349 Build documentation: $docs_yesno
1350 Build toporouter: $enable_toporouter
1351 Enable toporouter output: $enable_toporouter_output
1352 xdg data directory: $expandedXDGDATADIR
1353 KDE data directory: $expandedKDEDATADIR
1354 dmalloc debugging: $with_dmalloc
1355 ElectricFence debugging: $with_efence
1357 Cross Compiling: $cross_compiling