1 dnl Process this file with autoconf to produce a configure script.
3 AC_INIT([pcb], [4.0.0])
4 AC_CONFIG_SRCDIR([src/draw.c])
6 AM_INIT_AUTOMAKE([1.9])
8 AC_CONFIG_HEADERS([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 dnl determine host type
75 AC_MSG_CHECKING(for windows)
76 PCB_PATH_DELIMETER=":"
77 PCB_DIR_SEPARATOR_S="/"
78 PCB_DIR_SEPARATOR_C='/'
82 CFLAGS="$CFLAGS ${MINGW_CFLAGS:--mms-bitfields -mwindows}"
83 CPPFLAGS="$CPPFLAGS ${MINGW_CPPFLAGS}"
93 AM_CONDITIONAL(WIN32, test x$WIN32 = xyes)
94 if test "x$WIN32" = "xyes" ; then
95 PCB_PATH_DELIMETER=";"
96 PCB_DIR_SEPARATOR_S="\\\\"
97 PCB_DIR_SEPARATOR_C='\\'
100 AC_DEFINE_UNQUOTED(PCB_DIR_SEPARATOR_C,'$PCB_DIR_SEPARATOR_C',[Directory separator char])
101 AC_DEFINE_UNQUOTED(PCB_DIR_SEPARATOR_S,"$PCB_DIR_SEPARATOR_S",[Directory separator string])
102 AC_DEFINE_UNQUOTED(PCB_PATH_DELIMETER,"$PCB_PATH_DELIMETER",[Search path separator string])
105 dnl Checks for programs.
109 if test "x$WIN32" = "xyes" ; then
110 AC_CHECK_TOOL(WINDRES, windres, [no])
111 if test "$WINDRES" = "no" ; then
112 AC_MSG_ERROR([*** Could not find an implementation of windres in your PATH.])
117 GETTEXT_PACKAGE=$PACKAGE
118 AH_TEMPLATE([GETTEXT_PACKAGE], [Name of this program's gettext domain])
119 AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], ["$GETTEXT_PACKAGE"])
120 AC_SUBST(GETTEXT_PACKAGE)
122 AM_GNU_GETTEXT_VERSION([0.19.3])
124 IT_PROG_INTLTOOL([0.35.0])
132 AC_MSG_CHECKING([that C compiler supports C99])
133 if test "X$ac_cv_prog_cc_c99" = "Xno"; then
135 AC_MSG_ERROR([A C99-compliant compiler is requred])
144 AC_PATH_PROG(LEX_PATH, $LEX, [notfound])
145 if test "$LEX_PATH" = "notfound" ; then
146 AC_MSG_ERROR([Couldn't find a usable lex program.
147 Please install flex which is available from
148 ftp://ftp.gnu.org/pub/non-gnu/flex/
154 AC_PATH_PROG(YACC_PATH, $YACC, [notfound])
155 if test "$YACC_PATH" = "notfound" ; then
156 AC_MSG_ERROR([Couldn't find a usable yacc program.
157 Please install bison which is available from
158 ftp://ftp.gnu.org/pub/gnu/bison/
166 # Used for building the icons
168 AC_PATH_PROG(XPMTOPPM, xpmtoppm, notfound)
169 AC_PATH_PROG(PPMTOWINICON, ppmtowinicon, notfound)
170 AC_PATH_PROG(CONVERT, convert, notfound)
172 ##########################################################################
175 if test "X$docs_yesno" = "Xyes" -a "X$pcb_git_version" = "Xyes" ; then
176 AC_PATH_PROG(MKINFO, makeinfo, no)
177 if test "X$MKINFO" != "Xno"; then
178 AC_MSG_CHECKING([for GNU makeinfo version >= 4.6])
179 v=`$MKINFO --version | grep "GNU texinfo"`
180 if test $? -ne 0; then
181 AC_MSG_RESULT([non-GNU])
185 if test "X$MKINFO" != "Xno"; then
186 vmajor=`echo "$v" | sed 's/.* \([[0-9]]*\)\.\([[0-9]]*\)$/\1/'`
187 vminor=`echo "$v" | sed 's/.* \([[0-9]]*\)\.\([[0-9]]*\)$/\2/'`
188 AC_MSG_RESULT([$vmajor.$vminor])
189 if test "$vmajor" -lt 4 \
190 || (test "$vmajor" -eq 4 && test "$vminor" -lt 6); then
194 if test "X$MKINFO" = "Xno"; then
195 AC_MSG_ERROR([You have requested a build
196 of the documentation. For this to work, you must have version 4.6 or newer of
197 the GNU texinfo package. You seem to have
201 Please update to a newer version of texinfo or disable building of
202 the documentation with --disable-doc
206 AC_PATH_PROG(TEXI2DVI, texi2dvi, no)
207 if test "X$TEXI2DVI" = "Xno"; then
208 AC_MSG_ERROR([You have requested a build
209 of the documentation. For this to work, you must have the texi2dvi program
210 installed. Alternatively, you can disable building the documentation with
215 AC_PATH_PROG(PERL, perl, notfound)
216 if test "X$PERL" = "Xnotfound"; then
217 AC_MSG_ERROR([You have requested a build
218 of the documentation. For this to work, you must have perl installed.
219 Alternatively, you can disable building the documentation with
225 AC_PATH_PROG([KPSEWHICH], [kpsewhich], [no])
226 if test "X$KPSEWHICH" = "Xno"; then
227 AC_MSG_ERROR([You have requested a build
228 of the documentation. For this to work, you must have a functional install of
229 TeX and LaTeX. kpsewhich is part of TeX.
230 Alternatively, you can disable building the documentation with
234 AC_MSG_CHECKING([If your TeX installation contains epsf.tex])
235 f=`$KPSEWHICH epsf.tex`
236 if test $? -eq 0 ; then
237 AC_MSG_RESULT([yes ($f)])
240 AC_MSG_ERROR([You have requested a build
241 of the documentation. For this to work, you must have a functional install of
242 TeX and LaTeX that includes epsf.tex. On some linux distributions this is
243 part of the texlive-generic-recommended package.
244 Alternatively, you can disable building the documentation with
250 ##########################################################################
254 # FIXME: for now, only try to add -rdynamic if we're using gcc. We really
255 # need to figure out what the correct test is here. In the mean time, this
256 # should let things build with SunPRO again.
257 if test "x$GCC" = "xyes"; then
258 AC_MSG_CHECKING([If the compiler accepts -rdynamic])
259 old_LDFLAGS="$LDFLAGS"
260 LDFLAGS="$LDFLAGS -rdynamic"
261 AC_LINK_IFELSE([AC_LANG_PROGRAM()],
262 [AC_MSG_RESULT([yes])],
263 [LDFLAGS="$old_LDFLAGS"
268 # ------------- HID config -------------------
275 for hid in `cd $srcdir/src/hid; echo *`; do
276 F=$srcdir/src/hid/$hid/hid.conf
282 gui ) hid_guis="$hid_guis $hid" ;;
283 printer ) hid_printers="$hid_printers $hid" ;;
284 export ) hid_exporters="$hid_exporters $hid" ;;
285 always ) hid_always="$hid_always $hid" ;;
290 AC_MSG_CHECKING([for which gui to use])
292 [ --with-gui= Specify the GUI to use: batch gtk lesstif [[default=gtk]]],
296 AC_MSG_RESULT([$with_gui])
297 case " $hid_guis no none " in
298 *\ $with_gui\ * ) HIDLIST="$with_gui" ;;
299 * ) AC_MSG_ERROR([$with_gui is not a valid gui]) ;;
302 if test x"$with_gui" = x"none" -o x"$with_gui" = x"no"
307 AC_MSG_CHECKING([whether to enable toporouter])
308 AC_ARG_ENABLE([toporouter],
309 [AS_HELP_STRING([--enable-toporouter], [build toporouter [default=yes]]) ]
311 AS_CASE(["x$enable_toporouter"],[xyes | xno],,
312 [enable_toporouter=yes
315 AC_MSG_RESULT([$enable_toporouter])
316 AM_CONDITIONAL([WITH_TOPOROUTER], test $enable_toporouter != no)
318 AC_MSG_CHECKING([whether to enable toporouter output])
319 AC_ARG_ENABLE([toporouter-output],
320 [AS_HELP_STRING([--enable-toporouter-output], [enable toporouter graphical output [default=no]]) ]
322 AS_CASE(["z$enable_toporouter_output"],[zyes | zno],,
323 [enable_toporouter_output=no]
325 AC_MSG_RESULT([$enable_toporouter_output])
326 AS_CASE([$enable_toporouter_output],[yes],
328 topo_output_enabled=1
331 topo_output_enabled=0
334 AC_DEFINE_UNQUOTED([TOPO_OUTPUT_ENABLED], [$topo_output_enabled],
335 [Define to 1 to enable toporouter graphical output]
338 PKG_PROG_PKG_CONFIG()
340 if test "x$enable_toporouter_output" = "xyes"; then
341 PKG_CHECK_MODULES(CAIRO, cairo,,
342 [AC_MSG_ERROR([Cannot find cairo, needed by the toporouter
343 Please review the following errors:
348 AC_MSG_CHECKING([for whether to use DBUS])
349 AC_ARG_ENABLE([dbus],
350 [ --enable-dbus Enable DBUS IPC],
352 case " $with_gui " in
353 *\ gtk\ *) enable_dbus=yes ;;
354 *\ lesstif\ *) enable_dbus=yes ;;
355 * ) enable_dbus=no ;;
359 AC_MSG_RESULT([$enable_dbus])
360 AM_CONDITIONAL(WITH_DBUS, test x$enable_dbus = xyes)
362 if test "x$enable_dbus" = "xyes"; then
363 case " $with_gui " in
366 * ) AC_MSG_ERROR([DBUS enabled but only works with a mainloop capable GUI HID.
367 Either do not use --enable-dbus or enable the gtk or lesstif GUI HID.])
370 PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.61,
372 LIBS="$LIBS $DBUS_LIBS"
373 AC_CHECK_FUNCS(dbus_watch_get_unix_fd)
374 LIBS="$saved_LIBS" ],
375 [AC_MSG_ERROR([Cannot find dbus-1 >= 0.61, install it and rerun ./configure
376 Please review the following errors:
379 DBUS_VERSION=`$PKG_CONFIG dbus-1 --modversion`
381 AC_DEFINE([HAVE_DBUS], 1,
382 [Define to 1 if DBUS IPC is to be compiled in])
387 AC_MSG_CHECKING([for whether to use GL drawing])
389 [ --enable-gl Enable GL drawing (with GTK HID)],
391 case " $with_gui " in
392 *\ gtk\ *) enable_gl=yes;;
396 AC_MSG_RESULT([$enable_gl])
397 AM_CONDITIONAL(USE_GL, test x$enable_gl = xyes)
399 if test "x$enable_gl" = "xyes"; then
400 case " $with_gui " in
402 * ) AC_MSG_ERROR([GL drawing enabled but only works with the GTK HID.
403 Either do not use --enable-gl or enable the gtk HID.])
408 AS_IF([test X$no_gl = Xyes],
409 [AC_MSG_FAILURE([OpenGL is required.])])
412 AS_IF([test X$no_glu = Xyes],
413 [AC_MSG_FAILURE([The OpenGL GLU library is required.])])
415 AC_DEFINE([ENABLE_GL], 1,
416 [Define to 1 if GL support is to be compiled in])
419 AC_MSG_CHECKING([for which printer to use])
420 AC_ARG_WITH([printer],
421 [ --with-printer= Specify the printer: lpr [[default=lpr]]],
422 [],[with_printer=lpr])
423 AC_MSG_RESULT([$with_printer])
424 case " $hid_printers " in
425 *\ $with_printer\ * )
426 HIDLIST="$HIDLIST $with_printer"
428 * ) AC_MSG_ERROR([$with_printer is not a valid printer]) ;;
431 AC_MSG_CHECKING([for which exporters to use])
432 AC_ARG_WITH([exporters],
433 [ --with-exporters= Enable export devices: bom gerber gcode nelma png ps ipcd356 [[default=bom gerber gcode nelma png ps ipcd356]]],
434 [],[with_exporters=$hid_exporters])
435 AC_MSG_RESULT([$with_exporters])
436 for e in `echo $with_exporters | sed 's/,/ /g'`; do
437 case " $hid_exporters " in
439 HIDLIST="$HIDLIST $e"
441 * ) AC_MSG_ERROR([$e is not a valid exporter]) ;;
445 if test "X$enable_jpeg" = "Xno" -a "X$enable_gif" = "Xno" -a "X$enable_png" = "Xno" ; then
446 case " ${HIDLIST} " in
448 AC_MSG_ERROR([you have requested the png HID but turned off all output
449 formats! If you do not want gif/jpeg/png output, use --with-exporters to list
450 which exporters you want and do not list png there.])
458 for hid in $HIDLIST; do
459 F=$srcdir/src/hid/$hid/hid.conf
461 echo checking $hid dependencies
465 if test "X`echo $HIDLIST | grep $dep`" = "X"; then
466 AC_MSG_ERROR([you have requested the $hid HID but not the $dep HID, which it depends on])
472 for e in $HIDLIST; do
473 HIDLIBS="$HIDLIBS lib$e.a"
479 # ------------- end HID config -------------------
481 ######################################################################
483 # desktop integration
486 AC_PATH_PROG(SETENV, env, [])
487 AC_PATH_PROG(GTK_UPDATE_ICON_CACHE_BIN, gtk-update-icon-path, [true])
489 # Change default location for XDG files (MIME and Icons)
490 AC_ARG_WITH(xdgdatadir, [ --with-xdgdatadir=path Change where the theme icons
491 and mime registrations are installed [[DATADIR]]], [opt_xdgdatadir=$withval])
493 # Change default location for KDE data files (KDE MIME registrations)
494 AC_ARG_WITH(kdedatadir, [ --with-kdedatadir=path Change where the KDE mime reg
495 istrations are installed [[DATADIR]]], [opt_kdedatadir=$withval])
497 if test x$opt_xdgdatadir = x; then
498 # path was not specified with --with-xdgdatadir
499 XDGDATADIR='${datadir}'
501 # path WAS specified with --with-xdgdatadir
502 XDGDATADIR="$opt_xdgdatadir"
506 if test x$opt_kdedatadir = x; then
507 # path was not specified with --with-kdedatadir
508 KDEDATADIR='${datadir}'
510 # path WAS specified with --with-kdedatadir
511 KDEDATADIR="$opt_kdedatadir"
515 AC_ARG_ENABLE(update-desktop-database,
516 AC_HELP_STRING([--disable-update-desktop-database],
517 [do not update desktop database after installation]),,
518 enable_update_desktop_database=yes)
520 AM_CONDITIONAL(ENABLE_UPDATE_DESKTOP_DATABASE, test x$enable_update_desktop_database = xyes)
522 if test x$enable_update_desktop_database = xyes ; then
523 AC_PATH_PROG(UPDATE_DESKTOP_DATABASE, [update-desktop-database], no)
524 if test $UPDATE_DESKTOP_DATABASE = no; then
525 AC_MSG_ERROR([Cannot find update-desktop-database, make sure it is installed and in your PATH, or configure with --disable-update-desktop-database])
529 AC_ARG_ENABLE(update-mime-database,
530 AC_HELP_STRING([--disable-update-mime-database],
531 [do not update mime database after installation]),,
532 enable_update_mime_database=yes)
534 AM_CONDITIONAL(ENABLE_UPDATE_MIME_DATABASE, test x$enable_update_mime_database = xyes)
536 if test x$enable_update_mime_database = xyes ; then
537 AC_PATH_PROG(UPDATE_MIME_DATABASE, [update-mime-database], no)
538 if test $UPDATE_MIME_DATABASE = no; then
539 AC_MSG_ERROR([Cannot find update-mime-database, make sure it is installed and in your PATH, or configure with --disable-update-mime-database])
544 ######################################################################
546 AC_PATH_PROGS(M4, gm4 m4, [none])
547 if test "X$M4" = "Xnone" ; then
548 AC_MSG_ERROR([Did not find a m4 executible. You need to make sure
549 that m4 is installed on your system and that m4 is in your path])
551 AC_MSG_CHECKING([if $M4 has the division involving negative numbers bug])
552 pcb_m4_r=`echo "eval(-2/2)" | $M4`
553 if test "$pcb_m4_r" != "-1" ; then
555 AC_MSG_ERROR([It appears that $M4 has a bug involving division
556 with negative numbers. In particular it just returned the result that
557 -2/2 = $pcb_m4_r instead of -1. This is a known bug in GNU m4-1.4.9. Please
558 install a non-broken m4.])
564 AC_PATH_PROGS(WISH, wish wish85 wish8.5 wish83 wish8.3 wish80 wish8.0 cygwish83 cygwish80,[none])
565 if test "X$WISH" = "Xnone" ; then
566 AC_MSG_ERROR([Did not find the wish executible. You need to make sure
567 that tcl is installed on your system and that wish is in your path])
570 AC_DEFINE_UNQUOTED(M4,$M4,[m4 executible])
573 AC_DEFINE_UNQUOTED(GNUM4,"$M4",[m4 program used by pcb])
575 AC_PATH_PROG(PDFLATEX, pdflatex, notfound)
576 AM_CONDITIONAL(MISSING_PDFLATEX, test x$PDFLATEX = xnotfound)
578 AC_PATH_PROG(TEXI2DVI, texi2dvi, notfound)
579 AM_CONDITIONAL(MISSING_TEXI2DVI, test x$TEXI2DVI = xnotfound)
581 AC_PATH_PROG(PS2PDF, ps2pdf, notfound)
582 AM_CONDITIONAL(MISSING_PS2PDF, test x$PS2PDF = xnotfound)
584 # used to build some of the getting started guide
585 AC_PATH_PROG(GSCHEM, gschem, notfound)
586 AM_CONDITIONAL(MISSING_GSCHEM, test x$GSCHEM = xnotfound)
588 if test "X$docs_yesno" = "Xyes" -a "X$pcb_git_version" = "Xyes" ; then
589 if test "$PDFLATEX" = "notfound" -o "$TEXI2DVI" = "notfound" -o "$PS2PDF" = "notfound" ; then
590 AC_MSG_ERROR([It appears that you are building from a source tree obtained
591 via git but you do not have the required tools installed to build the documentation. Here
592 is a list of tools and the detected values:
598 Either make sure these tools are installed or disable building and installing the documentation
599 by using the --disable-doc configure option.
604 ############################################################################
606 # These checks are for tools used by the testsuite. It will not be fatal
607 # if these are missing because this is primarily for developer use. It is
608 # possible that we might add some --enable flag in the future that forces
609 # full tools for development work.
611 # Check for ImageMagick tools used by the testsuite
612 AC_PATH_PROG(IM_ANIMATE, animate, notfound)
613 AC_PATH_PROG(IM_COMPARE, compare, notfound)
614 AC_PATH_PROG(IM_COMPOSITE, composite, notfound)
615 AC_PATH_PROG(IM_CONVERT, convert, notfound)
616 AC_PATH_PROG(IM_DISPLAY, display, notfound)
617 AC_PATH_PROG(IM_MONTAGE, montage, notfound)
619 test "${IM_ANIMATE}" != "notfound" || missing_magick="${missing_magick} animate"
620 test "${IM_COMPARE}" != "notfound" || missing_magick="${missing_magick} compare"
621 test "${IM_COMPOSITE}" != "notfound" || missing_magick="${missing_magick} composite"
622 test "${IM_CONVERT}" != "notfound" || missing_magick="${missing_magick} convert"
623 test "${IM_DISPLAY}" != "notfound" || missing_magick="${missing_magick} display"
624 test "${IM_MONTAGE}" != "notfound" || missing_magick="${missing_magick} montage"
626 AC_MSG_CHECKING([if all ImageMagick tools needed for the testsuite were found])
627 if test "X${missing_magick}" != "X" ; then
628 AC_MSG_RESULT([no. The testsuite will be disabled because the following
629 tools from the ImageMagick suite were not found:
631 No loss in pcb functionality should be experienced, you just will not
632 be able to run the full regression testsuite.
642 test $have_magick = yes || have_test_tools=no
644 # the RS274-X export HID is partially checked by looking at the result with
646 AC_PATH_PROG(GERBV, gerbv, notfound)
647 test $GERBV != notfound || have_test_tools=no
650 AM_CONDITIONAL(HAVE_TEST_TOOLS, test x$have_test_tools = xyes)
651 AC_MSG_CHECKING([if all the required testsuite tools were found])
652 if test x$have_test_tools = xyes ; then
655 AC_MSG_RESULT([no -- the testsuite will be disabled])
660 ############################################################################
663 dnl Checks for libraries.
664 AC_CHECK_LIB(m, sqrt)
665 AC_CHECK_LIB(dl, dlopen)
666 AC_CHECK_LIB(xnet, gethostbyname)
667 AC_CHECK_LIB(fl, yywrap)
669 dnl Checks for functions
670 AC_CHECK_FUNCS(getline)
671 AC_CHECK_FUNCS(strcasestr)
672 AC_CHECK_FUNCS(strerror)
673 AC_CHECK_FUNCS(regcomp re_comp)
674 AC_CHECK_FUNCS(logf expf rint)
675 AC_CHECK_FUNCS(vsnprintf)
676 AC_CHECK_FUNCS(getpwuid getcwd)
677 AC_CHECK_FUNCS(rand random)
680 AC_CHECK_FUNCS(mkdtemp)
682 # normally used for all file i/o
683 AC_CHECK_FUNCS(popen)
686 AC_CHECK_FUNCS(realpath canonicalize_file_name)
687 libiberty_NEED_DECLARATION(canonicalize_file_name)
689 # for pcb_spawnvp in action.c on Windows
690 AC_CHECK_FUNCS(_spawnvp)
693 AC_CHECK_HEADERS(limits.h locale.h string.h sys/types.h regex.h pwd.h)
694 AC_CHECK_HEADERS(sys/socket.h netinet/in.h netdb.h sys/param.h sys/times.h sys/wait.h)
695 AC_CHECK_HEADERS(dlfcn.h)
697 if test "x${WIN32}" = "xyes" ; then
698 AC_CHECK_HEADERS(windows.h)
701 PKG_CHECK_MODULES(GLIB, glib-2.0, ,
702 [AC_MSG_RESULT([Note: cannot find glib-2.0.
703 You may want to review the following errors:
712 for e in $HIDLIST; do
716 save_CPPFLAGS="$CPPFLAGS"
718 AC_CHECK_LIB(X11, XOpenDisplay, , , $X_LIBS)
719 AC_CHECK_LIB(ICE, main, , , $X_LIBS)
720 AC_CHECK_LIB(SM, main, , , $X_LIBS)
721 AC_CHECK_LIB(Xext, main, , , $X_LIBS)
722 AC_CHECK_LIB(Xt, XtOpenDisplay, , , $X_LIBS)
723 AC_CHECK_LIB(Xmu, main, , , $X_LIBS)
724 AC_CHECK_LIB(Xpm, main, , , $X_LIBS)
725 AC_CHECK_LIB(Xm, XmCreateMainWindow, , , $X_LIBS)
726 CPPFLAGS="$save_CPPFLAGS"
727 case $ac_cv_lib_Xm_XmCreateMainWindow in
729 AC_MSG_ERROR([You don't seem to have the Lesstif development environment installed.])
733 AC_CHECK_HEADERS(Xm/Xm.h)
734 case $ac_cv_header_Xm_Xm_h in
736 AC_MSG_ERROR([You don't seem to have the Lesstif development environment installed.])
743 # Check for pkg-config
744 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
745 if test "$PKG_CONFIG" = "no"; then
746 AC_MSG_ERROR([Cannot find pkg-config, make sure it is installed and in your PATH])
749 PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.18.0, ,
750 [AC_MSG_ERROR([Cannot find gtk+ >= 2.18.0, install it and rerun ./configure
751 Please review the following errors:
754 GTK_VERSION=`$PKG_CONFIG gtk+-2.0 --modversion`
755 GLIB_VERSION=`$PKG_CONFIG glib-2.0 --modversion`
757 if test "x$enable_gl" = "xyes"; then
759 PKG_CHECK_MODULES(GTKGLEXT, gtkglext-1.0 >= 1.0.0, , [AC_MSG_ERROR([
760 *** Required version of gtkglext is not installed - please install first ***
761 Please review the following errors:
762 $GTKGLEXT_PKG_ERRORS])]
764 GTKGLEXT_VER=`$PKG_CONFIG gtkglext-1.0 --modversion`
771 AC_MSG_CHECKING([if GIF output from the png HID is desired])
773 [ --disable-gif Disable support for gif output when the png HID is used [[default=include gif support]]],
775 if test "X$enable_gif" != "Xno" ; then
787 AC_MSG_CHECKING([if JPEG output from the png HID is desired])
788 AC_ARG_ENABLE([jpeg],
789 [ --disable-jpeg Disable support for JPEG output when the png HID is used [[default=include JPEG support]]],
791 if test "X$enable_jpeg" != "Xno" ; then
803 AC_MSG_CHECKING([if PNG output from the png HID is desired])
805 [ --disable-png Disable support for PNG output when the png HID is used [[default=include PNG support]]],
807 if test "X$enable_png" != "Xno" ; then
828 if test "$need_gdlib" = "yes"; then
830 PKG_CHECK_MODULES(GDLIB, gdlib, ,
831 [AC_MSG_ERROR([Note: cannot find gdlib.
832 This is required for gcode, nelma, png HIDs
833 You may want to review the following errors:
837 LIBS="$LIBS $GDLIB_LIBS"
839 if test "X$with_gif" = "Xyes" ; then
840 AC_CHECK_FUNCS(gdImageGif)
841 if test "$ac_cv_func_gdImageGif" != "yes"; then
842 AC_MSG_ERROR([Your gd installation does not appear to include gif support.
843 You may need to update your installation of gd or disable
844 gif export with --disable-gif])
848 if test "X$with_jpeg" = "Xyes" ; then
849 AC_CHECK_FUNCS(gdImageJpeg)
850 if test "$ac_cv_func_gdImageJpeg" != "yes"; then
851 AC_MSG_ERROR([Your gd installation does not appear to include JPEG support.
852 You may need to update your installation of gd or disable
853 JPEG export with --disable-jpeg])
857 if test "X$with_png" = "Xyes" ; then
858 AC_CHECK_FUNCS(gdImagePng)
859 if test "$ac_cv_func_gdImagePng" != "yes"; then
860 AC_MSG_ERROR([Your gd installation does not appear to include PNG support.
861 You may need to update your installation of gd or disable
862 PNG export with --disable-png])
868 AM_CONDITIONAL(PNG, test x$with_png = xyes)
869 AM_CONDITIONAL(GIF, test x$with_gif = xyes)
871 # ------------- check if png previews should be built for pcblib-newlib
872 AC_MSG_CHECKING([if the m4lib to newlib export should create png previews])
875 [ --enable-m4lib-png Enable creating png previews for the m4 library],
876 [],[enable_m4lib_png=no])
877 AC_MSG_RESULT([$enable_m4lib_png])
878 AM_CONDITIONAL(PNG_PREVIEW, test x$enable_m4lib_png = xyes)
881 # Run away.... more ugly stuff here. By default we don't actually build
882 # pcblib-newlib from pcblib unless we are building from cvs or git sources.
883 # The reason is it takes a while and requires the png HID. The problem is,
884 # what if someone wants to use --enable-m4lib-png but the tarball was built
885 # without the previews. Or, what if someone does not want the PNG previews
886 # but the person building the tarball included them. Ugh! So what the following
887 # code attempts to do is detect that mismatch situation. Note that we only
888 # want to kick this code in when *not* building from git or cvs sources.
889 build_pcblib_newlib=no
890 if test "$pcb_sources" = "tarball" ; then
891 AC_MSG_CHECKING([If pcblib-newlib was built with png previews])
892 stamp=$srcdir/lib/pcblib-newlib.stamp
893 if test ! -f ${stamp} ; then
894 AC_MSG_RESULT([unknown, missing ${stamp}])
895 build_pcblib_newlib=yes
897 if test "`cat ${stamp}`" = "png-preview=yes" ; then
899 # lib exists and built with preview.
900 # if we don't want the preview, than rebuild
901 if test x$enable_m4lib_png != xyes ; then
902 build_pcblib_newlib=yes
906 # lib exists and built without preview.
907 # if we want the preview, than rebuild
908 if test x$enable_m4lib_png = xyes ; then
909 build_pcblib_newlib=yes
914 build_pcblib_newlib=yes
916 AC_MSG_CHECKING([If pcblib-newlib needs to be rebuilt])
917 AC_MSG_RESULT([$build_pcblib_newlib])
918 AM_CONDITIONAL(BUILD_PCBLIB_NEWLIB, test x$build_pcblib_newlib = xyes)
920 if test "X$cross_compiling" = "Xyes" ; then
921 # we are cross compiling so we will need a build host binary for pcb
922 AC_PATH_PROG(PCB, [pcb], [notfound])
924 PCB="\${top_builddir}/src/pcb"
928 # now make see how essential it was that we have a pcb executable for the build
930 if test "X$pcb_git_version" = "Xyes" ; then
931 if test "X$docs_yesno" = "Xyes" -o "X$enable_m4lib_png" = "Xyes" ; then
932 if test "$PCB" = "notfound" ; then
933 AC_MSG_ERROR([You have selected a build with m4lib png
934 previews enabled and/or with building the documentation enabled but you also
935 appear to be cross-compiling. For this to work, you must have a pcb installed that
936 can run on this machine (the build machine) because it is needed for generating
937 library footprint png previews as well as some of the figures in the documentation.
938 If you wish to skip building the documentation and the footprint previews then add
939 --disable-doc --disable-m4lib-png
940 This will allow your cross build to work.])
945 # ------------- Xrender -------------------
947 AC_CHECK_LIB(Xrender,XRenderQueryExtension,have_xrender=yes,have_xrender=no,$X_LIBS)
949 AC_ARG_ENABLE([xrender],
950 [ --disable-xrender Compile and link with Xrender [default=yes]])
951 case "$have_xrender:$enable_xrender" in
955 X_LIBS="-lXrender $X_LIBS"
956 AC_DEFINE([HAVE_XRENDER], 1,
957 [Define to 1 if Xrender is available])
961 # ------------- Xinerama -------------------
963 AC_CHECK_LIB(Xinerama,XineramaQueryExtension,have_xinerama=yes,have_xinerama=no,$X_LIBS)
965 AC_ARG_ENABLE([xinerama],
966 [ --disable-xinerama Compile and link with Xinerama [default=yes]])
967 case "$have_xinerama:$enable_xinerama" in
971 X_LIBS="-lXinerama $X_LIBS"
972 AC_DEFINE([HAVE_XINERAMA], 1,
973 [Define to 1 if Xinerama is available])
977 # ------------- dmalloc -------------------
980 AC_MSG_CHECKING([if dmalloc debugging should be enabled])
981 AC_ARG_ENABLE([dmalloc],
982 [ --enable-dmalloc Compile and link with dmalloc for malloc debugging [default=no]],
984 if test "X$enable_dmalloc" != "Xno" ; then
986 AC_CHECK_HEADER(dmalloc.h,,
987 AC_MSG_ERROR([You have requested dmalloc debugging but dmalloc.h could not be found]))
988 AC_CHECK_LIB(dmalloc,main,,
989 AC_MSG_ERROR([You have requested dmalloc debugging but -ldmalloc could not be found]))
990 DMALLOC_LIBS="-ldmalloc"
1002 # ------------- ElectricFence -------------------
1003 dnl ElectricFence checks
1005 AC_MSG_CHECKING([if ElectricFence debugging should be enabled])
1006 AC_ARG_ENABLE([efence],
1007 [ --enable-efence Link with ElectricFence for malloc debugging [default=no]],
1009 if test "X$enable_efence" != "Xno" ; then
1010 AC_MSG_RESULT([yes])
1011 AC_CHECK_LIB(efence,main,,
1012 AC_MSG_ERROR([You have requested ElectricFence debugging but -lefence could not be found]))
1022 # ------------- Enable Debug code -------------------
1023 AC_MSG_CHECKING([for whether to enable debugging code])
1024 AC_ARG_ENABLE([debug],
1025 [ --enable-debug Enable debugging code],
1026 [],[enable_debug=no])
1028 AC_MSG_RESULT([$enable_debug])
1029 AM_CONDITIONAL(DEBUG_BUILD, test x$enable_debug = xyes)
1031 # ------------- mkdir required for win32 compatibility ------------
1032 # WIN32 mkdir takes only one argument, POSIX takes two.
1033 # #include "misc.h" where mkdir is required.
1034 m4_include([m4/m4_ax_func_mkdir.m4])
1037 # ------------- Type used for "Coord" type -------------------
1039 AC_CHECK_HEADERS(stdint.h)
1040 AC_ARG_ENABLE([coord64],
1041 [ --enable-coord64 Force 64-bit coordinate types],
1042 [],[enable_coord64=no])
1043 AC_ARG_ENABLE([coord32],
1044 [ --enable-coord32 Force 32-bit coordinate types],
1045 [],[enable_coord32=no])
1049 echo "$enable_coord32:$enable_coord64:$ac_cv_header_stdint_h"
1050 case "$enable_coord32:$enable_coord64:$ac_cv_header_stdint_h" in
1052 COORD_TYPE="int32_t"
1053 COORD_MAX="INT32_MAX"
1056 COORD_TYPE="int64_t"
1057 COORD_MAX="INT64_MAX"
1064 COORD_TYPE="long long"
1065 COORD_MAX="LLONG_MAX"
1068 AC_MSG_ERROR("*** cannot require both 32 and 64 bit coordinates")
1072 COORD_MAX="LONG_MAX"
1075 AC_DEFINE_UNQUOTED([COORD_TYPE],[$COORD_TYPE],
1076 [C type for Coordinates])
1077 AC_DEFINE_UNQUOTED([COORD_MAX],[$COORD_MAX],
1078 [Maximum value of coordinate type])
1080 # ------------- Complete set of CPPFLAGS and LIBS -------------------
1082 CPPFLAGS="$CPPFLAGS $X_CFLAGS $DBUS_CFLAGS $GDLIB_CFLAGS $GLIB_CFLAGS $GTK_CFLAGS $GD_CFLAGS $CAIRO_CFLAGS $GTKGLEXT_CFLAGS $GLU_CFLAGS $GL_CFLAGS"
1083 LIBS="$LIBS $XM_LIBS $DBUS_LIBS $X_LIBS $GDLIB_LIBS $GLIB_LIBS $GTK_LIBS $DMALLOC_LIBS $GD_LIBS $INTLLIBS $CAIRO_LIBS $GTKGLEXT_LIBS $GLU_LIBS $GL_LIBS"
1086 # if we have gcc then add -Wall
1087 if test "x$GCC" = "xyes"; then
1088 # see about adding some extra checks if the compiler takes them
1089 for flag in -Wall ; do
1090 case " ${CFLAGS} " in
1092 # flag is already present
1095 AC_MSG_CHECKING([if the compiler accepts ${flag}])
1096 ac_save_CFLAGS="$CFLAGS"
1097 CFLAGS="$CFLAGS ${flag}"
1098 AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
1099 [AC_MSG_RESULT([yes])],
1100 [AC_MSG_RESULT([no])
1101 CFLAGS="$ac_save_CFLAGS"
1111 # Now add C-specific flags
1112 if test "x$GCC" = "xyes"; then
1113 # see about adding some extra checks if the compiler takes them
1114 for flag in -Wdeclaration-after-statement ; do
1115 case " ${CFLAGS} " in
1117 # flag is already present
1120 AC_MSG_CHECKING([if the compiler accepts ${flag}])
1121 ac_save_CFLAGS="$CFLAGS"
1122 CFLAGS="$CFLAGS ${flag}"
1123 AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
1124 [AC_MSG_RESULT([yes])],
1125 [AC_MSG_RESULT([no])
1126 CFLAGS="$ac_save_CFLAGS"
1134 # See if we are building gcc with C++.
1135 AC_ARG_ENABLE(build-with-cxx,
1136 [ --enable-build-with-cxx build with C++ compiler instead of C compiler],
1137 ENABLE_BUILD_WITH_CXX=$enableval,
1138 ENABLE_BUILD_WITH_CXX=no)
1140 case "$ENABLE_BUILD_WITH_CXX" in
1151 FONTFILENAME=${FONTFILENAME:-"default_font"}
1152 AC_SUBST(FONTFILENAME)
1153 AC_DEFINE_UNQUOTED(FONTFILENAME,"$FONTFILENAME",[File for default font])
1155 # standard autoconf variables
1156 CPPFLAGS="$CPPFLAGS -DPREFIXDIR=\\\"\${prefix}\\\""
1157 CPPFLAGS="$CPPFLAGS -DBINDIR=\\\"\${bindir}\\\""
1158 CPPFLAGS="$CPPFLAGS -DHOST=\\\"\${host}\\\""
1160 # directory for old-style library and for fonts
1161 PCBLIBDIR=${datadir}/pcb
1163 #AC_DEFINE_UNQUOTED(PCBLIBDIR,"$PCBLIBDIR",[Library directory])
1164 CPPFLAGS="$CPPFLAGS -DPCBLIBDIR=\\\"$PCBLIBDIR\\\""
1166 # name for old-style library
1167 LIBRARYFILENAME=pcblib
1168 AC_SUBST(LIBRARYFILENAME)
1169 AC_DEFINE_UNQUOTED(LIBRARYFILENAME,"$LIBRARYFILENAME",[library file name])
1172 # directory for new library
1173 PCBTREEDIR=${datadir}/pcb/newlib
1174 PCBTREEPATH=${PCBTREEDIR}:${PCBLIBDIR}/pcblib-newlib
1175 PCBTREEDIR=${PCBTREEDIR:-"$PCBTREEDIR"}
1176 AC_SUBST(PCBTREEDIR)
1177 AC_SUBST(PCBTREEPATH)
1178 #AC_DEFINE_UNQUOTED(PCBTREEDIR,"$PCBLIB",[top directory for new style pcb library])
1179 CPPFLAGS="$CPPFLAGS -DPCBTREEDIR=\\\"$PCBTREEDIR\\\""
1180 CPPFLAGS="$CPPFLAGS -DPCBTREEPATH=\\\"$PCBTREEPATH\\\""
1182 # Figure out relative paths
1183 AC_MSG_CHECKING([for the bindir to pcblibdir relative path])
1184 adl_COMPUTE_RELATIVE_PATHS([bindir:PCBLIBDIR:bindir_to_pcblibdir])
1185 adl_NORMALIZE_PATH([bindir_to_pcblibdir], [$PCB_DIR_SEPARATOR_S])
1186 AC_MSG_RESULT([$bindir_to_pcblibdir])
1187 AC_DEFINE_UNQUOTED(BINDIR_TO_PCBLIBDIR, "$bindir_to_pcblibdir", [Relative path from bindir to pcblibdir])
1189 AC_MSG_CHECKING([for the bindir to pcbtreedir relative path])
1190 adl_COMPUTE_RELATIVE_PATHS([bindir:PCBTREEDIR:bindir_to_pcbtreedir])
1191 adl_NORMALIZE_PATH([bindir_to_pcbtreedir], [$PCB_DIR_SEPARATOR_S])
1192 AC_MSG_RESULT([$bindir_to_pcbtreedir])
1193 AC_DEFINE_UNQUOTED(BINDIR_TO_PCBTREEDIR, "$bindir_to_pcbtreedir", [Relative path from bindir to pcbtreedir])
1196 AC_MSG_CHECKING([for the bindir to exec_prefix relative path])
1197 adl_COMPUTE_RELATIVE_PATHS([bindir:exec_prefix:bindir_to_execprefix])
1198 adl_NORMALIZE_PATH([bindir_to_execprefix], [$PCB_DIR_SEPARATOR_S])
1199 AC_MSG_RESULT([$bindir_to_execprefix])
1200 AC_DEFINE_UNQUOTED(BINDIR_TO_EXECPREFIX, "$bindir_to_execprefix", [Relative path from bindir to exec_prefix])
1203 BTNMOD=${BTNMOD:-"Mod1"}
1207 for dir in src lib newlib doc example tools tutorial README_FILES
1209 test -d $dir/. && TOPDIRS="$TOPDIRS $dir"
1213 AC_CONFIG_FILES(Makefile data/Makefile intl/Makefile po/Makefile.in)
1215 if test -d $srcdir/README_FILES; then
1216 AC_CONFIG_FILES(README_FILES/Makefile)
1218 if test -d $srcdir/doc; then
1219 AC_CONFIG_FILES(doc/Makefile)
1221 if test -d $srcdir/doc/gs; then
1222 AC_CONFIG_FILES(doc/gs/Makefile)
1223 AC_CONFIG_FILES(doc/gs/gafrc)
1224 AC_CONFIG_FILES(doc/gs/gschemrc)
1226 if test -d $srcdir/example; then
1227 AC_CONFIG_FILES(example/Makefile)
1228 AC_CONFIG_FILES(example/libraries/Makefile)
1230 if test -d $srcdir/lib; then
1231 AC_CONFIG_FILES(lib/CreateLibraryContents.sh)
1232 AC_CONFIG_FILES(lib/CreateLibrary.sh)
1233 AC_CONFIG_FILES(lib/ListLibraryContents.sh)
1234 AC_CONFIG_FILES(lib/Makefile)
1235 AC_CONFIG_FILES(lib/QueryLibrary.sh)
1236 AC_CONFIG_FILES(lib/qfp-ui)
1238 if test -d $srcdir/newlib; then
1239 AC_CONFIG_FILES(newlib/2_pin_thru-hole_packages/Makefile)
1240 AC_CONFIG_FILES(newlib/Makefile)
1241 AC_CONFIG_FILES(newlib/connectors/Makefile)
1242 AC_CONFIG_FILES(newlib/crystal/Makefile)
1243 AC_CONFIG_FILES(newlib/electro-optics/Makefile)
1244 AC_CONFIG_FILES(newlib/headers/Makefile)
1245 AC_CONFIG_FILES(newlib/keystone/Makefile)
1246 AC_CONFIG_FILES(newlib/msp430/Makefile)
1247 AC_CONFIG_FILES(newlib/not_vetted_ingo/Makefile)
1248 AC_CONFIG_FILES(newlib/sockets/Makefile)
1249 AC_CONFIG_FILES(newlib/tests/Makefile)
1251 AC_CONFIG_FILES(src/Makefile)
1252 AC_CONFIG_FILES(src/icons/Makefile)
1253 if test -d $srcdir/tools; then
1254 AC_CONFIG_FILES(tools/Makefile)
1256 if test -d $srcdir/tutorial; then
1257 AC_CONFIG_FILES(tutorial/Makefile)
1261 AC_CONFIG_FILES(tests/Makefile)
1263 dnl GTS 0.7.6 - http://gts.sourceforge.net/
1264 AC_CONFIG_FILES(gts/Makefile)
1266 dnl win32 build scripts
1267 AC_CONFIG_FILES(w32/Makefile)
1269 dnl for building under cygwin
1270 AC_CONFIG_FILES(win32/Makefile)
1274 with_gui=`echo $with_gui`
1275 with_printer=`echo $with_printer`
1276 with_exporters=`echo $with_exporters | sed 's/,/ /g'`
1278 expandedXDGDATADIR=`eval "echo $XDGDATADIR"`
1279 expandedKDEDATADIR=`eval "echo $KDEDATADIR"`
1282 ** Configuration summary for $PACKAGE $VERSION:
1284 Cross Compiling: $cross_compiling
1294 Printer: $with_printer
1295 Exporters: $with_exporters
1296 Coordinate type: $COORD_TYPE
1297 Source tree distribution: $pcb_sources
1298 Build documentation: $docs_yesno
1299 Build toporouter: $enable_toporouter
1300 Enable toporouter output: $enable_toporouter_output
1301 xdg data directory: $expandedXDGDATADIR
1302 KDE data directory: $expandedKDEDATADIR
1303 dmalloc debugging: $with_dmalloc
1304 ElectricFence debugging: $with_efence
1305 Regression tests enabled: $have_test_tools