1#							-*- Autoconf -*-
2# This file is part of the aMule Project.
3#
4# Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org )
5#
6# Any parts of this program derived from the xMule, lMule or eMule project,
7# or contributed by third-party developers are copyrighted by their
8# respective authors.
9#
10# This program is free software; you can redistribute it and/or modify
11# it under the terms of the GNU General Public License as published by
12# the Free Software Foundation; either version 2 of the License, or
13# (at your option) any later version.
14#
15# This program is distributed in the hope that it will be useful,
16# but WITHOUT ANY WARRANTY; without even the implied warranty of
17# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18# GNU General Public License for more details.
19# 
20# You should have received a copy of the GNU General Public License
21# along with this program; if not, write to the Free Software
22# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA
23#
24
25dnl ---------------------------------------------------------------------------
26dnl MULE_CHECK_GDLIB([VERSION = 2.0.0], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
27dnl
28dnl adds support for --with-gdlib-prefix and --with-gdlib-config
29dnl command line options
30dnl
31dnl Test for gdlib, and define GDLIB_CFLAGS, GDLIB_LIBS and GDLIB_CONFIG_NAME
32dnl environment variable to override the default name of the gdlib-config script
33dnl to use. Set GDLIB_CONFIG_PATH to specify the full path to gdlib-config -
34dnl in this case the macro won't even waste time on tests for its existence.
35dnl ---------------------------------------------------------------------------
36AC_DEFUN([MULE_CHECK_GDLIB],
37[dnl
38m4_define([REQUIRED_VERSION], [m4_ifval([$1], [$1], [2.0.0])])dnl
39m4_define([REQUIRED_VERSION_MAJOR], [m4_bregexp(REQUIRED_VERSION, [\([0-9]+\)\.\([0-9]+\)\.\([0-9]+\)], [\1])])dnl
40m4_define([REQUIRED_VERSION_MINOR], [m4_bregexp(REQUIRED_VERSION, [\([0-9]+\)\.\([0-9]+\)\.\([0-9]+\)], [\2])])dnl
41m4_define([REQUIRED_VERSION_MICRO], [m4_bregexp(REQUIRED_VERSION, [\([0-9]+\)\.\([0-9]+\)\.\([0-9]+\)], [\3])])dnl
42
43	AC_ARG_WITH([gdlib-prefix], [AS_HELP_STRING([--with-gdlib-prefix=PREFIX], [prefix where gdlib is installed (optional)])])
44	AC_ARG_WITH([gdlib-config], [AS_HELP_STRING([--with-gdlib-config=CONFIG], [gdlib-config script to use (optional)])])
45
46	GDLIB_VERSION=
47
48	# do we have gdlib-config name: it can be gdlib-config or gd-config or ...
49	AS_IF([test x${GDLIB_CONFIG_NAME+set} != xset], [GDLIB_CONFIG_NAME=gdlib-config])
50	AS_IF([test -n "$with_gdlib_config"], [GDLIB_CONFIG_NAME="$with_gdlib_config"])
51
52	# deal with optional prefix
53	AS_IF([test -n "$with_gdlib_prefix"], [GDLIB_LOOKUP_PATH="$with_gdlib_prefix/bin"])
54
55	# don't search the PATH if GDLIB_CONFIG_NAME is absolute filename
56	AS_IF([test -x "$GDLIB_CONFIG_NAME"], [
57		AC_MSG_CHECKING([for gdlib-config])
58		GDLIB_CONFIG_PATH="$GDLIB_CONFIG_NAME"
59		AC_MSG_RESULT([$GDLIB_CONFIG_PATH])
60	], [AC_PATH_PROG([GDLIB_CONFIG_PATH], [$GDLIB_CONFIG_NAME], [no], [$GDLIB_LOOKUP_PATH:$PATH])])
61
62	AS_IF([test ${GDLIB_CONFIG_PATH:-no} != no],
63	[
64		AC_MSG_CHECKING([for gdlib version >= REQUIRED_VERSION])
65		GDLIB_CONFIG_WITH_ARGS="$GDLIB_CONFIG_PATH $gdlib_config_args"
66
67		GDLIB_VERSION=`$GDLIB_CONFIG_WITH_ARGS --version`
68		gdlib_config_major_version=`echo $GDLIB_VERSION | sed ['s/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1/']`
69		gdlib_config_minor_version=`echo $GDLIB_VERSION | sed ['s/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\2/']`
70		gdlib_config_micro_version=`echo $GDLIB_VERSION | sed ['s/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\3/']`
71
72		gdlib_ver_ok=
73		MULE_IF([test $gdlib_config_major_version -gt REQUIRED_VERSION_MAJOR], [gdlib_ver_ok=yes],
74			[test $gdlib_config_major_version -eq REQUIRED_VERSION_MAJOR], [
75				MULE_IF([test $gdlib_config_minor_version -gt REQUIRED_VERSION_MINOR], [gdlib_ver_ok=yes],
76					[test $gdlib_config_minor_version -eq REQUIRED_VERSION_MINOR],
77						[MULE_IF([test $gdlib_config_micro_version -ge REQUIRED_VERSION_MICRO], [gdlib_ver_ok=yes])])
78			])
79
80		AS_IF([test -z "$gdlib_ver_ok"], [
81			AS_IF([test -z "$GDLIB_VERSION"], [AC_MSG_RESULT([no])], [
82				AC_MSG_RESULT([no (version $GDLIB_VERSION is not new enough)])
83				GDLIB_VERSION=
84			])
85		], [
86			AC_MSG_RESULT([yes (version $GDLIB_VERSION)])
87			GDLIB_CFLAGS="`$GDLIB_CONFIG_WITH_ARGS --cflags`"
88			GDLIB_LDFLAGS="`$GDLIB_CONFIG_WITH_ARGS --ldflags`"
89			GDLIB_LIBS="`$GDLIB_CONFIG_WITH_ARGS --libs`"
90			MULE_BACKUP([CFLAGS])
91			MULE_APPEND([CFLAGS], [$GDLIB_CFLAGS])
92			AC_CHECK_HEADER([gd.h],, [GDLIB_VERSION=])
93			MULE_RESTORE([CFLAGS])
94		])
95	])
96
97	AS_IF([test -n "$GDLIB_VERSION"], [$2], [$3])
98
99AC_SUBST([GDLIB_CFLAGS])dnl
100AC_SUBST([GDLIB_LDFLAGS])dnl
101AC_SUBST([GDLIB_LIBS])dnl
102
103m4_undefine([REQUIRED_VERSION])dnl
104m4_undefine([REQUIRED_VERSION_MAJOR])dnl
105m4_undefine([REQUIRED_VERSION_MINOR])dnl
106m4_undefine([REQUIRED_VERSION_MICRO])dnl
107])
108