1AC_DEFUN(ACX_FLAG,
2[
3	AC_LANG_CASE(C, cur_lang=C;, C++, cur_lang=C++;)dnl undocumented !
4	dnl if test x$ac_ext = xcc; then
5	if test x$cur_lang = xC++; then
6		AC_CACHE_CHECK(whether the C++ compiler supports $1, ac_cv_flag_cc_$2,
7			OLDCXXFLAGS="$CXXFLAGS"
8			CXXFLAGS="$CXXFLAGS $1"
9			[AC_TRY_LINK([],[int i=0],
10				ac_cv_flag_cc_$2=yes
11				$3,
12				ac_cv_flag_cc_$2=no
13				CXXFLAGS="$OLDCXXFLAGS"
14				$4
15			)]
16		)
17	else
18		AC_CACHE_CHECK(whether the C compiler supports $1, ac_cv_flag_c_$2,
19			OLDCFLAGS="$CFLAGS"
20			CFLAGS="$CFLAGS $1"
21			[AC_TRY_LINK([],[int i=0],
22				ac_cv_flag_c_$2=yes
23				$3,
24				ac_cv_flag_c_$2=no
25				CFLAGS="$OLDCFLAGS"
26				$4
27			)]
28		)
29	fi
30])
31
32AC_DEFUN(ACX_M_PI,
33[
34	AC_CACHE_CHECK(for M_PI, ac_cv_m_pi,
35		[AC_TRY_COMPILE([
36			#include <math.h>],[
37				double d = M_PI
38			],ac_cv_m_pi=yes,ac_cv_m_pi=no
39		)]
40	)
41	if test $ac_cv_m_pi = no; then
42		AC_DEFINE(M_PI, 3.14159265358979323846, [Define to the value of pi if you don't already have it])
43	fi
44])
45
46AC_DEFUN(ACX_NAMESPACE,
47[
48	AC_LANG_PUSH(C++)
49	AC_CACHE_CHECK(whether the C++ compiler needs std::, ac_cv_needstd,
50		[AC_TRY_COMPILE([#include <string>],
51			[string s],
52			ac_cv_needstd=no,
53			ac_cv_needstd=yes
54		)]
55	)
56	if test $ac_cv_needstd = no; then
57		AC_DEFINE(NO_NAMESPACE,, [Define if your compiler doesn't support namespaces])
58	fi
59	AC_LANG_POP(C++)
60])
61
62AC_DEFUN(ACX_FL_PIXMAP,
63[
64	AC_MSG_CHECKING([[whether Fl_Pixmap needs const char*const*]])
65	AC_TRY_COMPILE([
66		#include <FL/Enumerations.H>
67		#include <FL/Fl_Pixmap.H>],[
68		char *const abuf[] = { "a", "b" };
69		Fl_Pixmap pix(abuf)
70	],[AC_MSG_RESULT(no)],[AC_MSG_RESULT(yes)]
71	[AC_DEFINE_UNQUOTED(XPMCONST, const, [Define to const if your compiler complains about the constness of Fl_Pixmap])])
72])
73
74AC_DEFUN(ACX_FIND_FILE,
75[
76	AC_CACHE_CHECK(for $1, ac_cv_path_$4,
77		for i in $$3 $2;
78		do
79			if test -r "$i/$1"; then
80				$3=$i
81				ac_cv_path_$4=$i
82				break
83			fi
84		done
85		if test "$$3" = ""; then ac_cv_path_$4=no; fi
86	)
87])
88
89dnl parameters:
90dnl 1: header file, 2: name of lib, 3: function in lib,
91dnl 4: action if found, 5: action if not found
92AC_DEFUN(ACX_CHECK_LIB,
93[
94	success=no
95	AC_CHECK_HEADER($1,[AC_CHECK_LIB($2,$3,success=yes)])
96	if test x$success = xyes; then
97		LIBS="-l$2 $LIBS"
98		$4
99	else
100		:
101		$5
102	fi
103])
104
105AC_DEFUN(ACX_X_OR_WIN,
106[
107	AC_REQUIRE([AC_CANONICAL_HOST])dnl
108	case "$host_os" in
109		*cygwin* ) x_or_win=win;;
110		 *mingw* ) x_or_win=win;;
111		       * ) x_or_win=neither;
112	esac
113
114	if [test x$x_or_win = xwin]; then
115		CFLAGS="-mwindows $CFLAGS"
116		CXXFLAGS="-mwindows $CXXFLAGS"
117		LDFLAGS="-mwindows $LDFLAGS"
118		LIBS="-lgdi32 -luser32 -lglu32 -lmsvcrt -lwsock32 $LIBS"
119	else
120		AC_PATH_XTRA
121		if [test a$no_x = a]; then
122			x_or_win=x
123			dnl there's no direct reference to X11 in the code, so no CFLAGS required
124			LDFLAGS="$X_LIBS $LDFLAGS"
125			LIBS="-lX11 $X_EXTRA_LIBS $X_PRE_LIBS $LIBS"
126		fi
127	fi
128])
129
130# Add a variable $2 (e.g. "-L...") to $1, if it's not already contained
131AC_DEFUN(ACX_ADD_BEFORE,
132[
133	contained=no
134	for addvar in $$1; do
135		if test x$addvar = x$$2; then
136			contained=yes
137		fi
138	done
139	if test x$contained = xno; then
140		$1="$$2 $$1"
141	fi
142])
143
144# Add a variable $2 (e.g. "-L...") to $1, if it's not already contained
145AC_DEFUN(ACX_ADD_AFTER,
146[
147	contained=no
148	for addvar in $$1; do
149		if test x$addvar = x$$2; then
150			contained=yes
151		fi
152	done
153	if test x$contained = xno; then
154		$1="$$1 $$2"
155	fi
156])
157
158# $1: required api-version (1.1),
159# $2: action (--use-images --use-gl)
160# $3: action if success, $4: action if failure
161AC_DEFUN(ACX_FLTK_CONFIG,
162[
163	AC_PATH_PROG(FLTK,fltk-config)
164	if test a$FLTK != a; then
165
166		# look for fluid
167		if test x$FLUID = x; then
168			FLUID=`$FLTK --exec-prefix`/bin/fluid$EXEEXT
169		fi
170		AC_SUBST(FLUID)
171
172		# check api-version
173		if test x$1 != x; then
174			FLTK_API_VERSION=`$FLTK --api-version`
175			if test x$1 != x$FLTK_API_VERSION; then
176				AC_MSG_WARN([FLTK: api version $1 required, but $FLTK_API_VERSION found.])
177			fi
178		fi
179
180		# add requested flags to LDFLAGS
181		FLTK_LDFLAGS=`$FLTK $2 --ldflags`
182		FLTK_LDFLAGS_REVERSE=""
183		for acx_var in $FLTK_LDFLAGS; do
184			FLTK_LDFLAGS_REVERSE="$acx_var $FLTK_LDFLAGS_REVERSE"
185		done
186		for acx_var in $FLTK_LDFLAGS_REVERSE; do
187			case "$acx_var" in
188				-l*) ACX_ADD_BEFORE(LIBS,acx_var);;
189				*) ACX_ADD_BEFORE(LDFLAGS,acx_var);;
190			esac
191		done
192
193		# add requested flags to CPPFLAGS or CXXFLAGS
194		FLTK_INCLUDE=`$FLTK $2 --cxxflags`
195		for acx_var in $FLTK_INCLUDE; do
196			case "$acx_var" in
197				-I*) ACX_ADD_AFTER(CPPFLAGS,acx_var);;
198				*) ACX_ADD_AFTER(CXXFLAGS,acx_var);;
199			esac
200		done
201		$3
202	else
203		:
204		$4
205	fi
206])
207
208AC_DEFUN(ACX_FLTK,
209[
210	AC_REQUIRE([ACX_X_OR_WIN])dnl
211#$EXEEXT instead!!!
212	if test a$x_or_win = ax; then
213		AC_PATH_PROG(FLUID,fluid,,$PATH:/usr/local/bin:/usr/bin)
214	elif test x$x_or_win = xwin; then
215		AC_PATH_PROG(FLUID,fluid.exe,,$PATH)
216	fi
217	AC_SUBST(FLUID)
218
219	AC_LANG_PUSH(C++)
220	ACX_CHECK_LIB(FL/Fl.H,fltk,fl_window,fltk=yes,fltk=no)
221	AC_LANG_POP(C++)
222])
223