1
2AC_INIT([gtk-sharp], [2.12.45])
3AC_CONFIG_SRCDIR(README)
4AC_CANONICAL_SYSTEM
5AC_CONFIG_HEADERS(config.h)
6AM_INIT_AUTOMAKE
7AM_MAINTAINER_MODE
8
9API_VERSION=2.12.0.0
10AC_SUBST(API_VERSION)
11POLICY_VERSIONS="2.4 2.6 2.8 2.10"
12AC_SUBST(POLICY_VERSIONS)
13
14PACKAGE_VERSION=gtk-sharp-2.0
15AC_SUBST(PACKAGE_VERSION)
16
17WIN64DEFINES=
18
19case "$host" in
20	x86_64-*-mingw*|x86_64-*-cygwin*)
21		WIN64DEFINES="-define:WIN64LONGS"
22		platform_win32=yes
23		AC_DEFINE(PLATFORM_WIN32,1,[Platform is Win32])
24		if test "x$cross_compiling" = "xno"; then
25			CC="gcc -g"
26			HOST_CC="gcc"
27		fi
28		;;
29	*-*-mingw*|*-*-cygwin*)
30		platform_win32=yes
31		AC_DEFINE(PLATFORM_WIN32,1,[Platform is Win32])
32		if test "x$cross_compiling" = "xno"; then
33			CC="gcc -g"
34			HOST_CC="gcc"
35		fi
36		;;
37	*)
38		platform_win32=no
39		;;
40esac
41
42AM_CONDITIONAL(PLATFORM_WIN32, test x$platform_win32 = xyes)
43
44AC_CHECK_TOOL(CC, gcc, gcc)
45AC_PROG_CC
46AC_PROG_INSTALL
47
48dnl may require a specific autoconf version
49dnl AC_PROG_CC_FOR_BUILD
50dnl CC_FOR_BUILD not automatically detected
51CC_FOR_BUILD=$CC
52BUILD_EXEEXT=
53if test "x$cross_compiling" = "xyes"; then
54	CC_FOR_BUILD=cc
55	BUILD_EXEEXT=""
56fi
57AC_SUBST(CC_FOR_BUILD)
58AC_SUBST(HOST_CC)
59AC_SUBST(BUILD_EXEEXT)
60
61# Set STDC_HEADERS
62AC_HEADER_STDC
63AC_LIBTOOL_WIN32_DLL
64AM_PROG_LIBTOOL
65
66# not 64 bit clean in cross-compile
67AC_CHECK_SIZEOF(void *, 4)
68
69CFLAGS="${CFLAGS} -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes  -Wmissing-prototypes -Wnested-externs  -Wshadow -Wpointer-arith -Wno-cast-qual -Wcast-align -Wwrite-strings"
70
71if test "x$enable_maintainer_mode" = "xyes"; then
72DEBUG_FLAGS='-debug:pdbonly'
73else
74DEBUG_FLAGS=
75AC_ARG_ENABLE(debug, [  --enable-debug          Build debugger (.mdb) files for dlls],
76	DEBUG_FLAGS='-debug'
77)
78fi
79
80enable_msi="no"
81if test "x$platform_win32" = "xyes"; then
82	AC_PATH_PROG(WIX, candle, no)
83	if test "x$WIX" != "xno" ; then
84		enable_msi="yes"
85	fi
86fi
87
88CSDEFINES='-define:GTK_SHARP_2_6 -define:GTK_SHARP_2_8 -define:GTK_SHARP_2_10 -define:GTK_SHARP_2_12'
89
90GTK_SHARP_VERSION_CFLAGS='-DGTK_SHARP_2_6 -DGTK_SHARP_2_8 -DGTK_SHARP_2_10 -DGTK_SHARP_2_12'
91AC_SUBST(GTK_SHARP_VERSION_CFLAGS)
92
93AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
94if test "x$PKG_CONFIG" = "xno"; then
95	AC_MSG_ERROR([You need to install pkg-config])
96fi
97
98dnl for use on the build system
99BUILD_GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
100BUILD_GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
101AC_SUBST(BUILD_GTK_CFLAGS)
102AC_SUBST(BUILD_GTK_LIBS)
103
104AC_CHECK_SIZEOF(off_t)
105OFF_T_FLAGS="-define:OFF_T_$ac_cv_sizeof_off_t"
106AC_SUBST(OFF_T_FLAGS)
107
108MONO_REQUIRED_VERSION=1.0
109FIRST_MONO_VERSION_WITH_NET_4_6_SUPPORT=4.4
110PKG_CHECK_MODULES(MONO_DEPENDENCY, mono >= $MONO_REQUIRED_VERSION, has_mono=true, has_mono=false)
111if test "x$has_mono" = "xfalse" ; then
112	PKG_CHECK_MODULES(MONO_DEPENDENCY, mono-2 >= $MONO_REQUIRED_VERSION, has_mono=true, has_mono=false)
113	if test "x$has_mono" = "xtrue" ; then
114		PKG_CHECK_MODULES(MONO_DEPENDENCY, mono-2 >= $FIRST_MONO_VERSION_WITH_NET_4_6_SUPPORT, NET_4_6_SUPPORT=true, NET_4_6_SUPPORT=false)
115	fi
116else
117	PKG_CHECK_MODULES(MONO_DEPENDENCY, mono >= $FIRST_MONO_VERSION_WITH_NET_4_6_SUPPORT, NET_4_6_SUPPORT=true, NET_4_6_SUPPORT=false)
118fi
119
120if test "x$platform_win32" = "xyes"; then
121	NET_4_6_SUPPORT=true
122fi
123
124AC_PATH_PROG(GACUTIL, gacutil, no)
125if test "x$GACUTIL" = "xno" ; then
126	AC_MSG_ERROR([No gacutil tool found. You need to install either the mono or .Net SDK.])
127fi
128
129AC_PATH_PROG([AL], al, no)
130if test "x$AL" = "xno" ; then
131	AC_MSG_ERROR([No al tool found. You need to install either the mono or .Net SDK.])
132fi
133
134if test "x$has_mono" = "xtrue"; then
135GACUTIL_FLAGS='-package $(PACKAGE_VERSION) -gacdir $(DESTDIR)$(prefix)/lib'
136GENERATED_SOURCES=generated/*.cs
137AC_PATH_PROG(RUNTIME, mono, no)
138
139# If mono is found, it's in the path.  Require it to be in the path at runtime as well
140if test "x$RUNTIME" != "xno" ; then
141	RUNTIME=mono
142fi
143
144AC_PATH_PROG([CSC], mcs, no)
145if test `uname -s` = "Darwin"; then
146	LIB_PREFIX=
147	LIB_SUFFIX=.dylib
148else
149	LIB_PREFIX=.so
150	LIB_SUFFIX=
151fi
152SDCHECK="`$GACUTIL -l |grep ^System.Drawing, | head -n1 |cut -f1 -d','`"
153if test "x$SDCHECK" = "xSystem.Drawing"; then
154	enable_dotnet=yes
155else
156	enable_dotnet=no
157fi
158else
159AC_PATH_PROG(CSC, csc.exe, no)
160GACUTIL_FLAGS=
161GENERATED_SOURCES=generated\\\\*.cs
162enable_dotnet=yes
163
164if test x$CSC = "xno"; then
165	AC_MSG_ERROR([You need to install either mono or .Net])
166else
167RUNTIME=
168LIB_PREFIX=
169LIB_SUFFIX=.dylib
170fi
171fi
172
173CS="C#"
174if test "x$CSC" = "xno" ; then
175	AC_MSG_ERROR([No $CS compiler found])
176fi
177
178AL="\"$AL\""
179AC_SUBST(RUNTIME)
180AC_SUBST(CSC)
181AC_SUBST(GACUTIL)
182AC_SUBST(GACUTIL_FLAGS)
183AC_SUBST(LIB_PREFIX)
184AC_SUBST(LIB_SUFFIX)
185AC_SUBST(GENERATED_SOURCES)
186
187PKG_CHECK_MODULES(MONO_CAIRO, mono-cairo >= $MONO_REQUIRED_VERSION, enable_mono_cairo=no, enable_mono_cairo=yes)
188AC_SUBST(MONO_CAIRO_LIBS)
189
190GTK_REQUIRED_VERSION=2.12.0
191
192PKG_CHECK_MODULES(GLIB, gobject-2.0 >= $GTK_REQUIRED_VERSION)
193AC_SUBST(GLIB_CFLAGS)
194AC_SUBST(GLIB_LIBS)
195
196PKG_CHECK_MODULES(PANGO, pango)
197AC_SUBST(PANGO_CFLAGS)
198AC_SUBST(PANGO_LIBS)
199
200PKG_CHECK_MODULES(ATK, atk)
201AC_SUBST(ATK_CFLAGS)
202AC_SUBST(ATK_LIBS)
203
204PKG_CHECK_MODULES(GTK, gtk+-2.0 >= $GTK_REQUIRED_VERSION)
205AC_SUBST(GTK_CFLAGS)
206AC_SUBST(GTK_LIBS)
207
208GLADE_REQUIRED_VERSION=2.3.6
209PKG_CHECK_MODULES(GLADE, libglade-2.0 >= $GLADE_REQUIRED_VERSION, enable_glade=yes, enable_glade=no)
210AC_SUBST(GLADE_CFLAGS)
211AC_SUBST(GLADE_LIBS)
212
213GDK_BACKEND=`pkg-config --variable=target gtk+-2.0`
214AC_SUBST(GDK_BACKEND)
215
216AC_PATH_PROG(MDASSEMBLER, mdassembler, no)
217AC_PATH_PROG(MONODOCER, monodocer, no)
218if test "x$MONODOCER" = "xno" -o "x$MDASSEMBLER" = "xno"; then
219  enable_monodoc=no
220  doc_sources_dir=
221else
222  enable_monodoc=yes
223  doc_sources_dir="`pkg-config --variable=sourcesdir monodoc`"
224fi
225AC_SUBST(MDASSEMBLER)
226AC_SUBST(MONODOCER)
227
228AM_CONDITIONAL(ENABLE_MONO_CAIRO, test "x$enable_mono_cairo" = "xyes")
229AM_CONDITIONAL(ENABLE_GLADE, test "x$enable_glade" = "xyes")
230AM_CONDITIONAL(ENABLE_DOTNET, test "x$enable_dotnet" = "xyes")
231AM_CONDITIONAL(ENABLE_MONODOC, test "x$enable_monodoc" = "xyes")
232AM_CONDITIONAL(ENABLE_MSI, test "x$enable_msi" = "xyes")
233AM_CONDITIONAL(ENABLE_MONOGETOPTIONS, test "x$has_mono" = "xtrue")
234
235CSFLAGS="$DEBUG_FLAGS $CSDEFINES $WIN64DEFINES -unsafe"
236
237if test "x$NET_4_6_SUPPORT" = "xtrue" ; then
238  CSFLAGS="$CSFLAGS -define:HAVE_NET_4_6"
239fi
240PKG_CHECK_MODULES(GLIB_2_31,
241  glib-2.0 >= 2.31,
242  HAVE_GLIB_2_31_OR_HIGHER=yes, HAVE_GLIB_2_31_OR_HIGHER=no)
243
244if test "x$HAVE_GLIB_2_31_OR_HIGHER" = "xyes" ; then
245  CFLAGS="$CFLAGS -DDISABLE_GTHREAD_CHECK"
246  CSFLAGS="$CSFLAGS -define:DISABLE_GTHREAD_CHECK"
247fi
248
249AC_SUBST(CSFLAGS)
250AC_SUBST(CFLAGS)
251
252AC_OUTPUT([
253AssemblyInfo.cs
254Makefile
255policy.config
256msi/gtk-sharp-2.0.wxs
257msi/Makefile
258msi/unmanaged/Makefile
259msi/unmanaged/custom/Makefile
260msi/unmanaged/custom/etc/Makefile
261msi/unmanaged/custom/etc/gtk-2.0/Makefile
262msi/unmanaged/custom/share/Makefile
263msi/unmanaged/custom/share/icons/Makefile
264msi/unmanaged/custom/share/icons/hicolor/Makefile
265sources/Makefile
266parser/Makefile
267parser/gapi-2.0.pc
268parser/gapi2-fixup
269parser/gapi2-parser
270generator/Makefile
271generator/gapi2-codegen
272glib/Makefile
273glib/glib-sharp-2.0.pc
274glib/glib-sharp.dll.config
275glib/glue/Makefile
276cairo/Makefile
277pango/Makefile
278pango/pango-sharp.dll.config
279pango/glue/Makefile
280atk/Makefile
281atk/atk-sharp.dll.config
282atk/glue/Makefile
283gdk/Makefile
284gdk/gdk-sharp.dll.config
285gdk/glue/Makefile
286gtk/Makefile
287gtk/gtk-sharp-2.0.pc
288gtk/gtk-sharp.dll.config
289gtk/glue/Makefile
290glade/Makefile
291glade/glade-sharp.dll.config
292glade/glade-sharp-2.0.pc
293glade/glue/Makefile
294gtkdotnet/Makefile
295gtkdotnet/gtk-dotnet.dll.config
296gtkdotnet/gtk-dotnet-2.0.pc
297doc/Makefile
298sample/GtkDemo/Makefile
299sample/Makefile
300sample/pixmaps/Makefile
301sample/test/Makefile
302sample/valtest/Makefile
303sample/valtest/valtest.exe.config
304sample/opaquetest/Makefile
305sample/opaquetest/opaquetest.exe.config
306])
307
308if test x$platform_win32 = xyes; then
309   # Get rid of 'cyg' prefixes in library names
310   sed -e "s/\/cyg\//\/\//" libtool > libtool.new; mv libtool.new libtool; chmod 755 libtool
311fi
312
313echo "---"
314echo "Configuration summary"
315echo ""
316echo "   * Installation prefix = $prefix"
317echo "   * $CS compiler: $CSC $CSFLAGS"
318echo ""
319echo "   Optional assemblies included in the build:"
320echo ""
321echo "      * glade-sharp.dll: $enable_glade"
322echo "      * gtk-dotnet.dll: $enable_dotnet "
323if test "x$enable_mono_cairo" = "xyes"; then
324  echo "      * Mono.Cairo.dll: building local assembly"
325else
326  echo "      * Mono.Cairo.dll: using system assembly"
327fi
328echo ""
329echo "      NOTE: if any of the above say 'no' you may install the"
330echo "            corresponding development packages for them, rerun"
331echo "            autogen.sh to include them in the build."
332echo ""
333echo "   * Documentation build enabled: $enable_monodoc "
334if test "x$enable_monodoc" = "xyes" -a "x$doc_sources_dir" != "x$prefix/lib/monodoc/sources"; then
335  echo "      WARNING: The install prefix is different than the monodoc prefix."
336  echo "               Monodoc will not be able to load the documentation."
337fi
338echo "---"
339