aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am1
-rw-r--r--configure.ac54
-rw-r--r--sources/Makefile.am39
-rw-r--r--sources/appindicator-sharp.dll.config.in7
-rw-r--r--sources/appindicator-sharp.pc.in12
-rwxr-xr-xsources/build-mono-bindings.sh11
6 files changed, 112 insertions, 12 deletions
diff --git a/Makefile.am b/Makefile.am
index 33f9f3e..14ff7f7 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,5 +1,6 @@
SUBDIRS = data \
src \
+ sources \
example \
tests
diff --git a/configure.ac b/configure.ac
index 1b5e120..bf4aff8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,7 +26,7 @@ AC_PATH_PROG([GLIB_GENMARSHAL], [glib-genmarshal])
PKG_PROG_PKG_CONFIG
###########################
-# Dependencies
+# Dependencies
###########################
GTK_REQUIRED_VERSION=2.12
@@ -41,6 +41,55 @@ AC_SUBST(INDICATOR_CFLAGS)
AC_SUBST(INDICATOR_LIBS)
###########################
+# Check for Mono support
+###########################
+MONO_REQUIRED_VERSION=1.0
+PKG_CHECK_MODULES(MONO_DEPENDENCY, mono >= $MONO_REQUIRED_VERSION, has_mono=true, has_mono=false)
+
+AC_PATH_PROG(AL, al, no)
+if test "x$AL" = "xno" ; then
+ AC_MSG_ERROR([No al tool found. You need to install Mono.])
+fi
+
+if test "x$has_mono" = "xtrue" ; then
+ GENERATED_SOURCES=generated/*.cs
+ AC_PATH_PROG(RUNTIME, mono, no)
+
+ if test "x$RUNTIME" != "no" ; then
+ RUNTIME=mono
+ fi
+
+ AC_PATH_PROG(CSC, gmcs, no)
+ LIB_PREFIX=.so
+ LIB_SUFFIX=
+fi
+
+if test "x$CSC" = "xno" ; then
+ AC_MSG_ERROR([No Mono compiler found.])
+fi
+
+AC_SUBST(RUNTIME)
+AC_SUBST(CSC)
+AC_SUBST(LIB_PREFIX)
+AC_SUBST(LIB_SUFFIX)
+AC_SUBST(GENERATED_SOURCES)
+
+GLIB_SHARP_REQ_VERSION=2.12.1
+GTK_SHARP_REQ_VERSION=2.12
+PKG_CHECK_MODULES(GTK_SHARP, gtk-sharp-2.0 >= $GTK_SHARP_REQ_VERSION)
+AC_SUBST(GTK_SHARP_LIBS)
+AC_SUBST(GTK_SHARP_CFLAGS)
+
+PKG_CHECK_MODULES(GAPI, gapi-2.0 >= $GLIB_SHARP_REQ_VERSION)
+AC_PATH_PROG(GAPI_PARSER, gapi2-parser, no)
+AC_SUBST(GAPI_PARSER)
+AC_PATH_PROG(GAPI_CODEGEN, gapi2-codegen, no)
+AC_SUBST(GAPI_CODEGEN)
+AC_PATH_PROG(GAPI_FIXUP, gapi2-fixup, no)
+AC_SUBST(GAPI_FIXUP)
+
+
+###########################
# Check to see if we're local
###########################
@@ -79,6 +128,9 @@ AC_SUBST(DBUSSERVICEDIR)
AC_OUTPUT([
Makefile
src/Makefile
+sources/Makefile
+sources/appindicator-sharp.dll.config
+sources/appindicator-sharp.pc
data/Makefile
tests/Makefile
example/Makefile
diff --git a/sources/Makefile.am b/sources/Makefile.am
new file mode 100644
index 0000000..23e8214
--- /dev/null
+++ b/sources/Makefile.am
@@ -0,0 +1,39 @@
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = appindicator-sharp.pc
+
+API = libappindicator-api.xml
+RAW_API = libappindicator-api.raw
+METADATA = libappindicator-api.metadata
+ASSEMBLY_NAME = appindicator-sharp
+ASSEMBLY = appindicator-sharp.dll
+TARGET = $(ASSEMBLY) $(ASSEMBLY).config
+assemblydir = $(libdir)/appindicator-sharp
+assembly_DATA = $(TARGET)
+CLEANFILES = $(ASSEMBLY) $(ASSEMBLY).mdb generated-stamp generated/*.cs $(API) $(RAW_API)
+DISTCLEANFILES = $(ASSEMBLY).config
+EXTRA_DIST = $(RAW_API) $(METADATA) appindicator-sharp.pc.in appindicator-sharp.dll.config.in
+
+references = $(GTK_SHARP_LIBS)
+
+$(RAW_API): app-indicator.sources.xml
+ $(GAPI_PARSER) app-indicator.sources.xml
+
+$(API): $(METADATA) $(RAW_API)
+ cp $(srcdir)/$(RAW_API) $(API)
+ chmod u+w $(API)
+ @if test -n '$(METADATA)'; then \
+ echo "$(GAPI_FIXUP) --api=$(API) --metadata=$(srcdir)/$(METADATA)"; \
+ $(GAPI_FIXUP) --api=$(API) --metadata=$(srcdir)/$(METADATA); \
+ fi
+
+api_includes = $(GTK_SHARP_FLAGS)
+
+generated-stamp: $(API)
+ rm -f generated/* && \
+ $(GAPI_CODEGEN) --generate $(API) $(api_includes) \
+ --outdir=generated --assembly-name=$(ASSEMBLY_NAME) \
+ && touch generated-stamp
+
+$(ASSEMBLY): generated-stamp
+ @rm -f $(ASSEMBLY).mdb
+ $(CSC) $(CSFLAGS) -nowarn:0169,0612,0618 -unsafe -out:$(ASSEMBLY) -target:library $(references) $(GENERATED_SOURCES) \ No newline at end of file
diff --git a/sources/appindicator-sharp.dll.config.in b/sources/appindicator-sharp.dll.config.in
new file mode 100644
index 0000000..c8caa80
--- /dev/null
+++ b/sources/appindicator-sharp.dll.config.in
@@ -0,0 +1,7 @@
+<configuration>
+ <dllmap dll="libappindicator.dll" target="libappindicator@LIB_PREFIX@.0@LIB_SUFFIX@"/>
+ <dllmap dll="libgtk-2.0-0.dll" target="libgtk-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
+ <dllmap dll="libglib-2.0-0.dll" target="libglib-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
+ <dllmap dll="libgobject-2.0-0.dll" target="libgobject-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
+ <dllmap dll="libgthread-2.0-0.dll" target="libgthread-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
+</configuration>
diff --git a/sources/appindicator-sharp.pc.in b/sources/appindicator-sharp.pc.in
new file mode 100644
index 0000000..be5595a
--- /dev/null
+++ b/sources/appindicator-sharp.pc.in
@@ -0,0 +1,12 @@
+prefix=${pcfiledir}/../..
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+assemblies_dir=${libdir}/appindicator-sharp
+
+Name: appindicator
+Description: application indicators for .NET
+Version: @VERSION@
+Libraries: ${assemblies_dir}/appindicator-sharp.dll ${assemblies_dir}/appindicator-sharp.dll.config
+Requires: gtk-sharp-2.0
+Cflags:
+Libs: -r:${assemblies_dir}/appindicator-sharp.dll
diff --git a/sources/build-mono-bindings.sh b/sources/build-mono-bindings.sh
deleted file mode 100755
index bca765e..0000000
--- a/sources/build-mono-bindings.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/bash
-
-gapi2-parser app-indicator.sources.xml
-
-cp libappindicator-api.raw libappindicator-api.xml
-
-gapi2-fixup --api=libappindicator-api.xml --metadata=libappindicator-api.metadata
-
-gapi2-codegen --outdir=generated `pkg-config --cflags gtk-sharp-2.0` --generate libappindicator-api.xml
-
-gmcs -pkg:gtk-sharp-2.0 -target:library -out:AppIndicator.dll generated/*.cs