c9c2d099ba
Port the current installer infrastructure from the gtk-sharp-2-12 branch, adapting it as needed. Credits go to Duncan Mak for maintaining the 2.12 installer in the past few years. When building on Windows, if the WiX toolset is available, the msi is generated automatically at the end of the build.
326 lines
8 KiB
Text
326 lines
8 KiB
Text
|
|
AC_INIT(gtk-sharp, 2.99.3)
|
|
|
|
AM_INIT_AUTOMAKE([1.10 no-dist-gzip dist-bzip2 tar-ustar foreign])
|
|
AC_CANONICAL_HOST
|
|
AC_CONFIG_HEADERS(config.h)
|
|
AM_MAINTAINER_MODE
|
|
AC_CONFIG_MACRO_DIR([m4])
|
|
|
|
API_VERSION=3.0.0.0
|
|
AC_SUBST(API_VERSION)
|
|
CAIRO_API_VERSION=1.10.0.0
|
|
AC_SUBST(CAIRO_API_VERSION)
|
|
POLICY_VERSIONS=""
|
|
AC_SUBST(POLICY_VERSIONS)
|
|
|
|
PACKAGE_VERSION=gtk-sharp-3.0
|
|
AC_SUBST(PACKAGE_VERSION)
|
|
|
|
WIN64DEFINES=
|
|
|
|
AC_MSG_CHECKING([whether we're on Windows])
|
|
|
|
case "$host" in
|
|
x86_64-*-mingw*|x86_64-*-cygwin*)
|
|
WIN64DEFINES="-define:WIN64LONGS"
|
|
platform_win32=yes
|
|
AC_MSG_RESULT([yes, 64-bit])
|
|
AC_DEFINE(PLATFORM_WIN32,1,[Platform is Win32])
|
|
if test "x$cross_compiling" = "xno"; then
|
|
CC="gcc -g"
|
|
HOST_CC="gcc"
|
|
fi
|
|
;;
|
|
*-*-mingw*|*-*-cygwin*)
|
|
platform_win32=yes
|
|
AC_MSG_RESULT([yes, 32-bit])
|
|
AC_DEFINE(PLATFORM_WIN32,1,[Platform is Win32])
|
|
if test "x$cross_compiling" = "xno"; then
|
|
CC="gcc -g"
|
|
HOST_CC="gcc"
|
|
fi
|
|
;;
|
|
*)
|
|
platform_win32=no
|
|
AC_MSG_RESULT([no])
|
|
;;
|
|
esac
|
|
|
|
AM_CONDITIONAL(PLATFORM_WIN32, test x$platform_win32 = xyes)
|
|
|
|
AC_CHECK_TOOL(CC, gcc, gcc)
|
|
AC_PROG_CC
|
|
AC_PROG_INSTALL
|
|
|
|
dnl may require a specific autoconf version
|
|
dnl AC_PROG_CC_FOR_BUILD
|
|
dnl CC_FOR_BUILD not automatically detected
|
|
CC_FOR_BUILD=$CC
|
|
BUILD_EXEEXT=
|
|
if test "x$cross_compiling" = "xyes"; then
|
|
CC_FOR_BUILD=cc
|
|
BUILD_EXEEXT=""
|
|
fi
|
|
AC_SUBST(CC_FOR_BUILD)
|
|
AC_SUBST(HOST_CC)
|
|
AC_SUBST(BUILD_EXEEXT)
|
|
|
|
# Set STDC_HEADERS
|
|
AC_HEADER_STDC
|
|
AC_LIBTOOL_WIN32_DLL
|
|
AM_PROG_LIBTOOL
|
|
|
|
# not 64 bit clean in cross-compile
|
|
AC_CHECK_SIZEOF(void *, 4)
|
|
|
|
CFLAGS="${CFLAGS} -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wshadow -Wpointer-arith -Wno-cast-qual -Wcast-align -Wwrite-strings"
|
|
|
|
if test "x$enable_maintainer_mode" = "xyes"; then
|
|
DEBUG_FLAGS='-debug'
|
|
RUNTIME_DEBUG_FLAGS=' --debug'
|
|
else
|
|
DEBUG_FLAGS=
|
|
RUNTIME_DEBUG_FLAGS=
|
|
AC_ARG_ENABLE(debug, [ --enable-debug Build debugger (.mdb) files for dlls],
|
|
DEBUG_FLAGS='-debug'
|
|
)
|
|
fi
|
|
|
|
enable_msi="no"
|
|
if test "x$platform_win32" = "xyes"; then
|
|
AC_PATH_PROG(WIX, candle, no)
|
|
if test "x$WIX" != "xno" ; then
|
|
enable_msi="yes"
|
|
fi
|
|
fi
|
|
|
|
AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
|
|
if test "x$PKG_CONFIG" = "xno"; then
|
|
AC_MSG_ERROR([You need to install pkg-config])
|
|
fi
|
|
|
|
AC_CHECK_SIZEOF(off_t)
|
|
OFF_T_FLAGS="-define:OFF_T_$ac_cv_sizeof_off_t"
|
|
AC_SUBST(OFF_T_FLAGS)
|
|
|
|
MONO_REQUIRED_VERSION=2.8
|
|
PKG_CHECK_MODULES(MONO_DEPENDENCY, mono >= $MONO_REQUIRED_VERSION, has_mono=true, has_mono=false)
|
|
|
|
AC_PATH_PROG(GACUTIL, gacutil, no)
|
|
if test "x$GACUTIL" = "xno" ; then
|
|
AC_MSG_ERROR([No gacutil tool found. You need to install either the mono or .Net SDK.])
|
|
fi
|
|
|
|
AC_PATH_PROG(AL, al, no)
|
|
if test "x$AL" = "xno" ; then
|
|
AC_MSG_ERROR([No al tool found. You need to install either the mono or .Net SDK.])
|
|
fi
|
|
|
|
if test "x$has_mono" = "xtrue"; then
|
|
GACUTIL_FLAGS='/package $(PACKAGE_VERSION) /gacdir $(DESTDIR)$(prefix)/lib'
|
|
GENERATED_SOURCES_FILES=generated/*/*.cs
|
|
GENERATED_SOURCES_OPTION=$GENERATED_SOURCES_FILES
|
|
ASSEMBLYINFO=/AssemblyInfo.cs
|
|
AC_PATH_PROG(RUNTIME, mono, no)
|
|
|
|
# libmono and glib required for gui-thread-check profiler module
|
|
PKG_CHECK_MODULES(PROFILER, mono-2 glib-2.0)
|
|
AM_CONDITIONAL(ENABLE_THREADCHECK, true)
|
|
|
|
# If mono is found, it's in the path. Require it to be in the path at runtime as well
|
|
if test "x$RUNTIME" != "no" ; then
|
|
RUNTIME="mono$RUNTIME_DEBUG_FLAGS"
|
|
fi
|
|
|
|
AC_PATH_PROG(CSC, gmcs, no)
|
|
if test `uname -s` = "Darwin"; then
|
|
LIB_PREFIX=
|
|
LIB_SUFFIX=.dylib
|
|
else
|
|
LIB_PREFIX=.so
|
|
LIB_SUFFIX=
|
|
fi
|
|
SDCHECK="`$GACUTIL /l |grep ^System.Drawing, | head -n1 |cut -f1 -d','`"
|
|
if test "x$SDCHECK" = "xSystem.Drawing"; then
|
|
enable_dotnet=yes
|
|
else
|
|
enable_dotnet=no
|
|
fi
|
|
dnl End of has_mono = true
|
|
else
|
|
dnl Check for .NET Framework
|
|
AC_PATH_PROG(CSC, csc.exe, no)
|
|
CSFLAGS="-nologo -platform:x86"
|
|
GACUTIL_FLAGS=
|
|
GENERATED_SOURCES_FILES="generated\\\\*.cs"
|
|
GENERATED_SOURCES_OPTION="-recurse:$GENERATED_SOURCES_FILES"
|
|
ASSEMBLYINFO=\\\\AssemblyInfo.cs
|
|
AM_CONDITIONAL(ENABLE_THREADCHECK, false)
|
|
enable_dotnet=yes
|
|
|
|
RUNTIME=
|
|
LIB_PREFIX=
|
|
LIB_SUFFIX=.dylib
|
|
fi
|
|
|
|
CS="C#"
|
|
if test "x$CSC" = "xno" ; then
|
|
AC_MSG_ERROR([No $CS compiler found. You need to install either mono (>=$MONO_REQUIRED_VERSION) or .Net])
|
|
fi
|
|
|
|
AC_SUBST(RUNTIME)
|
|
AC_SUBST(CSC)
|
|
AC_SUBST(GACUTIL)
|
|
AC_SUBST(GACUTIL_FLAGS)
|
|
AC_SUBST(LIB_PREFIX)
|
|
AC_SUBST(LIB_SUFFIX)
|
|
AC_SUBST(GENERATED_SOURCES_FILES)
|
|
AC_SUBST(GENERATED_SOURCES_OPTION)
|
|
AC_SUBST(ASSEMBLYINFO)
|
|
|
|
GTK_REQUIRED_VERSION=3.0.0
|
|
GLIB_REQUIRED_VERSION=2.28.0
|
|
|
|
PKG_CHECK_MODULES(GLIB, gobject-2.0 >= $GLIB_REQUIRED_VERSION)
|
|
AC_SUBST(GLIB_CFLAGS)
|
|
AC_SUBST(GLIB_LIBS)
|
|
|
|
PKG_CHECK_MODULES(GIO, gio-2.0 >= $GLIB_REQUIRED_VERSION)
|
|
AC_SUBST(GIO_CFLAGS)
|
|
AC_SUBST(GIO_LIBS)
|
|
|
|
CSFLAGS="$CSFLAGS $DEBUG_FLAGS $WIN64DEFINES"
|
|
AC_SUBST(CSFLAGS)
|
|
|
|
PKG_CHECK_MODULES(GLIB_2_31,
|
|
glib-2.0 >= 2.31,
|
|
HAVE_GLIB_2_31_OR_HIGHER=yes, HAVE_GLIB_2_31_OR_HIGHER=no)
|
|
if test "x$HAVE_GLIB_2_31_OR_HIGHER" = "xno" ; then
|
|
CSFLAGS="$CSFLAGS -define:ENABLE_GTHREAD_INIT"
|
|
fi
|
|
|
|
PKG_CHECK_MODULES(PANGO, pango)
|
|
AC_SUBST(PANGO_CFLAGS)
|
|
AC_SUBST(PANGO_LIBS)
|
|
|
|
PKG_CHECK_MODULES(ATK, atk)
|
|
AC_SUBST(ATK_CFLAGS)
|
|
AC_SUBST(ATK_LIBS)
|
|
|
|
PKG_CHECK_MODULES(GTK, gtk+-3.0 >= $GTK_REQUIRED_VERSION)
|
|
AC_SUBST(GTK_CFLAGS)
|
|
AC_SUBST(GTK_LIBS)
|
|
|
|
AC_PATH_PROG(MDOC, mdoc, no)
|
|
if test "x$MDOC" = "xno"; then
|
|
enable_monodoc=no
|
|
doc_sources_dir=
|
|
else
|
|
enable_monodoc=yes
|
|
doc_sources_dir="`pkg-config --variable=sourcesdir monodoc`"
|
|
fi
|
|
AC_SUBST(MDOC)
|
|
|
|
AM_CONDITIONAL(ENABLE_DOTNET, test "x$enable_dotnet" = "xyes")
|
|
AM_CONDITIONAL(ENABLE_MONODOC, test "x$enable_monodoc" = "xyes")
|
|
AM_CONDITIONAL(ENABLE_MSI, test "x$enable_msi" = "xyes")
|
|
|
|
AC_SUBST(CFLAGS)
|
|
|
|
AC_OUTPUT([
|
|
AssemblyInfo.cs
|
|
Makefile
|
|
policy.config
|
|
sources/Makefile
|
|
parser/Makefile
|
|
parser/gapi-3.0.pc
|
|
parser/gapi3-parser
|
|
generator/Makefile
|
|
generator/gapi3-codegen
|
|
generator/gapi3-fixup
|
|
glib/Makefile
|
|
glib/glib-sharp-3.0.pc
|
|
glib/glib-sharp.dll.config
|
|
gio/Makefile
|
|
gio/gio-sharp-3.0.pc
|
|
gio/gio-sharp.dll.config
|
|
gio/glue/Makefile
|
|
cairo/AssemblyInfo.cs
|
|
cairo/Makefile
|
|
pango/Makefile
|
|
pango/pango-sharp.dll.config
|
|
pango/glue/Makefile
|
|
atk/Makefile
|
|
atk/atk-sharp.dll.config
|
|
atk/glue/Makefile
|
|
gdk/Makefile
|
|
gdk/gdk-sharp-3.0.pc
|
|
gdk/gdk-sharp.dll.config
|
|
gtk/Makefile
|
|
gtk/gtk-sharp-3.0.pc
|
|
gtk/gtk-sharp.dll.config
|
|
gtk/glue/Makefile
|
|
gtk/gui-thread-check/Makefile
|
|
gtk/gui-thread-check/profiler/Makefile
|
|
gtkdotnet/Makefile
|
|
gtkdotnet/gtk-dotnet.dll.config
|
|
gtkdotnet/gtk-dotnet-3.0.pc
|
|
doc/Makefile
|
|
msi/gtk-sharp-3.0.wxs
|
|
msi/Makefile
|
|
msi/unmanaged/Makefile
|
|
sample/GtkDemo/Makefile
|
|
sample/Makefile
|
|
sample/pixmaps/Makefile
|
|
sample/test/Makefile
|
|
sample/valtest/Makefile
|
|
sample/valtest/valtest.exe.config
|
|
sample/opaquetest/Makefile
|
|
sample/opaquetest/opaquetest.exe.config
|
|
sample/gio/Makefile
|
|
sample/gtk-gio/Makefile
|
|
])
|
|
|
|
if test x$platform_win32 = xyes; then
|
|
# Get rid of 'cyg' prefixes in library names
|
|
sed -e "s/\/cyg\//\/\//" libtool > libtool.new; mv libtool.new libtool; chmod 755 libtool
|
|
fi
|
|
|
|
if test "x$enable_mono_cairo" = "xyes"; then
|
|
cairo_comment="building local copy"
|
|
else
|
|
cairo_comment="using system assembly"
|
|
fi
|
|
|
|
echo "---"
|
|
echo "Configuration summary"
|
|
echo ""
|
|
echo " * Installation prefix = $prefix"
|
|
echo " * $CS compiler: $CSC $CSFLAGS"
|
|
echo ""
|
|
echo " Optional assemblies included in the build:"
|
|
echo ""
|
|
echo " * gtk-dotnet.dll: $enable_dotnet"
|
|
echo ""
|
|
echo " NOTE: if any of the above say 'no' you may install the"
|
|
echo " corresponding development packages for them, rerun"
|
|
echo " autogen.sh to include them in the build."
|
|
echo ""
|
|
echo " * Documentation build enabled: $enable_monodoc "
|
|
if test "x$enable_monodoc" = "xyes" -a "x$doc_sources_dir" != "x$prefix/lib/monodoc/sources"; then
|
|
echo " WARNING: The install prefix is different than the monodoc prefix."
|
|
echo " Monodoc will not be able to load the documentation."
|
|
fi
|
|
echo "---"
|
|
|
|
if test "x$has_mono" = "xtrue"; then
|
|
mono_prefix=`pkg-config --variable=prefix mono`
|
|
mono_prefix_canonical=`readlink -m $mono_prefix`
|
|
if test "x$mono_prefix_canonical" != "x$prefix"; then
|
|
AC_MSG_WARN(Prefix to use ($prefix) is not the same as Mono's ($mono_prefix_canonical).
|
|
Consider using ./configure --prefix=$mono_prefix_canonical
|
|
See the README for more information.
|
|
)
|
|
fi
|
|
fi
|