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])
393 AC_MSG_CHECKING([for whether to use GL drawing])
395 [ --enable-gl Enable GL drawing (with GTK HID)],
397 case " $with_gui " in
398 *\ gtk\ *) enable_gl=yes;;
402 AC_MSG_RESULT([$enable_gl])
403 AM_CONDITIONAL(USE_GL, test x$enable_gl = xyes)
405 if test "x$enable_gl" = "xyes"; then
406 case " $with_gui " in
408 * ) AC_MSG_ERROR([GL drawing enabled but only works with the GTK HID.
409 Either do not use --enable-gl or enable the gtk HID.])
413 AC_CHECK_HEADERS(GL/gl.h)
414 case $ac_cv_header_GL_gl_h in
416 AC_MSG_ERROR([You don't seem to have the GL library headers installed.])
421 AC_CHECK_HEADERS(GL/glu.h)
422 case $ac_cv_header_GL_glu_h in
424 AC_MSG_ERROR([You don't seem to have the GL glu library headers installed.])
432 AC_DEFINE([ENABLE_GL], 1,
433 [Define to 1 if GL support is to be compiled in])
436 AC_MSG_CHECKING([for which printer to use])
437 AC_ARG_WITH([printer],
438 [ --with-printer= Specify the printer: lpr [[default=lpr]]],
439 [],[with_printer=lpr])
440 AC_MSG_RESULT([$with_printer])
441 case " $hid_printers " in
442 *\ $with_printer\ * )
443 HIDLIST="$HIDLIST $with_printer"
445 * ) AC_MSG_ERROR([$with_printer is not a valid printer]) ;;
448 AC_MSG_CHECKING([for which exporters to use])
449 AC_ARG_WITH([exporters],
450 [ --with-exporters= Enable export devices: bom gerber gcode nelma png ps [[default=bom gerber gcode nelma png ps]]],
451 [],[with_exporters=$hid_exporters])
452 AC_MSG_RESULT([$with_exporters])
453 for e in `echo $with_exporters | sed 's/,/ /g'`; do
454 case " $hid_exporters " in
456 HIDLIST="$HIDLIST $e"
458 * ) AC_MSG_ERROR([$e is not a valid exporter]) ;;
462 if test "X$enable_jpeg" = "Xno" -a "X$enable_gif" = "Xno" -a "X$enable_png" = "Xno" ; then
463 case " ${HIDLIST} " in
465 AC_MSG_ERROR([you have requested the png HID but turned off all output
466 formats! If you do not want gif/jpeg/png output, use --with-exporters to list
467 which exporters you want and do not list png there.])
475 for hid in $HIDLIST; do
476 F=$srcdir/src/hid/$hid/hid.conf
478 echo checking $hid depedencies
482 if test "X`echo $HIDLIST | grep $dep`" = "X"; then
483 AC_MSG_ERROR([you have requested the $hid HID but not the $dep HID, which it depends on])
489 for e in $HIDLIST; do
490 HIDLIBS="$HIDLIBS lib$e.a"
496 # ------------- end HID config -------------------
498 ######################################################################
500 # desktop integration
503 AC_PATH_PROG(SETENV, env, [])
504 AC_PATH_PROG(GTK_UPDATE_ICON_CACHE_BIN, gtk-update-icon-path, [true])
506 # Change default location for XDG files (MIME and Icons)
507 AC_ARG_WITH(xdgdatadir, [ --with-xdgdatadir=path Change where the theme icons
508 and mime registrations are installed [[DATADIR]]], [opt_xdgdatadir=$withval])
510 # Change default location for KDE data files (KDE MIME registrations)
511 AC_ARG_WITH(kdedatadir, [ --with-kdedatadir=path Change where the KDE mime reg
512 istrations are installed [[DATADIR]]], [opt_kdedatadir=$withval])
514 if test x$opt_xdgdatadir = x; then
515 # path was not specified with --with-xdgdatadir
516 XDGDATADIR='${datadir}'
518 # path WAS specified with --with-xdgdatadir
519 XDGDATADIR="$opt_xdgdatadir"
523 if test x$opt_kdedatadir = x; then
524 # path was not specified with --with-kdedatadir
525 KDEDATADIR='${datadir}'
527 # path WAS specified with --with-kdedatadir
528 KDEDATADIR="$opt_kdedatadir"
532 AC_ARG_ENABLE(update-desktop-database,
533 AC_HELP_STRING([--disable-update-desktop-database],
534 [do not update desktop database after installation]),,
535 enable_update_desktop_database=yes)
537 AM_CONDITIONAL(ENABLE_UPDATE_DESKTOP_DATABASE, test x$enable_update_desktop_database = xyes)
539 if test x$enable_update_desktop_database = xyes ; then
540 AC_PATH_PROG(UPDATE_DESKTOP_DATABASE, [update-desktop-database], no)
541 if test $UPDATE_DESKTOP_DATABASE = no; then
542 AC_MSG_ERROR([Cannot find update-desktop-database, make sure it is installed and in your PATH, or configure with --disable-update-desktop-database])
546 AC_ARG_ENABLE(update-mime-database,
547 AC_HELP_STRING([--disable-update-mime-database],
548 [do not update mime database after installation]),,
549 enable_update_mime_database=yes)
551 AM_CONDITIONAL(ENABLE_UPDATE_MIME_DATABASE, test x$enable_update_mime_database = xyes)
553 if test x$enable_update_mime_database = xyes ; then
554 AC_PATH_PROG(UPDATE_MIME_DATABASE, [update-mime-database], no)
555 if test $UPDATE_MIME_DATABASE = no; then
556 AC_MSG_ERROR([Cannot find update-mime-database, make sure it is installed and in your PATH, or configure with --disable-update-mime-database])
561 ######################################################################
563 AC_PATH_PROGS(M4, gm4 m4, [none])
564 if test "X$M4" = "Xnone" ; then
565 AC_MSG_ERROR([Did not find a m4 executible. You need to make sure
566 that m4 is installed on your system and that m4 is in your path])
568 AC_MSG_CHECKING([if $M4 has the division involving negative numbers bug])
569 pcb_m4_r=`echo "eval(-2/2)" | $M4`
570 if test "$pcb_m4_r" != "-1" ; then
572 AC_MSG_ERROR([It appears that $M4 has a bug involving division
573 with negative numbers. In particular it just returned the result that
574 -2/2 = $pcb_m4_r instead of -1. This is a known bug in GNU m4-1.4.9. Please
575 install a non-broken m4.])
581 AC_PATH_PROGS(WISH, wish wish85 wish8.5 wish83 wish8.3 wish80 wish8.0 cygwish83 cygwish80,[none])
582 if test "X$WISH" = "Xnone" ; then
583 AC_MSG_ERROR([Did not find the wish executible. You need to make sure
584 that tcl is installed on your system and that wish is in your path])
587 AC_DEFINE_UNQUOTED(M4,$M4,[m4 executible])
590 AC_DEFINE_UNQUOTED(GNUM4,"$M4",[m4 program used by pcb])
592 AC_PATH_PROG(LATEX, latex, notfound)
593 AM_CONDITIONAL(MISSING_LATEX, test x$LATEX = xnotfound)
595 AC_PATH_PROG(PDFLATEX, pdflatex, notfound)
596 AM_CONDITIONAL(MISSING_PDFLATEX, test x$PDFLATEX = xnotfound)
598 AC_PATH_PROG(DVIPS, dvips, notfound)
599 AM_CONDITIONAL(MISSING_DVIPS, test x$DVIPS = xnotfound)
601 AC_PATH_PROG(TEXI2DVI, texi2dvi, notfound)
602 AM_CONDITIONAL(MISSING_TEXI2DVI, test x$TEXI2DVI = xnotfound)
604 AC_PATH_PROG(PS2PDF, ps2pdf, notfound)
605 AM_CONDITIONAL(MISSING_PS2PDF, test x$PS2PDF = xnotfound)
607 # used to build some of the getting started guide
608 AC_PATH_PROG(GSCHEM, gschem, notfound)
609 AM_CONDITIONAL(MISSING_GSCHEM, test x$GSCHEM = xnotfound)
611 if test "X$docs_yesno" = "Xyes" -a "X$pcb_git_version" = "Xyes" ; then
612 if test "$LATEX" = "notfound" -o "$PDFLATEX" = "notfound" -o "$DVIPS" = "notfound" -o "$TEXI2DVI" = "notfound" -o "$PS2PDF" = "notfound" ; then
613 AC_MSG_ERROR([It appears that you are building from a source tree obtained
614 via git but you do not have the required tools installed to build the documentation. Here
615 is a list of tools and the detected values:
623 Either make sure these tools are installed or disable building and installing the documentation
624 by using the --disable-doc configure option.
629 ############################################################################
631 # These checks are for tools used by the testsuite. It will not be fatal
632 # if these are missing because this is primarily for developer use. It is
633 # possible that we might add some --enable flag in the future that forces
634 # full tools for development work.
636 # Check for ImageMagick tools used by the testsuite
637 AC_PATH_PROG(IM_ANIMATE, animate, notfound)
638 AC_PATH_PROG(IM_COMPARE, compare, notfound)
639 AC_PATH_PROG(IM_COMPOSITE, composite, notfound)
640 AC_PATH_PROG(IM_CONVERT, convert, notfound)
641 AC_PATH_PROG(IM_DISPLAY, display, notfound)
642 AC_PATH_PROG(IM_MONTAGE, montage, notfound)
644 test "${IM_ANIMATE}" != "notfound" || missing_magick="${missing_magick} animate"
645 test "${IM_COMPARE}" != "notfound" || missing_magick="${missing_magick} compare"
646 test "${IM_COMPOSITE}" != "notfound" || missing_magick="${missing_magick} composite"
647 test "${IM_CONVERT}" != "notfound" || missing_magick="${missing_magick} convert"
648 test "${IM_DISPLAY}" != "notfound" || missing_magick="${missing_magick} display"
649 test "${IM_MONTAGE}" != "notfound" || missing_magick="${missing_magick} montage"
651 AC_MSG_CHECKING([if all ImageMagick tools needed for the testsuite were found])
652 if test "X${missing_magick}" != "X" ; then
653 AC_MSG_RESULT([no. The testsuite will be disabled because the following
654 tools from the ImageMagick suite were not found:
656 No loss in pcb functionality should be experienced, you just will not
657 be able to run the full regression testsuite.
667 test $have_magick = yes || have_test_tools=no
669 # the RS274-X export HID is partially checked by looking at the result with
671 AC_PATH_PROG(GERBV, gerbv, notfound)
672 test $GERBV != notfound || have_test_tools=no
675 AM_CONDITIONAL(HAVE_TEST_TOOLS, test x$have_test_tools = xyes)
676 AC_MSG_CHECKING([if all the requried testsuite tools were found])
677 if test x$have_test_tools = xyes ; then
680 AC_MSG_RESULT([no -- the testsuite will be disabled])
685 ############################################################################
688 dnl Checks for libraries.
689 AC_CHECK_LIB(m, sqrt)
690 AC_CHECK_LIB(dl, dlopen)
691 AC_CHECK_LIB(xnet, gethostbyname)
692 AC_CHECK_LIB(fl, yywrap)
693 AC_CHECK_FUNCS(strerror)
694 AC_CHECK_FUNCS(regcomp re_comp)
695 AC_CHECK_FUNCS(logf expf rint)
696 AC_CHECK_FUNCS(vsnprintf)
697 AC_CHECK_FUNCS(getpwuid getcwd)
698 AC_CHECK_FUNCS(rand random)
701 AC_CHECK_FUNCS(mkdtemp)
703 # normally used for all file i/o
704 AC_CHECK_FUNCS(popen)
707 AC_CHECK_FUNCS(realpath canonicalize_file_name)
708 libiberty_NEED_DECLARATION(canonicalize_file_name)
710 # for pcb_spawnvp in action.c on Windows
711 AC_CHECK_FUNCS(_spawnvp)
714 AC_CHECK_HEADERS(limits.h locale.h string.h sys/types.h regex.h pwd.h)
715 AC_CHECK_HEADERS(sys/socket.h netinet/in.h netdb.h sys/param.h sys/times.h sys/wait.h)
716 AC_CHECK_HEADERS(dlfcn.h)
718 if test "x${WIN32}" = "xyes" ; then
719 AC_CHECK_HEADERS(windows.h)
722 PKG_CHECK_MODULES(GLIB, glib-2.0, ,
723 [AC_MSG_RESULT([Note: cannot find glib-2.0.
724 You may want to review the following errors:
728 for e in $HIDLIST; do
732 CPPFLAGS="$CFLAGS $X_CFLAGS"
733 AC_CHECK_LIB(X11, XOpenDisplay, , , $X_LIBS)
734 AC_CHECK_LIB(ICE, main, , , $X_LIBS)
735 AC_CHECK_LIB(SM, main, , , $X_LIBS)
736 AC_CHECK_LIB(Xext, main, , , $X_LIBS)
737 AC_CHECK_LIB(Xt, XtOpenDisplay, , , $X_LIBS)
738 AC_CHECK_LIB(Xmu, main, , , $X_LIBS)
739 AC_CHECK_LIB(Xpm, main, , , $X_LIBS)
740 AC_CHECK_LIB(Xm, XmCreateMainWindow, , , $X_LIBS)
741 case $ac_cv_lib_Xm_XmCreateMainWindow in
743 AC_MSG_ERROR([You don't seem to have the Lesstif development environment installed.])
747 AC_CHECK_HEADERS(Xm/Xm.h)
748 case $ac_cv_header_Xm_Xm_h in
750 AC_MSG_ERROR([You don't seem to have the Lesstif development environment installed.])
757 # Check for pkg-config
758 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
759 if test "$PKG_CONFIG" = "no"; then
760 AC_MSG_ERROR([Cannot find pkg-config, make sure it is installed and in your PATH])
763 PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.12.0, ,
764 [AC_MSG_ERROR([Cannot find gtk+ >= 2.12.0, install it and rerun ./configure
765 Please review the following errors:
768 GTK_VERSION=`$PKG_CONFIG gtk+-2.0 --modversion`
769 GLIB_VERSION=`$PKG_CONFIG glib-2.0 --modversion`
771 if test "x$enable_gl" = "xyes"; then
773 PKG_CHECK_MODULES(GTKGLEXT, gtkglext-1.0 >= 1.0.0, , [AC_MSG_ERROR([
774 *** Required version of gtkglext is not installed - please install first ***
775 Please review the following errors:
776 $GTKGLEXT_PKG_ERRORS])]
778 GTKGLEXT_VER=`$PKG_CONFIG gtkglext-1.0 --modversion`
784 # Check for gdlib-config for gd (www.boutell.com/gd)
785 AC_PATH_PROG(GDLIB_CONFIG, gdlib-config, no)
786 if test "$GDLIB_CONFIG" = "no"; then
787 AC_MSG_RESULT([Cannot find gdlib-config.
788 Make sure it is installed and in your PATH.
789 gdlib-config is part of the GD library available from www.boutell.com/gd.
790 This is needed for the png HID. I will look for libgd anyway and maybe
793 if test "$WIN32" != "yes" ; then
794 AC_CHECK_LIB(gd,main,,
795 AC_MSG_ERROR([[You have requested gcode, nelma, or png HIDs but -lgd could not be found]]))
797 AC_CHECK_LIB(bgd,main,,
798 AC_MSG_ERROR([[You have requested gcode, nelma, or png HIDs but -lbgd could not be found]]))
801 if test "$WIN32" = "yes" ; then
806 AC_MSG_CHECKING([for libgd cflags])
807 GD_CFLAGS="`$GDLIB_CONFIG --cflags`"
808 AC_MSG_RESULT([$GD_CFLAGS])
809 AC_MSG_CHECKING([for libgd libs])
810 GD_LIBS="`$GDLIB_CONFIG --ldflags` `$GDLIB_CONFIG --libs` -l${GD}"
811 AC_MSG_RESULT([$GD_LIBS])
814 # since some linux systems evidently install gdlib-config but fail to
815 # install the headers (nice), check for the header too and fail if it
817 CFLAGS="$CFLAGS $GD_CFLAGS"
818 CPPFLAGS="$CPPFLAGS $GD_CFLAGS"
819 AC_CHECK_HEADERS(gd.h)
820 case $ac_cv_header_gd_h in
823 You evidentally do not have a complete installation of the GD library available from www.boutell.com/gd.
824 This is needed for the nelma and/or png HID.
830 # Some versions of gd (prior to the expiration of the
831 # patent related to gif compression) do not support
832 # gif output. Check for that here.
834 LIBS="$save_LIBS $GD_LIBS $X_LIBS"
836 AC_MSG_CHECKING([if GIF output from the png HID is desired])
838 [ --disable-gif Disable support for gif output when the png HID is used [[default=include gif support]]],
840 if test "X$enable_gif" != "Xno" ; then
852 if test "X$with_gif" = "Xyes" ; then
853 AC_CHECK_FUNCS(gdImageGif)
854 if test "$ac_cv_func_gdImageGif" != "yes"; then
855 AC_MSG_ERROR([Your gd installation does not appear to include gif support.
856 You may need to update your installation of gd or disable
857 gif export with --disable-gif])
861 AC_MSG_CHECKING([if JPEG output from the png HID is desired])
862 AC_ARG_ENABLE([jpeg],
863 [ --disable-jpeg Disable support for JPEG output when the png HID is used [[default=include JPEG support]]],
865 if test "X$enable_jpeg" != "Xno" ; then
877 if test "X$with_jpeg" = "Xyes" ; then
878 AC_CHECK_FUNCS(gdImageJpeg)
879 if test "$ac_cv_func_gdImageJpeg" != "yes"; then
880 AC_MSG_ERROR([Your gd installation does not appear to include JPEG support.
881 You may need to update your installation of gd or disable
882 JPEG export with --disable-jpeg])
887 AC_MSG_CHECKING([if PNG output from the png HID is desired])
889 [ --disable-png Disable support for PNG output when the png HID is used [[default=include PNG support]]],
891 if test "X$enable_png" != "Xno" ; then
903 if test "X$with_png" = "Xyes" ; then
904 AC_CHECK_FUNCS(gdImagePng)
905 if test "$ac_cv_func_gdImagePng" != "yes"; then
906 AC_MSG_ERROR([Your gd installation does not appear to include PNG support.
907 You may need to update your installation of gd or disable
908 PNG export with --disable-png])
918 AM_CONDITIONAL(PNG, test x$with_png = xyes)
919 AM_CONDITIONAL(GIF, test x$with_gif = xyes)
921 # ------------- check if png previews should be built for pcblib-newlib
922 AC_MSG_CHECKING([if the m4lib to newlib export should create png previews])
925 [ --enable-m4lib-png Enable creating png previews for the m4 library],
926 [],[enable_m4lib_png=no])
927 AC_MSG_RESULT([$enable_m4lib_png])
928 AM_CONDITIONAL(PNG_PREVIEW, test x$enable_m4lib_png = xyes)
931 # Run away.... more ugly stuff here. By default we don't actually build
932 # pcblib-newlib from pcblib unless we are building from cvs or git sources.
933 # The reason is it takes a while and requires the png HID. The problem is,
934 # what if someone wants to use --enable-m4lib-png but the tarball was built
935 # without the previews. Or, what if someone does not want the PNG previews
936 # but the person building the tarball included them. Ugh! So what the following
937 # code attempts to do is detect that mismatch situation. Note that we only
938 # want to kick this code in when *not* building from git or cvs sources.
939 build_pcblib_newlib=no
940 if test "$pcb_sources" = "tarball" ; then
941 AC_MSG_CHECKING([If pcblib-newlib was built with png previews])
942 stamp=$srcdir/lib/pcblib-newlib.stamp
943 if test ! -f ${stamp} ; then
944 AC_MSG_RESULT([unknown, missing ${stamp}])
945 build_pcblib_newlib=yes
947 if test "`cat ${stamp}`" = "png-preview=yes" ; then
949 # lib exists and built with preview.
950 # if we don't want the preview, than rebuild
951 if test x$enable_m4lib_png != xyes ; then
952 build_pcblib_newlib=yes
956 # lib exists and built without preview.
957 # if we want the preview, than rebuild
958 if test x$enable_m4lib_png = xyes ; then
959 build_pcblib_newlib=yes
964 build_pcblib_newlib=yes
966 AC_MSG_CHECKING([If pcblib-newlib needs to be rebuilt])
967 AC_MSG_RESULT([$build_pcblib_newlib])
968 AM_CONDITIONAL(BUILD_PCBLIB_NEWLIB, test x$build_pcblib_newlib = xyes)
970 if test "X$cross_compiling" = "Xyes" ; then
971 # we are cross compiling so we will need a build host binary for pcb
972 AC_PATH_PROG(PCB, [pcb], [notfound])
974 PCB="\${top_builddir}/src/pcb"
978 # now make see how essential it was that we have a pcb executable for the build
980 if test "X$pcb_git_version" = "Xyes" ; then
981 if test "X$docs_yesno" = "Xyes" -o "X$enable_m4lib_png" = "Xyes" ; then
982 if test "$PCB" = "notfound" ; then
983 AC_MSG_ERROR([You have selected a build with m4lib png
984 previews enabled and/or with building the documentation enabled but you also
985 appear to be cross-compiling. For this to work, you must have a pcb installed that
986 can run on this machine (the build machine) because it is needed for generating
987 library footprint png previews as well as some of the figures in the documentation.
988 If you wish to skip building the documentation and the footprint previews then add
989 --disable-doc --disable-m4lib-png
990 This will allow your cross build to work.])
995 # ------------- Xrender -------------------
997 AC_CHECK_LIB(Xrender,XRenderQueryExtension,have_xrender=yes,have_xrender=no,$X_LIBS)
999 AC_ARG_ENABLE([xrender],
1000 [ --disable-xrender Compile and link with Xrender [default=yes]])
1001 case "$have_xrender:$enable_xrender" in
1005 X_LIBS="-lXrender $X_LIBS"
1006 AC_DEFINE([HAVE_XRENDER], 1,
1007 [Define to 1 if Xrender is available])
1011 # ------------- dmalloc -------------------
1014 AC_MSG_CHECKING([if dmalloc debugging should be enabled])
1015 AC_ARG_ENABLE([dmalloc],
1016 [ --enable-dmalloc Compile and link with dmalloc for malloc debugging [default=no]],
1018 if test "X$enable_dmalloc" != "Xno" ; then
1019 AC_MSG_RESULT([yes])
1020 AC_CHECK_HEADER(dmalloc.h,,
1021 AC_MSG_ERROR([You have requested dmalloc debugging but dmalloc.h could not be found]))
1022 AC_CHECK_LIB(dmalloc,main,,
1023 AC_MSG_ERROR([You have requested dmalloc debugging but -ldmalloc could not be found]))
1024 DMALLOC_LIBS="-ldmalloc"
1036 # ------------- ElectricFence -------------------
1037 dnl ElectricFence checks
1039 AC_MSG_CHECKING([if ElectricFence debugging should be enabled])
1040 AC_ARG_ENABLE([efence],
1041 [ --enable-efence Link with ElectricFence for malloc debugging [default=no]],
1043 if test "X$enable_efence" != "Xno" ; then
1044 AC_MSG_RESULT([yes])
1045 AC_CHECK_LIB(efence,main,,
1046 AC_MSG_ERROR([You have requested ElectricFence debugging but -lefence could not be found]))
1056 # ------------- Enable Debug code -------------------
1057 AC_MSG_CHECKING([for whether to enable debugging code])
1058 AC_ARG_ENABLE([debug],
1059 [ --enable-debug Enable debugging code],
1060 [],[enable_debug=no])
1062 AC_MSG_RESULT([$enable_debug])
1063 AM_CONDITIONAL(DEBUG_BUILD, test x$enable_debug = xyes)
1065 # ------------- mkdir required for win32 compatibility ------------
1066 # WIN32 mkdir takes only one argument, POSIX takes two.
1067 # #include "misc.h" where mkdir is required.
1068 m4_include([m4/m4_ax_func_mkdir.m4])
1071 # ------------- Complete set of CFLAGS and LIBS -------------------
1073 CFLAGS="$CFLAGS $X_CFLAGS $DBUS_CFLAGS $GLIB_CFLAGS $GTK_CFLAGS $CAIRO_CFLAGS $GTKGLEXT_CFLAGS $GLU_CFLAGS"
1074 LIBS="$LIBS $XM_LIBS $DBUS_LIBS $X_LIBS $GLIB_LIBS $GTK_LIBS $DMALLOC_LIBS $GD_LIBS $INTLLIBS $CAIRO_LIBS $GTKGLEXT_LIBS $GLU_LIBS"
1077 # if we have gcc then add -Wall
1078 if test "x$GCC" = "xyes"; then
1079 # see about adding some extra checks if the compiler takes them
1080 for flag in -Wall ; do
1081 case " ${CFLAGS} " in
1083 # flag is already present
1086 AC_MSG_CHECKING([if the compiler accepts ${flag}])
1087 ac_save_CFLAGS="$CFLAGS"
1088 CFLAGS="$CFLAGS ${flag}"
1089 AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
1090 [AC_MSG_RESULT([yes])],
1091 [AC_MSG_RESULT([no])
1092 CFLAGS="$ac_save_CFLAGS"
1102 # Now add C-specific flags
1103 if test "x$GCC" = "xyes"; then
1104 # see about adding some extra checks if the compiler takes them
1105 for flag in -Wdeclaration-after-statement ; do
1106 case " ${CFLAGS} " in
1108 # flag is already present
1111 AC_MSG_CHECKING([if the compiler accepts ${flag}])
1112 ac_save_CFLAGS="$CFLAGS"
1113 CFLAGS="$CFLAGS ${flag}"
1114 AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
1115 [AC_MSG_RESULT([yes])],
1116 [AC_MSG_RESULT([no])
1117 CFLAGS="$ac_save_CFLAGS"
1125 # See if we are building gcc with C++.
1126 AC_ARG_ENABLE(build-with-cxx,
1127 [ --enable-build-with-cxx build with C++ compiler instead of C compiler],
1128 ENABLE_BUILD_WITH_CXX=$enableval,
1129 ENABLE_BUILD_WITH_CXX=no)
1131 case "$ENABLE_BUILD_WITH_CXX" in
1134 CC_OR_CXX_FLAGS="$CXXFLAGS"
1138 CC_OR_CXX_FLAGS="$CFLAGS"
1142 AC_SUBST(CC_OR_CXX_FLAGS)
1145 FONTFILENAME=${FONTFILENAME:-"default_font"}
1146 AC_SUBST(FONTFILENAME)
1147 AC_DEFINE_UNQUOTED(FONTFILENAME,"$FONTFILENAME",[File for default font])
1149 # standard autoconf variables
1150 CPPFLAGS="$CPPFLAGS -DPREFIXDIR=\\\"\${prefix}\\\""
1151 CPPFLAGS="$CPPFLAGS -DBINDIR=\\\"\${bindir}\\\""
1152 CPPFLAGS="$CPPFLAGS -DHOST=\\\"\${host}\\\""
1154 # directory for old-style library and for fonts
1155 PCBLIBDIR=${datadir}/pcb
1157 #AC_DEFINE_UNQUOTED(PCBLIBDIR,"$PCBLIBDIR",[Library directory])
1158 CPPFLAGS="$CPPFLAGS -DPCBLIBDIR=\\\"$PCBLIBDIR\\\""
1160 # name for old-style library
1161 LIBRARYFILENAME=pcblib
1162 AC_SUBST(LIBRARYFILENAME)
1163 AC_DEFINE_UNQUOTED(LIBRARYFILENAME,"$LIBRARYFILENAME",[library file name])
1166 # directory for new library
1167 PCBTREEDIR=${datadir}/pcb/newlib
1168 PCBTREEPATH=${PCBTREEDIR}:${PCBLIBDIR}/pcblib-newlib
1169 PCBTREEDIR=${PCBTREEDIR:-"$PCBTREEDIR"}
1170 AC_SUBST(PCBTREEDIR)
1171 AC_SUBST(PCBTREEPATH)
1172 #AC_DEFINE_UNQUOTED(PCBTREEDIR,"$PCBLIB",[top directory for new style pcb library])
1173 CPPFLAGS="$CPPFLAGS -DPCBTREEDIR=\\\"$PCBTREEDIR\\\""
1174 CPPFLAGS="$CPPFLAGS -DPCBTREEPATH=\\\"$PCBTREEPATH\\\""
1176 # Figure out relative paths
1177 AC_MSG_CHECKING([for the bindir to pcblibdir relative path])
1178 adl_COMPUTE_RELATIVE_PATHS([bindir:PCBLIBDIR:bindir_to_pcblibdir])
1179 adl_NORMALIZE_PATH([bindir_to_pcblibdir], [$PCB_DIR_SEPARATOR_S])
1180 AC_MSG_RESULT([$bindir_to_pcblibdir])
1181 AC_DEFINE_UNQUOTED(BINDIR_TO_PCBLIBDIR, "$bindir_to_pcblibdir", [Relative path from bindir to pcblibdir])
1183 AC_MSG_CHECKING([for the bindir to pcbtreedir relative path])
1184 adl_COMPUTE_RELATIVE_PATHS([bindir:PCBTREEDIR:bindir_to_pcbtreedir])
1185 adl_NORMALIZE_PATH([bindir_to_pcbtreedir], [$PCB_DIR_SEPARATOR_S])
1186 AC_MSG_RESULT([$bindir_to_pcbtreedir])
1187 AC_DEFINE_UNQUOTED(BINDIR_TO_PCBTREEDIR, "$bindir_to_pcbtreedir", [Relative path from bindir to pcbtreedir])
1190 AC_MSG_CHECKING([for the bindir to exec_prefix relative path])
1191 adl_COMPUTE_RELATIVE_PATHS([bindir:exec_prefix:bindir_to_execprefix])
1192 adl_NORMALIZE_PATH([bindir_to_execprefix], [$PCB_DIR_SEPARATOR_S])
1193 AC_MSG_RESULT([$bindir_to_execprefix])
1194 AC_DEFINE_UNQUOTED(BINDIR_TO_EXECPREFIX, "$bindir_to_execprefix", [Relative path from bindir to exec_prefix])
1197 BTNMOD=${BTNMOD:-"Mod1"}
1201 for dir in src lib newlib doc example tools tutorial README_FILES
1203 test -d $dir/. && TOPDIRS="$TOPDIRS $dir"
1207 AC_CONFIG_FILES(Makefile data/Makefile intl/Makefile po/Makefile.in)
1209 if test -d $srcdir/README_FILES; then
1210 AC_CONFIG_FILES(README_FILES/Makefile)
1212 if test -d $srcdir/doc; then
1213 AC_CONFIG_FILES(doc/Makefile)
1215 if test -d $srcdir/doc/gs; then
1216 AC_CONFIG_FILES(doc/gs/Makefile)
1217 AC_CONFIG_FILES(doc/gs/gafrc)
1218 AC_CONFIG_FILES(doc/gs/gschemrc)
1220 if test -d $srcdir/example; then
1221 AC_CONFIG_FILES(example/Makefile)
1222 AC_CONFIG_FILES(example/libraries/Makefile)
1224 if test -d $srcdir/lib; then
1225 AC_CONFIG_FILES(lib/CreateLibraryContents.sh)
1226 AC_CONFIG_FILES(lib/CreateLibrary.sh)
1227 AC_CONFIG_FILES(lib/ListLibraryContents.sh)
1228 AC_CONFIG_FILES(lib/Makefile)
1229 AC_CONFIG_FILES(lib/QueryLibrary.sh)
1230 AC_CONFIG_FILES(lib/qfp-ui)
1232 if test -d $srcdir/newlib; then
1233 AC_CONFIG_FILES(newlib/2_pin_thru-hole_packages/Makefile)
1234 AC_CONFIG_FILES(newlib/Makefile)
1235 AC_CONFIG_FILES(newlib/connectors/Makefile)
1236 AC_CONFIG_FILES(newlib/crystal/Makefile)
1237 AC_CONFIG_FILES(newlib/electro-optics/Makefile)
1238 AC_CONFIG_FILES(newlib/headers/Makefile)
1239 AC_CONFIG_FILES(newlib/keystone/Makefile)
1240 AC_CONFIG_FILES(newlib/msp430/Makefile)
1241 AC_CONFIG_FILES(newlib/not_vetted_ingo/Makefile)
1242 AC_CONFIG_FILES(newlib/sockets/Makefile)
1243 AC_CONFIG_FILES(newlib/tests/Makefile)
1245 AC_CONFIG_FILES(src/Makefile)
1246 AC_CONFIG_FILES(src/icons/Makefile)
1247 if test -d $srcdir/tools; then
1248 AC_CONFIG_FILES(tools/Makefile)
1250 if test -d $srcdir/tutorial; then
1251 AC_CONFIG_FILES(tutorial/Makefile)
1255 AC_CONFIG_FILES(tests/inputs/Makefile)
1256 AC_CONFIG_FILES(tests/golden/Makefile)
1257 AC_CONFIG_FILES(tests/golden/hid_bom1/Makefile)
1258 AC_CONFIG_FILES(tests/golden/hid_bom2/Makefile)
1259 AC_CONFIG_FILES(tests/golden/hid_bom3/Makefile)
1260 AC_CONFIG_FILES(tests/golden/hid_bom4/Makefile)
1261 AC_CONFIG_FILES(tests/golden/hid_gcode1/Makefile)
1262 AC_CONFIG_FILES(tests/golden/hid_gcode2/Makefile)
1263 AC_CONFIG_FILES(tests/golden/hid_gcode3/Makefile)
1264 AC_CONFIG_FILES(tests/golden/hid_gcode4/Makefile)
1265 AC_CONFIG_FILES(tests/golden/hid_gcode5/Makefile)
1266 AC_CONFIG_FILES(tests/golden/hid_gcode6/Makefile)
1267 AC_CONFIG_FILES(tests/golden/hid_gcode7/Makefile)
1268 AC_CONFIG_FILES(tests/golden/hid_gcode8/Makefile)
1269 AC_CONFIG_FILES(tests/golden/hid_gcode9/Makefile)
1270 AC_CONFIG_FILES(tests/golden/hid_gcode10/Makefile)
1271 AC_CONFIG_FILES(tests/golden/hid_gcode11/Makefile)
1272 AC_CONFIG_FILES(tests/golden/hid_gerber1/Makefile)
1273 AC_CONFIG_FILES(tests/golden/hid_gerber2/Makefile)
1274 AC_CONFIG_FILES(tests/golden/hid_png1/Makefile)
1275 AC_CONFIG_FILES(tests/golden/hid_png2/Makefile)
1276 AC_CONFIG_FILES(tests/golden/hid_png3/Makefile)
1277 AC_CONFIG_FILES(tests/Makefile)
1279 dnl win32 build scripts
1280 AC_CONFIG_FILES(win32/Makefile)
1282 dnl GTS 0.7.6 - http://gts.sourceforge.net/
1283 AC_CONFIG_FILES(gts/Makefile)
1287 with_gui=`echo $with_gui`
1288 with_printer=`echo $with_printer`
1289 with_exporters=`echo $with_exporters | sed 's/,/ /g'`
1291 expandedXDGDATADIR=`eval "echo $XDGDATADIR"`
1292 expandedKDEDATADIR=`eval "echo $KDEDATADIR"`
1295 ** Configuration summary for $PACKAGE $VERSION:
1298 Printer: $with_printer
1299 Exporters: $with_exporters
1300 Source tree distribution: $pcb_sources
1301 Build documentation: $docs_yesno
1302 Build toporouter: $enable_toporouter
1303 Enable toporouter output: $enable_toporouter_output
1304 xdg data directory: $expandedXDGDATADIR
1305 KDE data directory: $expandedKDEDATADIR
1306 dmalloc debugging: $with_dmalloc
1307 ElectricFence debugging: $with_efence
1309 Cross Compiling: $cross_compiling