aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Gabriel <mike.gabriel@das-netzwerkteam.de>2021-06-10 22:01:16 +0200
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2021-06-10 22:01:16 +0200
commit80245fc04e09148863c493af860a6b2710909888 (patch)
treeb12c83377af5017dcb2aa63cfc760209c279dc4e
parent31484851efadc92f86fb117dcf9b6c81b053de10 (diff)
parentfd8225ec3949f2e94ea8278563c7fdbe427617c7 (diff)
downloadlibayatana-appindicator-80245fc04e09148863c493af860a6b2710909888.tar.gz
libayatana-appindicator-80245fc04e09148863c493af860a6b2710909888.tar.bz2
libayatana-appindicator-80245fc04e09148863c493af860a6b2710909888.zip
Merge branch 'tari01-pr/move-to-cmake'
Attributes GH PR #16: https://github.com/AyatanaIndicators/libayatana-appindicator/pull/16
-rw-r--r--.build.yml6
-rw-r--r--CMakeLists.txt74
-rw-r--r--Makefile.am52
-rw-r--r--Makefile.am.coverage48
-rw-r--r--Makefile.am.enum45
-rw-r--r--Makefile.am.marshal45
-rw-r--r--acinclude.m4247
-rwxr-xr-xautogen.sh12
-rw-r--r--bindings/CMakeLists.txt2
-rw-r--r--bindings/Makefile.am13
-rw-r--r--bindings/mono/ApplicationIndicator.custom26
-rw-r--r--bindings/mono/ApplicationIndicatorCustom.cs40
-rw-r--r--bindings/mono/AssemblyInfo.cs4
-rw-r--r--bindings/mono/CMakeLists.txt203
-rw-r--r--bindings/mono/Makefile.am177
-rw-r--r--bindings/mono/app-indicator.sources.xml.in20
-rw-r--r--bindings/mono/ayatana-appindicator-sharp.dll.config7
-rw-r--r--bindings/mono/ayatana-appindicator-sharp.dll.config.in7
-rw-r--r--bindings/mono/ayatana-appindicator-sharp3-0.1.pc.in (renamed from bindings/mono/ayatana-appindicator-sharp-0.1.pc.in)12
-rw-r--r--bindings/mono/examples/CMakeLists.txt20
-rw-r--r--bindings/mono/examples/Makefile.am13
-rwxr-xr-xbindings/mono/examples/ayatana-indicator-example.in2
-rw-r--r--bindings/mono/policy.0.0.ayatana-appindicator-sharp.config.in16
-rw-r--r--bindings/mono/policy.0.1.ayatana-appindicator-sharp.config.in16
-rw-r--r--bindings/vala/CMakeLists.txt29
-rw-r--r--bindings/vala/Makefile.am41
-rw-r--r--bindings/vala/ayatana-appindicator3-0.1.deps3
-rw-r--r--bindings/vala/examples/CMakeLists.txt27
-rw-r--r--bindings/vala/examples/Makefile.am40
-rw-r--r--cmake/FindGObjectIntrospection.cmake61
-rw-r--r--cmake/FindVala.cmake57
-rw-r--r--cmake/UseGObjectIntrospection.cmake100
-rw-r--r--cmake/UseVala.cmake241
-rw-r--r--configure.ac247
-rw-r--r--docs/CMakeLists.txt1
-rw-r--r--docs/Makefile.am2
-rw-r--r--docs/reference/CMakeLists.txt233
-rw-r--r--docs/reference/Makefile.am125
-rw-r--r--docs/reference/libayatana-appindicator-docs.sgml.in2
-rw-r--r--docs/reference/scangobj.sh.in1
-rw-r--r--docs/reference/version.xml.in2
-rw-r--r--example/CMakeLists.txt37
-rw-r--r--example/Makefile.am63
-rw-r--r--m4/gcov.m486
-rw-r--r--m4/introspection.m494
-rw-r--r--src/AyatanaAppIndicator-0.1.metadata.in3
-rw-r--r--src/AyatanaAppIndicator3-0.1.metadata (renamed from src/AyatanaAppIndicator3-0.1.metadata.in)0
-rw-r--r--src/CMakeLists.txt166
-rw-r--r--src/Makefile.am188
-rw-r--r--src/ayatana-appindicator3-0.1.pc.in14
-rw-r--r--tests/CMakeLists.txt184
-rw-r--r--tests/Makefile.am207
52 files changed, 1536 insertions, 1825 deletions
diff --git a/.build.yml b/.build.yml
index 69b687b..ad5776d 100644
--- a/.build.yml
+++ b/.build.yml
@@ -45,6 +45,9 @@ requires:
- libgtk2.0-dev
- gtk-sharp2-gapi
- libgtk2.0-cil-dev
+ - libgtk3.0-cil-dev
+ - gtk-sharp3-gapi
+ - libdbus-1-dev
- libdbus-glib-1-dev
- libdbusmenu-glib-dev
- libdbusmenu-gtk3-dev
@@ -75,6 +78,9 @@ requires:
- libgtk2.0-dev
- gtk-sharp2-gapi
- libgtk2.0-cil-dev
+ - libgtk3.0-cil-dev
+ - gtk-sharp3-gapi
+ - libdbus-1-dev
- libdbus-glib-1-dev
- libdbusmenu-glib-dev
- libdbusmenu-gtk3-dev
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..c28eab1
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,74 @@
+cmake_minimum_required(VERSION 3.13)
+project(libayatana-appindicator C)
+
+if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
+ SET(CMAKE_INSTALL_PREFIX "/usr" CACHE PATH "..." FORCE)
+endif(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
+
+list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
+
+option(ENABLE_TESTS "Enable all tests and checks" OFF)
+option(ENABLE_COVERAGE "Enable coverage reports (includes enabling all tests and checks)" OFF)
+
+# Check for prerequisites
+
+set(DEPS glib-2.0>=2.58 ayatana-indicator3-0.4>=0.8.4 gtk+-3.0>=3.24 dbusmenu-gtk3-0.4)
+
+if(ENABLE_COVERAGE)
+ set(ENABLE_TESTS ON)
+ set(CMAKE_BUILD_TYPE "Coverage")
+else()
+ set(CMAKE_BUILD_TYPE "Release")
+endif()
+
+if(ENABLE_TESTS)
+ set(DEPS ${DEPS} dbus-1>=1.12 dbus-glib-1>=0.82)
+endif()
+
+find_package(PkgConfig REQUIRED)
+pkg_check_modules(PROJECT_DEPS REQUIRED ${DEPS})
+
+# Set global variables
+
+include(GNUInstallDirs)
+set(PROJECT_VERSION "0.5.90")
+set(PROJECT_NAME "libayatana-appindicator")
+
+if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
+
+ set(COMPILE_FLAGS "${COMPILE_FLAGS} -Weverything")
+ set(COMPILE_FLAGS "${COMPILE_FLAGS} -Wno-c++98-compat -Wno-padded")
+ set(COMPILE_FLAGS "${COMPILE_FLAGS} -Wno-documentation")
+
+else()
+
+ set(COMPILE_FLAGS "${COMPILE_FLAGS} -Wall")
+
+endif()
+
+# Make everything
+
+add_subdirectory(src)
+add_subdirectory(bindings)
+add_subdirectory(docs)
+
+if (ENABLE_TESTS)
+
+ include(CTest)
+ enable_testing()
+ add_subdirectory(tests)
+ add_subdirectory(example)
+
+ if(ENABLE_COVERAGE)
+
+ find_package(CoverageReport)
+ ENABLE_COVERAGE_REPORT(TARGETS "ayatana-appindicator3" TESTS "test-libappindicator" "test-libappindicator-dbus-client" "test-libappindicator-dbus-server" "test-libappindicator-status-client" "test-libappindicator-status-server" "test-libappindicator-fallback-item" "test-libappindicator-fallback-watcher" FILTER /usr/include ${CMAKE_BINARY_DIR}/*)
+
+ endif()
+
+endif()
+
+# Display config info
+
+message(STATUS "Install prefix: ${CMAKE_INSTALL_PREFIX}")
+message(STATUS "Unit tests: ${ENABLE_TESTS}")
diff --git a/Makefile.am b/Makefile.am
deleted file mode 100644
index 7ecb538..0000000
--- a/Makefile.am
+++ /dev/null
@@ -1,52 +0,0 @@
-ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
-
-SUBDIRS = \
- src \
- bindings \
- docs
-
-# FIXME: Disabled, vala error
-# example
-
-if WANT_TESTS
-SUBDIRS += tests
-endif
-
-EXTRA_DIST = \
- m4/introspection.m4 \
- gtk-doc.make \
- omf.make \
- xmldocs.make \
- autogen.sh \
- COPYING.LGPL.2.1 \
- ChangeLog
-
-DISTCLEANFILES = \
- INSTALL \
- Makefile.in \
- aclocal.m4 \
- ar-lib \
- autom4te.cache/ \
- compile \
- config.guess \
- config.h.in \
- config.h.in~ \
- config.sub \
- configure \
- depcomp \
- gtk-doc.make \
- install-sh \
- ltmain.sh \
- m4/gtk-doc.m4 \
- m4/libtool.m4 \
- m4/ltoptions.m4 \
- m4/ltsugar.m4 \
- m4/ltversion.m4 \
- m4/lt~obsolete.m4 \
- missing \
- omf.make \
- py-compile \
- test-driver \
- xmldocs.make
-
-include $(top_srcdir)/Makefile.am.coverage
diff --git a/Makefile.am.coverage b/Makefile.am.coverage
deleted file mode 100644
index fb97747..0000000
--- a/Makefile.am.coverage
+++ /dev/null
@@ -1,48 +0,0 @@
-
-# Coverage targets
-
-.PHONY: clean-gcno clean-gcda \
- coverage-html generate-coverage-html clean-coverage-html \
- coverage-gcovr generate-coverage-gcovr clean-coverage-gcovr
-
-clean-local: clean-gcno clean-coverage-html clean-coverage-gcovr
-
-if HAVE_GCOV
-
-clean-gcno:
- @echo Removing old coverage instrumentation
- -find -name '*.gcno' -print | xargs -r rm
-
-clean-gcda:
- @echo Removing old coverage results
- -find -name '*.gcda' -print | xargs -r rm
-
-coverage-html: clean-gcda
- -$(MAKE) $(AM_MAKEFLAGS) -k check
- $(MAKE) $(AM_MAKEFLAGS) generate-coverage-html
-
-generate-coverage-html:
- @echo Collecting coverage data
- $(LCOV) --directory $(top_builddir) --capture --output-file coverage.info --no-checksum --compat-libtool
- LANG=C $(GENHTML) --prefix $(top_builddir) --output-directory coveragereport --title "Code Coverage" --legend --show-details coverage.info
-
-clean-coverage-html: clean-gcda
- -$(LCOV) --directory $(top_builddir) -z
- -rm -rf coverage.info coveragereport
-
-if HAVE_GCOVR
-
-coverage-gcovr: clean-gcda
- -$(MAKE) $(AM_MAKEFLAGS) -k check
- $(MAKE) $(AM_MAKEFLAGS) generate-coverage-gcovr
-
-generate-coverage-gcovr:
- @echo Generating coverage GCOVR report
- $(GCOVR) -x -r $(top_builddir) -o $(top_builddir)/coverage.xml
-
-clean-coverage-gcovr: clean-gcda
- -rm -rf $(top_builddir)/coverage.xml
-
-endif # HAVE_GCOVR
-
-endif # HAVE_GCOV
diff --git a/Makefile.am.enum b/Makefile.am.enum
deleted file mode 100644
index 0503de0..0000000
--- a/Makefile.am.enum
+++ /dev/null
@@ -1,45 +0,0 @@
-# Rules for generating enumeration types using glib-mkenums
-#
-# Define:
-# glib_enum_h = header template file
-# glib_enum_c = source template file
-# glib_enum_headers = list of headers to parse
-#
-# before including Makefile.am.enums. You will also need to have
-# the following targets already defined:
-#
-# CLEANFILES
-# DISTCLEANFILES
-# BUILT_SOURCES
-# EXTRA_DIST
-#
-# Author: Emmanuele Bassi <ebassi@linux.intel.com>
-
-enum_tmpl_h=$(glib_enum_h:.h=.h.in)
-enum_tmpl_c=$(glib_enum_c:.c=.c.in)
-
-CLEANFILES += stamp-enum-types
-DISTCLEANFILES += $(glib_enum_h) $(glib_enum_c)
-BUILT_SOURCES += $(glib_enum_h) $(glib_enum_c)
-EXTRA_DIST += $(enum_tmpl_h) $(enum_tmpl_c)
-
-stamp-enum-types: $(glib_enum_headers)
- $(QUIET_GEN)mkdir -p `dirname $(builddir)/$(glib_enum_h)`
- $(QUIET_GEN)$(GLIB_MKENUMS) \
- --template $(srcdir)/$(enum_tmpl_h) \
- $(glib_enum_headers) > xgen-eh \
- && (cmp -s xgen-eh $(builddir)/$(glib_enum_h) || cp -f xgen-eh $(builddir)/$(glib_enum_h)) \
- && rm -f xgen-eh \
- && echo timestamp > $(@F)
-
-$(glib_enum_h): stamp-enum-types
- @true
-
-$(glib_enum_c): $(glib_enum_h)
- $(QUIET_GEN)mkdir -p `dirname $(builddir)/$(glib_enum_c)`
- $(QUIET_GEN)$(GLIB_MKENUMS) \
- --template $(srcdir)/$(enum_tmpl_c) \
- $(glib_enum_headers) > xgen-ec \
- && cp -f xgen-ec $(builddir)/$(glib_enum_c) \
- && rm -f xgen-ec
-
diff --git a/Makefile.am.marshal b/Makefile.am.marshal
deleted file mode 100644
index a6ab024..0000000
--- a/Makefile.am.marshal
+++ /dev/null
@@ -1,45 +0,0 @@
-# Rules for generating marshal files using glib-genmarshal
-#
-# Define:
-# glib_marshal_list = marshal list file
-# glib_marshal_prefix = prefix for marshal functions
-#
-# before including Makefile.am.marshal. You will also need to have
-# the following targets already defined:
-#
-# CLEANFILES
-# DISTCLEANFILES
-# BUILT_SOURCES
-# EXTRA_DIST
-#
-# Author: Emmanuele Bassi <ebassi@linux.intel.com>
-
-marshal_h = $(glib_marshal_list:.list=.h)
-marshal_c = $(glib_marshal_list:.list=.c)
-
-CLEANFILES += stamp-marshal
-DISTCLEANFILES += $(marshal_h) $(marshal_c)
-BUILT_SOURCES += $(marshal_h) $(marshal_c)
-EXTRA_DIST += $(glib_marshal_list)
-
-stamp-marshal: $(glib_marshal_list)
- $(QUIET_GEN)$(GLIB_GENMARSHAL) \
- --prefix=$(glib_marshal_prefix) \
- --header \
- $(srcdir)/$(glib_marshal_list) > xgen-mh \
- && (cmp -s xgen-mh $(marshal_h) || cp -f xgen-mh $(marshal_h)) \
- && rm -f xgen-mh \
- && echo timestamp > $(@F)
-
-$(marshal_h): stamp-marshal
- @true
-
-$(marshal_c): $(marshal_h)
- $(QUIET_GEN)(echo "#include \"$(marshal_h)\"" ; \
- $(GLIB_GENMARSHAL) \
- --prefix=$(glib_marshal_prefix) \
- --body \
- $(srcdir)/$(glib_marshal_list)) > xgen-mc \
- && cp xgen-mc $(marshal_c) \
- && rm -f xgen-mc
-
diff --git a/acinclude.m4 b/acinclude.m4
deleted file mode 100644
index 8c75106..0000000
--- a/acinclude.m4
+++ /dev/null
@@ -1,247 +0,0 @@
-## ------------------------
-## Python file handling
-## From Andrew Dalke
-## Updated by James Henstridge
-## ------------------------
-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
-# Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
-# AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-
-# Adds support for distributing Python modules and packages. To
-# install modules, copy them to $(pythondir), using the python_PYTHON
-# automake variable. To install a package with the same name as the
-# automake package, install to $(pkgpythondir), or use the
-# pkgpython_PYTHON automake variable.
-
-# The variables $(pyexecdir) and $(pkgpyexecdir) are provided as
-# locations to install python extension modules (shared libraries).
-# Another macro is required to find the appropriate flags to compile
-# extension modules.
-
-# If your package is configured with a different prefix to python,
-# users will have to add the install directory to the PYTHONPATH
-# environment variable, or create a .pth file (see the python
-# documentation for details).
-
-# If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will
-# cause an error if the version of python installed on the system
-# doesn't meet the requirement. MINIMUM-VERSION should consist of
-# numbers and dots only.
-
-AC_DEFUN([AM_PATH_PYTHON],
- [
- dnl Find a Python interpreter. Python versions prior to 1.5 are not
- dnl supported because the default installation locations changed from
- dnl $prefix/lib/site-python in 1.4 to $prefix/lib/python1.5/site-packages
- dnl in 1.5.
- m4_define([_AM_PYTHON_INTERPRETER_LIST],
- [python python2 python2.4 python2.3 python2.2 dnl
-python2.1 python2.0 python1.6 python1.5])
-
- m4_if([$1],[],[
- dnl No version check is needed.
- # Find any Python interpreter.
- if test -z "$PYTHON"; then
- PYTHON=:
- AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST)
- fi
- am_display_PYTHON=python
- ], [
- dnl A version check is needed.
- if test -n "$PYTHON"; then
- # If the user set $PYTHON, use it and don't search something else.
- AC_MSG_CHECKING([whether $PYTHON version >= $1])
- AM_PYTHON_CHECK_VERSION([$PYTHON], [$1],
- [AC_MSG_RESULT(yes)],
- [AC_MSG_ERROR(too old)])
- am_display_PYTHON=$PYTHON
- else
- # Otherwise, try each interpreter until we find one that satisfies
- # VERSION.
- AC_CACHE_CHECK([for a Python interpreter with version >= $1],
- [am_cv_pathless_PYTHON],[
- for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do
- test "$am_cv_pathless_PYTHON" = none && break
- AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break])
- done])
- # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
- if test "$am_cv_pathless_PYTHON" = none; then
- PYTHON=:
- else
- AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON])
- fi
- am_display_PYTHON=$am_cv_pathless_PYTHON
- fi
- ])
-
- if test "$PYTHON" = :; then
- dnl Run any user-specified action, or abort.
- m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])])
- else
-
- dnl Query Python for its version number. Getting [:3] seems to be
- dnl the best way to do this; it's what "site.py" does in the standard
- dnl library.
-
- AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version],
- [am_cv_python_version=`$PYTHON -c "import sys; print sys.version[[:3]]"`])
- AC_SUBST([PYTHON_VERSION], [$am_cv_python_version])
-
- dnl Use the values of $prefix and $exec_prefix for the corresponding
- dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made
- dnl distinct variables so they can be overridden if need be. However,
- dnl general consensus is that you shouldn't need this ability.
-
- AC_SUBST([PYTHON_PREFIX], ['${prefix}'])
- AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}'])
-
- dnl At times (like when building shared libraries) you may want
- dnl to know which OS platform Python thinks this is.
-
- AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform],
- [am_cv_python_platform=`$PYTHON -c "import sys; print sys.platform"`])
- AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform])
-
-
- dnl Set up 4 directories:
-
- dnl pythondir -- where to install python scripts. This is the
- dnl site-packages directory, not the python standard library
- dnl directory like in previous automake betas. This behavior
- dnl is more consistent with lispdir.m4 for example.
- dnl Query distutils for this directory. distutils does not exist in
- dnl Python 1.5, so we fall back to the hardcoded directory if it
- dnl doesn't work.
- AC_CACHE_CHECK([for $am_display_PYTHON script directory],
- [am_cv_python_pythondir],
- [am_cv_python_pythondir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(0,0,prefix='$PYTHON_PREFIX')" 2>/dev/null ||
- echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"`])
- AC_SUBST([pythondir], [$am_cv_python_pythondir])
-
- dnl pkgpythondir -- $PACKAGE directory under pythondir. Was
- dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is
- dnl more consistent with the rest of automake.
-
- AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE])
-
- dnl pyexecdir -- directory for installing python extension modules
- dnl (shared libraries)
- dnl Query distutils for this directory. distutils does not exist in
- dnl Python 1.5, so we fall back to the hardcoded directory if it
- dnl doesn't work.
- AC_CACHE_CHECK([for $am_display_PYTHON extension module directory],
- [am_cv_python_pyexecdir],
- [am_cv_python_pyexecdir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(1,0,prefix='$PYTHON_EXEC_PREFIX')" 2>/dev/null ||
- echo "${PYTHON_EXEC_PREFIX}/lib/python${PYTHON_VERSION}/site-packages"`])
- AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir])
-
- dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE)
-
- AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE])
-
- dnl Run any user-specified action.
- $2
- fi
-
-])
-
-
-# AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
-# ---------------------------------------------------------------------------
-# Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION.
-# Run ACTION-IF-FALSE otherwise.
-# This test uses sys.hexversion instead of the string equivalent (first
-# word of sys.version), in order to cope with versions such as 2.2c1.
-# hexversion has been introduced in Python 1.5.2; it's probably not
-# worth to support older versions (1.5.1 was released on October 31, 1998).
-AC_DEFUN([AM_PYTHON_CHECK_VERSION],
- [prog="import sys, string
-# split strings by '.' and convert to numeric. Append some zeros
-# because we need at least 4 digits for the hex conversion.
-minver = map(int, string.split('$2', '.')) + [[0, 0, 0]]
-minverhex = 0
-for i in xrange(0, 4): minverhex = (minverhex << 8) + minver[[i]]
-sys.exit(sys.hexversion < minverhex)"
- AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])
-python.m4
-
-
-## this one is commonly used with AM_PATH_PYTHONDIR ...
-dnl AM_CHECK_PYMOD(MODNAME [,SYMBOL [,ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]]])
-dnl Check if a module containing a given symbol is visible to python.
-AC_DEFUN([AM_CHECK_PYMOD],
-[AC_REQUIRE([AM_PATH_PYTHON])
-py_mod_var=`echo $1['_']$2 | sed 'y%./+-%__p_%'`
-AC_MSG_CHECKING(for ifelse([$2],[],,[$2 in ])python module $1)
-AC_CACHE_VAL(py_cv_mod_$py_mod_var, [
-ifelse([$2],[], [prog="
-import sys
-try:
- import $1
-except ImportError:
- sys.exit(1)
-except:
- sys.exit(0)
-sys.exit(0)"], [prog="
-import $1
-$1.$2"])
-if $PYTHON -c "$prog" 1>&AC_FD_CC 2>&AC_FD_CC
- then
- eval "py_cv_mod_$py_mod_var=yes"
- else
- eval "py_cv_mod_$py_mod_var=no"
- fi
-])
-py_val=`eval "echo \`echo '$py_cv_mod_'$py_mod_var\`"`
-if test "x$py_val" != xno; then
- AC_MSG_RESULT(yes)
- ifelse([$3], [],, [$3
-])dnl
-else
- AC_MSG_RESULT(no)
- ifelse([$4], [],, [$4
-])dnl
-fi
-])
-
-dnl a macro to check for ability to create python extensions
-dnl AM_CHECK_PYTHON_HEADERS([ACTION-IF-POSSIBLE], [ACTION-IF-NOT-POSSIBLE])
-dnl function also defines PYTHON_INCLUDES
-AC_DEFUN([AM_CHECK_PYTHON_HEADERS],
-[AC_REQUIRE([AM_PATH_PYTHON])
-AC_MSG_CHECKING(for headers required to compile python extensions)
-dnl deduce PYTHON_INCLUDES
-py_prefix=`$PYTHON -c "import sys; print sys.prefix"`
-py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"`
-PYTHON_INCLUDES="`$PYTHON-config --includes`"
-if test "$py_prefix" != "$py_exec_prefix"; then
- PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}"
-fi
-AC_SUBST(PYTHON_INCLUDES)
-dnl check if the headers exist:
-save_CPPFLAGS="$CPPFLAGS"
-CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES"
-AC_TRY_CPP([#include <Python.h>],dnl
-[AC_MSG_RESULT(found)
-$1],dnl
-[AC_MSG_RESULT(not found)
-$2])
-CPPFLAGS="$save_CPPFLAGS"
-])
diff --git a/autogen.sh b/autogen.sh
deleted file mode 100755
index 4a6b4ec..0000000
--- a/autogen.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-PKG_NAME="libayatana-appindicator"
-
-which mate-autogen || {
- echo "You need mate-common from https://git.mate-desktop.org/mate-common"
- exit 1
-}
-
-gtkdocize || exit 1
-USE_COMMON_DOC_BUILD=yes \
-mate-autogen --enable-gtk-doc $@
diff --git a/bindings/CMakeLists.txt b/bindings/CMakeLists.txt
new file mode 100644
index 0000000..b4fa5de
--- /dev/null
+++ b/bindings/CMakeLists.txt
@@ -0,0 +1,2 @@
+add_subdirectory(vala)
+add_subdirectory(mono)
diff --git a/bindings/Makefile.am b/bindings/Makefile.am
deleted file mode 100644
index 804f729..0000000
--- a/bindings/Makefile.am
+++ /dev/null
@@ -1,13 +0,0 @@
-if USE_GTK3
-SUBDIRS = \
- vala
-else
-SUBDIRS = \
- vala
-endif
-
-if HAS_MONO
-SUBDIRS += mono
-endif
-
-DISTCLEANFILES = Makefile.in
diff --git a/bindings/mono/ApplicationIndicator.custom b/bindings/mono/ApplicationIndicator.custom
deleted file mode 100644
index 4992c08..0000000
--- a/bindings/mono/ApplicationIndicator.custom
+++ /dev/null
@@ -1,26 +0,0 @@
-[DllImport ("ayatana-appindicator.dll")]
-static extern int app_indicator_get_status (IntPtr i);
-
-[DllImport ("ayatana-appindicator.dll")]
-static extern int app_indicator_get_category (IntPtr i);
-
-[DllImport ("ayatana-appindicator.dll")]
-static extern void app_indicator_set_status (IntPtr i, int s);
-
- [GLib.Property ("status")]
- public AppIndicatorStatus AppIndicatorStatus {
- get {
- return (AppIndicatorStatus) app_indicator_get_status (Handle);
- }
-
- set {
- app_indicator_set_status (Handle, (int) value);
- }
- }
-
- [GLib.Property ("category")]
- public AppIndicatorCategory AppIndicatorCategory {
- get {
- return (AppIndicatorCategory) app_indicator_get_category (Handle);
- }
- }
diff --git a/bindings/mono/ApplicationIndicatorCustom.cs b/bindings/mono/ApplicationIndicatorCustom.cs
new file mode 100644
index 0000000..372b1c1
--- /dev/null
+++ b/bindings/mono/ApplicationIndicatorCustom.cs
@@ -0,0 +1,40 @@
+using System;
+using System.Runtime.InteropServices;
+
+namespace AyatanaAppIndicator
+{
+ public partial class ApplicationIndicator : GLib.Object
+ {
+ [DllImport ("ayatana-appindicator.dll")]
+ static extern int app_indicator_get_status (IntPtr i);
+
+ [DllImport ("ayatana-appindicator.dll")]
+ static extern int app_indicator_get_category (IntPtr i);
+
+ [DllImport ("ayatana-appindicator.dll")]
+ static extern void app_indicator_set_status (IntPtr i, int s);
+
+ [GLib.Property ("status")]
+ public AppIndicatorStatus AppIndicatorStatus
+ {
+ get
+ {
+ return (AppIndicatorStatus) app_indicator_get_status (Handle);
+ }
+
+ set
+ {
+ app_indicator_set_status (Handle, (int) value);
+ }
+ }
+
+ [GLib.Property ("category")]
+ public AppIndicatorCategory AppIndicatorCategory
+ {
+ get
+ {
+ return (AppIndicatorCategory) app_indicator_get_category (Handle);
+ }
+ }
+ }
+}
diff --git a/bindings/mono/AssemblyInfo.cs b/bindings/mono/AssemblyInfo.cs
index 297eda2..437ce53 100644
--- a/bindings/mono/AssemblyInfo.cs
+++ b/bindings/mono/AssemblyInfo.cs
@@ -24,7 +24,7 @@ using System.Reflection;
[assembly: AssemblyConfiguration ("")]
[assembly: AssemblyCompany ("Ayatana Project")]
[assembly: AssemblyProduct ("Ayatana AppIndicators")]
-[assembly: AssemblyCopyright ("© 2010 Canonical, Ltd.; © 2015 Mike Gabriel")]
+[assembly: AssemblyCopyright ("© 2010 Canonical, Ltd.; © 2015 Mike Gabriel; © 2021 Robert Tari")]
[assembly: AssemblyTrademark ("")]
[assembly: AssemblyCulture ("")]
-[assembly: AssemblyVersion ("0.5.5.0")]
+[assembly: AssemblyVersion ("0.5.90.0")]
diff --git a/bindings/mono/CMakeLists.txt b/bindings/mono/CMakeLists.txt
new file mode 100644
index 0000000..2a9d990
--- /dev/null
+++ b/bindings/mono/CMakeLists.txt
@@ -0,0 +1,203 @@
+# ayatana-appindicator-sharp3-0.1.pc
+
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/ayatana-appindicator-sharp3-0.1.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/ayatana-appindicator-sharp3-0.1.pc" @ONLY)
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ayatana-appindicator-sharp3-0.1.pc" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/pkgconfig")
+
+# ayatana-appindicator-sharp.dll.config
+
+file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/ayatana-appindicator-sharp.dll.config" DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
+install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/ayatana-appindicator-sharp.dll.config" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/cli/ayatana-appindicator-sharp3-0.1")
+
+# app-indicator.sources.xml
+
+file(RELATIVE_PATH REL_BIN ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_BINARY_DIR})
+file(RELATIVE_PATH REL_SRC ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR})
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/app-indicator.sources.xml.in" "${CMAKE_CURRENT_BINARY_DIR}/app-indicator.sources.xml" @ONLY)
+
+# libayatana-appindicator-api.raw
+
+find_program(GAPI3_PARSER gapi3-parser)
+
+add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-api.raw"
+ DEPENDS "src" "${CMAKE_CURRENT_BINARY_DIR}/app-indicator.sources.xml"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ COMMAND
+ ${GAPI3_PARSER}
+ "${CMAKE_CURRENT_BINARY_DIR}/app-indicator.sources.xml"
+)
+
+# libayatana-appindicator-api.middle
+
+find_program(GAPI3_FIXUP gapi3-fixup)
+
+add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-api.middle"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-api.raw"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ COMMAND
+ ${CMAKE_COMMAND}
+ -E copy
+ "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-api.raw"
+ "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-api.middle"
+ COMMAND
+ ${GAPI3_FIXUP}
+ --api=libayatana-appindicator-api.middle
+ --metadata="${CMAKE_CURRENT_SOURCE_DIR}/libayatana-appindicator-api.metadata"
+)
+
+# libayatana-appindicator-api.xml
+
+add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-api.xml"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-api.middle"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ VERBATIM
+ COMMAND
+ sed
+ -e "s|PROP_ID_S|id|"
+ -e "s|PROP_STATUS_S|Status|"
+ -e "s|PROP_STATUS_S|status|"
+ -e "s|PROP_CATEGORY_S|Category|"
+ -e "s|PROP_CATEGORY_S|category|"
+ -e "s|PROP_ICON_NAME_S|icon-name|"
+ -e "s|PROP_ICON_DESC_S|IconDesc|"
+ -e "s|PROP_ICON_DESC_S|icon-desc|"
+ -e "s|PROP_ATTENTION_ICON_NAME_S|AttentionIconName|"
+ -e "s|PROP_ATTENTION_ICON_NAME_S|attention-icon-name|"
+ -e "s|PROP_ATTENTION_ICON_DESC_S|AttentionIconDesc|"
+ -e "s|PROP_ATTENTION_ICON_DESC_S|attention-icon-desc|"
+ -e "s|PROP_ICON_THEME_PATH_S|icon-theme-path|"
+ -e "s|PROP_MENU_S|menu|"
+ -e "s|PROP_CONNECTED_S|connected|"
+ -e "s|PROP_LABEL_S|label|"
+ -e "s|PROP_LABEL_GUIDE_S|label-guide|"
+ -e "s|PROP_ORDERING_INDEX_S|ordering-index|"
+ -e "s|PROP_DBUS_MENU_SERVER_S|DbusMenuServer|"
+ -e "s|PROP_DBUS_MENU_SERVER_S|dbus-menu-server|"
+ -e "s|PROP_TITLE_S|Title|"
+ -e "s|PROP_TITLE_S|title|"
+ "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-api.middle" > "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-api.xml"
+)
+
+# AppIndicatorCategory.cs
+# NewAttentionIconHandler.cs
+# NewStatusHandler.cs
+# AppIndicatorStatus.cs
+# NewIconHandler.cs
+# ObjectManager.cs
+# ApplicationIndicator.cs
+# NewIconThemePathHandler.cs
+# ScrollEventHandler.cs
+# ConnectionChangedHandler.cs
+# NewLabelHandler.cs
+
+pkg_check_modules(GTK_SHARP_3_0 REQUIRED gtk-sharp-3.0>=2.99)
+string(REPLACE ":" ";-I:" GTK_SHARP_3_0_INCLUDE_DIRS ${GTK_SHARP_3_0_INCLUDE_DIRS})
+find_program(GAPI3_CODEGEN gapi3-codegen)
+
+add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/GtkSharp/ObjectManager.cs"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/AppIndicatorCategory.cs"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/NewAttentionIconHandler.cs"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/NewStatusHandler.cs"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/AppIndicatorStatus.cs"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/NewIconHandler.cs"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/ApplicationIndicator.cs"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/NewIconThemePathHandler.cs"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/ScrollEventHandler.cs"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/ConnectionChangedHandler.cs"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/NewLabelHandler.cs"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-api.xml"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ COMMAND
+ ${GAPI3_CODEGEN}
+ --generate libayatana-appindicator-api.xml
+ --outdir=${CMAKE_CURRENT_BINARY_DIR}
+ --assembly-name=ayatana-appindicator-sharp
+ ${GTK_SHARP_3_0_INCLUDE_DIRS}
+)
+
+# ayatana-appindicator-sharp.dll
+
+pkg_check_modules(MONO REQUIRED mono>=5.18)
+find_program(MCS mcs)
+
+add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/ayatana-appindicator-sharp.dll"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/GtkSharp/ObjectManager.cs"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/AppIndicatorCategory.cs"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/NewAttentionIconHandler.cs"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/NewStatusHandler.cs"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/AppIndicatorStatus.cs"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/NewIconHandler.cs"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/ApplicationIndicator.cs"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/NewIconThemePathHandler.cs"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/ScrollEventHandler.cs"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/ConnectionChangedHandler.cs"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/NewLabelHandler.cs"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ COMMAND
+ ${MCS}
+ -keyfile:"${CMAKE_CURRENT_SOURCE_DIR}/ayatana-appindicator-sharp.snk"
+ -nowarn:0169,0612,0618
+ -unsafe
+ -out:"${CMAKE_CURRENT_BINARY_DIR}/ayatana-appindicator-sharp.dll"
+ -target:library
+ ${GTK_SHARP_3_0_LDFLAGS} "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/*.cs" "${CMAKE_CURRENT_BINARY_DIR}/GtkSharp/ObjectManager.cs" "${CMAKE_CURRENT_SOURCE_DIR}/AssemblyInfo.cs" "${CMAKE_CURRENT_SOURCE_DIR}/ApplicationIndicatorCustom.cs"
+)
+
+find_program(GACUTIL gacutil)
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ayatana-appindicator-sharp.dll" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/cli/ayatana-appindicator-sharp3-0.1")
+install(CODE "execute_process(WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${GACUTIL} -i ${CMAKE_CURRENT_BINARY_DIR}/ayatana-appindicator-sharp.dll -package ayatana-appindicator-sharp -root ${CMAKE_INSTALL_FULL_LIBDIR})")
+
+# policy.0.0.ayatana-appindicator-sharp.config
+
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/policy.0.0.ayatana-appindicator-sharp.config.in" "${CMAKE_CURRENT_BINARY_DIR}/policy.0.0.ayatana-appindicator-sharp.config" @ONLY)
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/policy.0.0.ayatana-appindicator-sharp.config" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/cli/ayatana-appindicator-sharp3-0.1")
+
+# policy.0.0.ayatana-appindicator-sharp.dll
+
+find_program(AL al)
+
+add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/policy.0.0.ayatana-appindicator-sharp.dll"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/ayatana-appindicator-sharp.dll"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ COMMAND
+ ${AL}
+ -link:"${CMAKE_CURRENT_BINARY_DIR}/policy.0.0.ayatana-appindicator-sharp.config"
+ -out:"${CMAKE_CURRENT_BINARY_DIR}/policy.0.0.ayatana-appindicator-sharp.dll"
+ -keyfile:"${CMAKE_CURRENT_SOURCE_DIR}/ayatana-appindicator-sharp.snk"
+)
+
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/policy.0.0.ayatana-appindicator-sharp.dll" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/cli/ayatana-appindicator-sharp3-0.1")
+install(CODE "execute_process(WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${GACUTIL} -i ${CMAKE_CURRENT_BINARY_DIR}/policy.0.0.ayatana-appindicator-sharp.dll -package ayatana-appindicator-sharp -root ${CMAKE_INSTALL_FULL_LIBDIR})")
+
+# policy.0.1.ayatana-appindicator-sharp.config
+
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/policy.0.1.ayatana-appindicator-sharp.config.in" "${CMAKE_CURRENT_BINARY_DIR}/policy.0.1.ayatana-appindicator-sharp.config" @ONLY)
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/policy.0.1.ayatana-appindicator-sharp.config" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/cli/ayatana-appindicator-sharp3-0.1")
+
+# policy.0.1.ayatana-appindicator-sharp.dll
+
+find_program(AL al)
+
+add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/policy.0.1.ayatana-appindicator-sharp.dll"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/policy.0.0.ayatana-appindicator-sharp.dll"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ COMMAND
+ ${AL}
+ -link:"${CMAKE_CURRENT_BINARY_DIR}/policy.0.1.ayatana-appindicator-sharp.config"
+ -out:"${CMAKE_CURRENT_BINARY_DIR}/policy.0.1.ayatana-appindicator-sharp.dll"
+ -keyfile:"${CMAKE_CURRENT_SOURCE_DIR}/ayatana-appindicator-sharp.snk"
+)
+
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/policy.0.1.ayatana-appindicator-sharp.dll" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/cli/ayatana-appindicator-sharp3-0.1")
+
+add_custom_target("bindings-mono" ALL DEPENDS "policy.0.1.ayatana-appindicator-sharp.dll")
+
+if (ENABLE_TESTS)
+ add_subdirectory(examples)
+endif()
diff --git a/bindings/mono/Makefile.am b/bindings/mono/Makefile.am
deleted file mode 100644
index 3777e1b..0000000
--- a/bindings/mono/Makefile.am
+++ /dev/null
@@ -1,177 +0,0 @@
-SUBDIRS = . examples
-
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = ayatana-appindicator-sharp-0.1.pc
-
-if BUILD_MONO_TEST
-TEST = AyatanaAppIndicator.Test.dll
-endif
-
-API = libayatana-appindicator-api.xml
-MIDDLE_API = libayatana-appindicator-api.middle
-RAW_API = libayatana-appindicator-api.raw
-METADATA = libayatana-appindicator-api.metadata
-ASSEMBLY_NAME = ayatana-appindicator-sharp
-ASSEMBLY_VERSION = 0.5.5.0
-ASSEMBLY = $(ASSEMBLY_NAME).dll
-POLICY = policy.$(POLICY_VERSION).$(ASSEMBLY_NAME)
-POLICY_VERSION = 0.0
-DLLPOLICY = $(POLICY).dll
-POLICY1 = policy.$(POLICY1_VERSION).$(ASSEMBLY_NAME)
-POLICY1_VERSION = 0.1
-DLLPOLICY1 = $(POLICY1).dll
-WRAPPER_FREE_BINDING_SRC = $(top_srcdir)/src/app-indicator.c
-WRAPPER_FREE_BINDING = app-indicator.c
-
-TARGET = \
- $(ASSEMBLY) \
- $(ASSEMBLY).config \
- $(DLLPOLICY) \
- $(POLICY).config \
- $(DLLPOLICY1) \
- $(POLICY1).config
-
-assemblydir = $(libdir)/cli/ayatana-appindicator-sharp-0.1
-assembly_DATA = $(TARGET)
-
-CLEANFILES = \
- $(ASSEMBLY) \
- $(ASSEMBLY).mdb \
- generated-stamp \
- generated/*.cs \
- $(API) \
- $(MIDDLE_API) \
- $(RAW_API) \
- $(DLLPOLICY) \
- $(DLLPOLICY1) \
- $(WRAPPER_FREE_BINDING) \
- $(POLICY).config \
- $(POLICY1).config
-
-if BUILD_MONO_TEST
-CLEANFILES += $(TEST)
-endif
-
-DISTCLEANFILES = $(ASSEMBLY).config
-
-if BUILD_MONO_TEST
-TEST_SOURCES = TestAyatanaIndicator.cs
-endif
-
-customs = ApplicationIndicator.custom
-
-EXTRA_DIST = \
- AssemblyInfo.cs \
- $(RAW_API) \
- $(METADATA) \
- ayatana-appindicator-sharp-0.1.pc.in \
- ayatana-appindicator-sharp.dll.config.in \
- app-indicator.sources.xml.in \
- $(ASSEMBLY_NAME).snk \
- $(POLICY).config.in \
- $(POLICY1).config.in \
- $(customs)
-
-if BUILD_MONO_TEST
-EXTRA_DIST += $(TEST_SOURCES)
-endif
-
-GACUTIL_FLAGS=-package $(ASSEMBLY_NAME) -root $(DESTDIR)$(prefix)/lib
-
-references = $(GTK_SHARP_LIBS)
-
-if BUILD_MONO_TEST
-test_references = $(GTK_SHARP_LIBS) $(NUNIT_LIBS) $(MONO_NUNIT_LIBS) -r:$(ASSEMBLY)
-endif
-
-$(RAW_API): app-indicator.sources.xml $(WRAPPER_FREE_BINDING)
- $(GAPI_PARSER) app-indicator.sources.xml
-
-$(WRAPPER_FREE_BINDING): $(WRAPPER_FREE_BINDING_SRC)
- sed '/signals\[X_NEW_LABEL\] /,+6d' $(WRAPPER_FREE_BINDING_SRC) > $(WRAPPER_FREE_BINDING)
-
-$(MIDDLE_API): $(METADATA) $(RAW_API)
- cp $(RAW_API) $(MIDDLE_API)
- chmod u+w $(MIDDLE_API)
- @if test -n '$(METADATA)'; then \
- echo "$(GAPI_FIXUP) --api=$(MIDDLE_API) --metadata=$(srcdir)/$(METADATA)"; \
- $(GAPI_FIXUP) --api=$(MIDDLE_API) --metadata=$(srcdir)/$(METADATA); \
- fi
-
-$(API): $(MIDDLE_API) Makefile.am
- sed -e "s|PROP_ID_S|id|" \
- -e "s|PROP_STATUS_S|Status|" \
- -e "s|PROP_STATUS_S|status|" \
- -e "s|PROP_CATEGORY_S|Category|" \
- -e "s|PROP_CATEGORY_S|category|" \
- -e "s|PROP_ICON_NAME_S|icon-name|" \
- -e "s|PROP_ICON_DESC_S|IconDesc|" \
- -e "s|PROP_ICON_DESC_S|icon-desc|" \
- -e "s|PROP_ATTENTION_ICON_NAME_S|AttentionIconName|" \
- -e "s|PROP_ATTENTION_ICON_NAME_S|attention-icon-name|" \
- -e "s|PROP_ATTENTION_ICON_DESC_S|AttentionIconDesc|" \
- -e "s|PROP_ATTENTION_ICON_DESC_S|attention-icon-desc|" \
- -e "s|PROP_ICON_THEME_PATH_S|icon-theme-path|" \
- -e "s|PROP_MENU_S|menu|" \
- -e "s|PROP_CONNECTED_S|connected|" \
- -e "s|PROP_LABEL_S|label|" \
- -e "s|PROP_LABEL_GUIDE_S|label-guide|" \
- -e "s|PROP_ORDERING_INDEX_S|ordering-index|" \
- -e "s|PROP_DBUS_MENU_SERVER_S|DbusMenuServer|" \
- -e "s|PROP_DBUS_MENU_SERVER_S|dbus-menu-server|" \
- -e "s|PROP_TITLE_S|Title|" \
- -e "s|PROP_TITLE_S|title|" \
- $< > $@
-
-api_includes = $(GTK_SHARP_CFLAGS)
-
-build_customs = $(addprefix $(srcdir)/, $(customs))
-
-generated-stamp: $(API) $(build_customs)
- rm -f generated/* && \
- $(GAPI_CODEGEN) --generate $(API) $(api_includes) \
- --customdir=$(srcdir) \
- --outdir=generated --assembly-name=$(ASSEMBLY_NAME) \
- && touch generated-stamp
-
-$(ASSEMBLY): generated-stamp $(srcdir)/AssemblyInfo.cs
- @rm -f $(ASSEMBLY).mdb
- $(CSC) $(CSFLAGS) -keyfile:$(srcdir)/$(ASSEMBLY_NAME).snk -nowarn:0169,0612,0618 -unsafe -out:$(ASSEMBLY) -target:library $(references) $(builddir)/$(GENERATED_SOURCES) $(srcdir)/AssemblyInfo.cs
-
-install-data-local:
- echo "$(GACUTIL) -i $(ASSEMBLY_NAME).dll $(GACUTIL_FLAGS)"; \
- $(GACUTIL) -i $(ASSEMBLY_NAME).dll $(GACUTIL_FLAGS) || exit 1;
- echo "$(GACUTIL) -i $(DLLPOLICY) $(GACUTIL_FLAGS)"; \
- $(GACUTIL) -i $(DLLPOLICY) $(GACUTIL_FLAGS) || exit 1;
-
-uninstall-local:
- echo "$(GACUTIL) -u $(ASSEMBLY_NAME) $(GACUTIL_FLAGS)"; \
- $(GACUTIL) -u $(ASSEMBLY_NAME) $(GACUTIL_FLAGS) || exit 1;
- echo "$(GACUTIL) -u $(DLLPOLICY) $(GACUTIL_FLAGS)"; \
- $(GACUTIL) -u $(POLICY) $(GACUTIL_FLAGS) || exit 1;
-
-if BUILD_MONO_TEST
-$(TEST): $(ASSEMBLY) $(TEST_SOURCES)
- $(CSC) -out:$(TEST) -target:library $(test_references) $(srcdir)/$(TEST_SOURCES)
-
-check: $(TEST)
-endif
-
-$(POLICY).config: $(POLICY).config.in Makefile
- sed -e "s|@ASSEMBLY_NAME@|$(ASSEMBLY_NAME)|" \
- -e "s|@ASSEMBLY_VERSION@|$(ASSEMBLY_VERSION)|g" \
- $< > $@
-
-$(DLLPOLICY): $(POLICY).config $(ASSEMBLY_NAME).snk Makefile
- $(AL) -link:$(POLICY).config -out:$(DLLPOLICY) -keyfile:$(srcdir)/$(ASSEMBLY_NAME).snk
-
-
-$(POLICY1).config: $(POLICY1).config.in Makefile
- sed -e "s|@ASSEMBLY_NAME@|$(ASSEMBLY_NAME)|" \
- -e "s|@ASSEMBLY_VERSION@|$(ASSEMBLY_VERSION)|g" \
- $< > $@
-
-$(DLLPOLICY1): $(POLICY1).config $(ASSEMBLY_NAME).snk Makefile
- $(AL) -link:$(POLICY1).config -out:$(DLLPOLICY1) -keyfile:$(srcdir)/$(ASSEMBLY_NAME).snk
-
-DISTCLEANFILES += Makefile.in
diff --git a/bindings/mono/app-indicator.sources.xml.in b/bindings/mono/app-indicator.sources.xml.in
index 9a283ea..4746179 100644
--- a/bindings/mono/app-indicator.sources.xml.in
+++ b/bindings/mono/app-indicator.sources.xml.in
@@ -1,12 +1,12 @@
<gapi-parser-input>
- <api filename="libayatana-appindicator-api.raw">
- <library name="ayatana-appindicator.dll">
- <namespace name="AyatanaAppIndicator">
- <file>@top_builddir@/bindings/mono/app-indicator.c</file>
- <file>@top_builddir@/src/app-indicator-enum-types.c</file>
- <file>@top_builddir@/src/app-indicator-enum-types.h</file>
- <file>@top_srcdir@/src/app-indicator.h</file>
- </namespace>
- </library>
- </api>
+ <api filename="libayatana-appindicator-api.raw">
+ <library name="ayatana-appindicator.dll">
+ <namespace name="AyatanaAppIndicator">
+ <file>@REL_SRC@src/app-indicator.c</file>
+ <file>@REL_BIN@src/app-indicator-enum-types.c</file>
+ <file>@REL_BIN@src/app-indicator-enum-types.h</file>
+ <file>@REL_SRC@src/app-indicator.h</file>
+ </namespace>
+ </library>
+ </api>
</gapi-parser-input>
diff --git a/bindings/mono/ayatana-appindicator-sharp.dll.config b/bindings/mono/ayatana-appindicator-sharp.dll.config
new file mode 100644
index 0000000..c8f653f
--- /dev/null
+++ b/bindings/mono/ayatana-appindicator-sharp.dll.config
@@ -0,0 +1,7 @@
+<configuration>
+ <dllmap dll="ayatana-appindicator.dll" target="libayatana-appindicator3.so.1"/>
+ <dllmap dll="libgtk-3.0-0.dll" target="libgtk-3.0.so.0"/>
+ <dllmap dll="libglib-2.0-0.dll" target="libglib-2.0.so.0"/>
+ <dllmap dll="libgobject-2.0-0.dll" target="libgobject-2.0.so.0"/>
+ <dllmap dll="libgthread-2.0-0.dll" target="libgthread-2.0.so.0"/>
+</configuration>
diff --git a/bindings/mono/ayatana-appindicator-sharp.dll.config.in b/bindings/mono/ayatana-appindicator-sharp.dll.config.in
deleted file mode 100644
index 7061914..0000000
--- a/bindings/mono/ayatana-appindicator-sharp.dll.config.in
+++ /dev/null
@@ -1,7 +0,0 @@
-<configuration>
- <dllmap dll="ayatana-appindicator.dll" target="libayatana-appindicator@LIB_PREFIX@.1@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/bindings/mono/ayatana-appindicator-sharp-0.1.pc.in b/bindings/mono/ayatana-appindicator-sharp3-0.1.pc.in
index 6c091ed..955e6ba 100644
--- a/bindings/mono/ayatana-appindicator-sharp-0.1.pc.in
+++ b/bindings/mono/ayatana-appindicator-sharp3-0.1.pc.in
@@ -1,12 +1,12 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-assemblies_dir=${prefix}/lib/cli/ayatana-appindicator-sharp-0.1
+prefix=@CMAKE_INSTALL_PREFIX@
+exec_prefix=${prefix}
+libdir=@CMAKE_INSTALL_FULL_LIBDIR@
+assemblies_dir=@CMAKE_INSTALL_FULL_LIBDIR@/cli/ayatana-appindicator-sharp3-0.1
Name: ayatana-appindicator-sharp
Description: application indicators for .NET
-Version: @VERSION@
+Version: @PROJECT_VERSION@
Libraries: ${assemblies_dir}/ayatana-appindicator-sharp.dll ${assemblies_dir}/ayatana-appindicator-sharp.dll.config
-Requires: gtk-sharp-2.0
+Requires: gtk-sharp-3.0
Cflags:
Libs: -r:${assemblies_dir}/ayatana-appindicator-sharp.dll
diff --git a/bindings/mono/examples/CMakeLists.txt b/bindings/mono/examples/CMakeLists.txt
new file mode 100644
index 0000000..431a654
--- /dev/null
+++ b/bindings/mono/examples/CMakeLists.txt
@@ -0,0 +1,20 @@
+# ayatana-indicator-example
+
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/ayatana-indicator-example.in" "${CMAKE_CURRENT_BINARY_DIR}/ayatana-indicator-example" @ONLY)
+
+# AyatanaIndicatorExample.exe
+
+find_program(MONO mono)
+
+add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaIndicatorExample.exe"
+ DEPENDS "bindings-mono"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ COMMAND
+ ${MCS}
+ -out:"${CMAKE_CURRENT_BINARY_DIR}/AyatanaIndicatorExample.exe"
+ -target:exe
+ ${GTK_SHARP_3_0_LDFLAGS} "-r:${CMAKE_BINARY_DIR}/bindings/mono/ayatana-appindicator-sharp.dll" "${CMAKE_CURRENT_SOURCE_DIR}/AyatanaIndicatorExample.cs"
+)
+
+add_custom_target("bindings-mono-examples" ALL DEPENDS "AyatanaIndicatorExample.exe")
diff --git a/bindings/mono/examples/Makefile.am b/bindings/mono/examples/Makefile.am
deleted file mode 100644
index de93b20..0000000
--- a/bindings/mono/examples/Makefile.am
+++ /dev/null
@@ -1,13 +0,0 @@
-ASSEMBLY = AyatanaIndicatorExample.exe
-CSFILES = AyatanaIndicatorExample.cs
-CLEANFILES = $(ASSEMBLY)
-DISTCLEANFILES = Makefile.in
-
-EXTRA_DIST = $(CSFILES)
-
-references = $(GTK_SHARP_LIBS) -r:$(top_builddir)/bindings/mono/ayatana-appindicator-sharp.dll
-
-$(ASSEMBLY): $(CSFILES) Makefile.am
- $(CSC) $(CSFLAGS) -out:$(ASSEMBLY) -target:exe $(references) $(srcdir)/$(CSFILES)
-
-all: $(ASSEMBLY)
diff --git a/bindings/mono/examples/ayatana-indicator-example.in b/bindings/mono/examples/ayatana-indicator-example.in
index 07d1473..3f63b3d 100755
--- a/bindings/mono/examples/ayatana-indicator-example.in
+++ b/bindings/mono/examples/ayatana-indicator-example.in
@@ -1,2 +1,2 @@
#!/bin/sh
-MONO_PATH=@top_builddir@/bindings/mono @top_builddir@/bindings/mono/examples/AyatanaIndicatorExample.exe
+MONO_PATH=@CMAKE_BINARY_DIR@/bindings/mono @CMAKE_CURRENT_BINARY_DIR@/AyatanaIndicatorExample.exe
diff --git a/bindings/mono/policy.0.0.ayatana-appindicator-sharp.config.in b/bindings/mono/policy.0.0.ayatana-appindicator-sharp.config.in
index e1fe0db..0801da0 100644
--- a/bindings/mono/policy.0.0.ayatana-appindicator-sharp.config.in
+++ b/bindings/mono/policy.0.0.ayatana-appindicator-sharp.config.in
@@ -1,10 +1,10 @@
<configuration>
- <runtime>
- <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
- <dependentAssembly>
- <assemblyIdentity name="@ASSEMBLY_NAME@" publicKeyToken="bcae265d1c7ab4c2" />
- <bindingRedirect oldVersion="0.0.0.0-0.1.0.0" newVersion="@ASSEMBLY_VERSION@"/>
- </dependentAssembly>
- </assemblyBinding>
- </runtime>
+ <runtime>
+ <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+ <dependentAssembly>
+ <assemblyIdentity name="ayatana-appindicator-sharp" publicKeyToken="bcae265d1c7ab4c2" />
+ <bindingRedirect oldVersion="0.0.0.0-0.1.0.0" newVersion="@PROJECT_VERSION@.0"/>
+ </dependentAssembly>
+ </assemblyBinding>
+ </runtime>
</configuration>
diff --git a/bindings/mono/policy.0.1.ayatana-appindicator-sharp.config.in b/bindings/mono/policy.0.1.ayatana-appindicator-sharp.config.in
index 0a8f9b1..f5a082d 100644
--- a/bindings/mono/policy.0.1.ayatana-appindicator-sharp.config.in
+++ b/bindings/mono/policy.0.1.ayatana-appindicator-sharp.config.in
@@ -1,10 +1,10 @@
<configuration>
- <runtime>
- <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
- <dependentAssembly>
- <assemblyIdentity name="@ASSEMBLY_NAME@" publicKeyToken="bcae265d1c7ab4c2" />
- <bindingRedirect oldVersion="0.1.0.0-@ASSEMBLY_VERSION@" newVersion="@ASSEMBLY_VERSION@"/>
- </dependentAssembly>
- </assemblyBinding>
- </runtime>
+ <runtime>
+ <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+ <dependentAssembly>
+ <assemblyIdentity name="ayatana-appindicator-sharp" publicKeyToken="bcae265d1c7ab4c2" />
+ <bindingRedirect oldVersion="0.1.0.0-@PROJECT_VERSION@.0" newVersion="@PROJECT_VERSION@.0"/>
+ </dependentAssembly>
+ </assemblyBinding>
+ </runtime>
</configuration>
diff --git a/bindings/vala/CMakeLists.txt b/bindings/vala/CMakeLists.txt
new file mode 100644
index 0000000..6d0aa5d
--- /dev/null
+++ b/bindings/vala/CMakeLists.txt
@@ -0,0 +1,29 @@
+# ayatana-appindicator3-0.1.deps
+
+install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/ayatana-appindicator3-0.1.deps" DESTINATION "${CMAKE_INSTALL_FULL_DATADIR}/vala/vapi")
+
+# AyatanaAppIndicator3-0.1.vala
+
+find_package(Vala REQUIRED QUIET)
+
+add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator3-0.1.vala"
+ DEPENDS "src" "${CMAKE_BINARY_DIR}/src/AyatanaAppIndicator3-0.1.typelib"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ COMMAND
+ ${VAPI_GEN}
+ --library=ayatana-appindicator3-0.1
+ --pkg gtk+-3.0
+ --girdir="${CMAKE_SOURCE_DIR}/src"
+ --metadatadir "${CMAKE_SOURCE_DIR}/src"
+ "${CMAKE_BINARY_DIR}/src/AyatanaAppIndicator3-0.1.gir"
+ "${CMAKE_CURRENT_SOURCE_DIR}/ayatana-appindicator-0.1-custom.vala"
+)
+
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ayatana-appindicator3-0.1.vapi" DESTINATION "${CMAKE_INSTALL_FULL_DATADIR}/vala/vapi")
+
+add_custom_target("bindings-vala" ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator3-0.1.vala")
+
+if (ENABLE_TESTS)
+ add_subdirectory(examples)
+endif()
diff --git a/bindings/vala/Makefile.am b/bindings/vala/Makefile.am
deleted file mode 100644
index 2763bc3..0000000
--- a/bindings/vala/Makefile.am
+++ /dev/null
@@ -1,41 +0,0 @@
-if HAVE_INTROSPECTION
-if HAVE_VAPIGEN
-
-SUBDIRS = . examples
-
-#########################
-# VAPI Files
-#########################
-
-if USE_GTK3
-GTKVAPI = gtk+-3.0
-VER=3
-else
-GTKVAPI = gtk+-2.0
-VER=
-endif
-
-vapidir = $(datadir)/vala/vapi
-vapiprefix = ayatana-appindicator$(VER)-0.1
-vapi_DATA = $(vapiprefix).vapi $(vapiprefix).deps
-DEPS = $(GTKVAPI)
-
-$(vapiprefix).deps:
- echo $(DEPS) > $@
-
-$(vapiprefix).vapi: $(top_builddir)/src/AyatanaAppIndicator$(VER)-0.1.gir \
- $(top_builddir)/src/AyatanaAppIndicator$(VER)-0.1.metadata \
- ayatana-appindicator-0.1-custom.vala \
- $(vapiprefix).deps
- $(VALA_API_GEN) --library=$(vapiprefix) --girdir=$(srcdir)/src \
- $< $(srcdir)/ayatana-appindicator-0.1-custom.vala
-
-
-CLEANFILES = $(vapi_DATA)
-DISTCLEANFILES = Makefile.in
-
-endif
-endif
-
-EXTRA_DIST = \
- ayatana-appindicator-0.1-custom.vala
diff --git a/bindings/vala/ayatana-appindicator3-0.1.deps b/bindings/vala/ayatana-appindicator3-0.1.deps
new file mode 100644
index 0000000..f48ab98
--- /dev/null
+++ b/bindings/vala/ayatana-appindicator3-0.1.deps
@@ -0,0 +1,3 @@
+gtk+-3.0
+glib-2.0
+Dbusmenu-0.4
diff --git a/bindings/vala/examples/CMakeLists.txt b/bindings/vala/examples/CMakeLists.txt
new file mode 100644
index 0000000..f393939
--- /dev/null
+++ b/bindings/vala/examples/CMakeLists.txt
@@ -0,0 +1,27 @@
+# ayatana-indicator-example.c
+
+add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/ayatana-indicator-example.c"
+ DEPENDS "bindings-vala"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ COMMAND
+ ${VALA_COMPILER}
+ --pkg ayatana-appindicator3-0.1
+ --pkg gtk+-3.0
+ --vapidir=${CMAKE_BINARY_DIR}/bindings/vala
+ -C ayatana-indicator-example.vala
+ --metadatadir "${CMAKE_SOURCE_DIR}/src"
+ --directory=${CMAKE_CURRENT_BINARY_DIR}
+ VERBATIM
+ COMMAND
+ sed
+ -i "s|#include\\s*<\\s*libayatana-appindicator/app-indicator.h\\s*>||g"
+ "${CMAKE_CURRENT_BINARY_DIR}/ayatana-indicator-example.c"
+)
+
+# ayatana-indicator-example
+
+set_source_files_properties("${CMAKE_CURRENT_BINARY_DIR}/ayatana-indicator-example.c" PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS} -include ${CMAKE_SOURCE_DIR}/src/app-indicator.h")
+add_executable("ayatana-indicator-example" "${CMAKE_CURRENT_BINARY_DIR}/ayatana-indicator-example.c")
+target_include_directories("ayatana-indicator-example" PUBLIC ${PROJECT_DEPS_INCLUDE_DIRS})
+target_link_libraries("ayatana-indicator-example" "${PROJECT_DEPS_LIBRARIES} -layatana-appindicator3 -L${CMAKE_BINARY_DIR}/src")
diff --git a/bindings/vala/examples/Makefile.am b/bindings/vala/examples/Makefile.am
deleted file mode 100644
index 315447c..0000000
--- a/bindings/vala/examples/Makefile.am
+++ /dev/null
@@ -1,40 +0,0 @@
-if USE_GTK3
-VER=3
-else
-VER=
-endif
-
-VALAFILES = ayatana-indicator-example.vala
-EXTRA_DIST = $(VALAFILES)
-
-VALAFLAGS = \
- --pkg ayatana-appindicator$(VER)-0.1 \
- --vapidir=$(top_builddir)/bindings/vala \
- --save-temps
-
-if HAVE_VALAC
-
-BUILT_SOURCES = ayatana-indicator-example.c
-
-ayatana-indicator-example.c: $(VALAFILES) Makefile.am
- $(VALAC) $(VALAFLAGS) -C $< -o $@
- $(SED) -i "s|#include\s*<\s*libayatana-appindicator/app-indicator.h\s*>||g" $@
-
-nodist_ayatana_indicator_example_SOURCES = ayatana-indicator-example.c
-ayatana_indicator_example_CFLAGS = \
- $(LIBRARY_CFLAGS) \
- -Wall \
- -I$(top_srcdir)/src \
- -include $(top_srcdir)/src/app-indicator.h
-ayatana_indicator_example_LDADD = \
- $(LIBRARY_LIBS) \
- $(top_builddir)/src/libayatana-appindicator$(VER).la
-
-check_PROGRAMS = ayatana-indicator-example
-
-CLEANFILES = \
- *.c \
- ayatana-indicator-example
-DISTCLEANFILES = Makefile.in
-
-endif
diff --git a/cmake/FindGObjectIntrospection.cmake b/cmake/FindGObjectIntrospection.cmake
new file mode 100644
index 0000000..2073c3c
--- /dev/null
+++ b/cmake/FindGObjectIntrospection.cmake
@@ -0,0 +1,61 @@
+# - try to find gobject-introspection
+#
+# Once done this will define
+#
+# INTROSPECTION_FOUND - system has gobject-introspection
+# INTROSPECTION_SCANNER - the gobject-introspection scanner, g-ir-scanner
+# INTROSPECTION_COMPILER - the gobject-introspection compiler, g-ir-compiler
+# INTROSPECTION_GENERATE - the gobject-introspection generate, g-ir-generate
+# INTROSPECTION_GIRDIR
+# INTROSPECTION_TYPELIBDIR
+# INTROSPECTION_CFLAGS
+# INTROSPECTION_LIBS
+#
+# Copyright (C) 2010, Pino Toscano, <pino@kde.org>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+macro(_GIR_GET_PKGCONFIG_VAR _outvar _varname)
+ execute_process(
+ COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=${_varname} gobject-introspection-1.0
+ OUTPUT_VARIABLE _result
+ RESULT_VARIABLE _null
+ )
+
+ if (_null)
+ else()
+ string(REGEX REPLACE "[\r\n]" " " _result "${_result}")
+ string(REGEX REPLACE " +$" "" _result "${_result}")
+ separate_arguments(_result)
+ set(${_outvar} ${_result} CACHE INTERNAL "")
+ endif()
+endmacro(_GIR_GET_PKGCONFIG_VAR)
+
+find_package(PkgConfig)
+if(PKG_CONFIG_FOUND)
+ if(PACKAGE_FIND_VERSION_COUNT GREATER 0)
+ set(_gir_version_cmp ">=${PACKAGE_FIND_VERSION}")
+ endif()
+ pkg_check_modules(_pc_gir gobject-introspection-1.0${_gir_version_cmp})
+ if(_pc_gir_FOUND)
+ set(INTROSPECTION_FOUND TRUE)
+ _gir_get_pkgconfig_var(INTROSPECTION_SCANNER "g_ir_scanner")
+ _gir_get_pkgconfig_var(INTROSPECTION_COMPILER "g_ir_compiler")
+ _gir_get_pkgconfig_var(INTROSPECTION_GENERATE "g_ir_generate")
+ _gir_get_pkgconfig_var(INTROSPECTION_GIRDIR "girdir")
+ _gir_get_pkgconfig_var(INTROSPECTION_TYPELIBDIR "typelibdir")
+ set(INTROSPECTION_CFLAGS "${_pc_gir_CFLAGS}")
+ set(INTROSPECTION_LIBS "${_pc_gir_LIBS}")
+ endif()
+endif()
+
+mark_as_advanced(
+ INTROSPECTION_SCANNER
+ INTROSPECTION_COMPILER
+ INTROSPECTION_GENERATE
+ INTROSPECTION_GIRDIR
+ INTROSPECTION_TYPELIBDIR
+ INTROSPECTION_CFLAGS
+ INTROSPECTION_LIBS
+)
diff --git a/cmake/FindVala.cmake b/cmake/FindVala.cmake
new file mode 100644
index 0000000..a638735
--- /dev/null
+++ b/cmake/FindVala.cmake
@@ -0,0 +1,57 @@
+# - Find Vala
+# This module looks for valac.
+# This module defines the following values:
+# VALA_FOUND
+# VALA_COMPILER
+# VALA_VERSION
+# VAPI_GEN
+# VAPI_GEN_VERSION
+
+#=============================================================================
+# Copyright Přemysl Janouch 2011
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+# OF SUCH DAMAGE.
+#=============================================================================
+
+find_program (VALA_COMPILER "valac")
+
+if (VALA_COMPILER)
+ execute_process (COMMAND ${VALA_COMPILER} --version
+ OUTPUT_VARIABLE VALA_VERSION)
+ string (REGEX MATCH "[.0-9]+" VALA_VERSION "${VALA_VERSION}")
+endif (VALA_COMPILER)
+
+find_program (VAPI_GEN "vapigen")
+
+if (VAPI_GEN)
+ execute_process (COMMAND ${VAPI_GEN} --version
+ OUTPUT_VARIABLE VAPI_GEN_VERSION)
+ string (REGEX MATCH "[.0-9]+" VAPI_GEN_VERSION "${VAPI_GEN_VERSION}")
+endif (VAPI_GEN)
+
+include (FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS (Vala
+ REQUIRED_VARS VALA_COMPILER
+ VERSION_VAR VALA_VERSION)
+
+mark_as_advanced (VALA_COMPILER VALA_VERSION VAPI_GEN)
+
diff --git a/cmake/UseGObjectIntrospection.cmake b/cmake/UseGObjectIntrospection.cmake
new file mode 100644
index 0000000..d6d1810
--- /dev/null
+++ b/cmake/UseGObjectIntrospection.cmake
@@ -0,0 +1,100 @@
+# Copyright (C) 2010, Pino Toscano, <pino@kde.org>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+include(ListOperations)
+
+macro(_gir_list_prefix _outvar _listvar _prefix)
+ set(${_outvar})
+ foreach(_item IN LISTS ${_listvar})
+ list(APPEND ${_outvar} ${_prefix}${_item})
+ endforeach()
+endmacro(_gir_list_prefix)
+
+macro(gir_add_introspections introspections_girs)
+
+ foreach(gir IN LISTS ${introspections_girs})
+
+ set(_gir_name "${gir}")
+
+ ## Transform the gir filename to something which can reference through a variable
+ ## without automake/make complaining, eg Gtk-2.0.gir -> Gtk_2_0_gir
+ string(REPLACE "-" "_" _gir_name "${_gir_name}")
+ string(REPLACE "." "_" _gir_name "${_gir_name}")
+
+ # Namespace and Version is either fetched from the gir filename
+ # or the _NAMESPACE/_VERSION variable combo
+ set(_gir_namespace "${${_gir_name}_NAMESPACE}")
+ if (_gir_namespace STREQUAL "")
+ string(REGEX REPLACE "([^-]+)-.*" "\\1" _gir_namespace "${gir}")
+ endif ()
+ set(_gir_version "${${_gir_name}_VERSION}")
+ if (_gir_version STREQUAL "")
+ string(REGEX REPLACE ".*-([^-]+).gir" "\\1" _gir_version "${gir}")
+ endif ()
+
+ # _PROGRAM is an optional variable which needs it's own --program argument
+ set(_gir_program "${${_gir_name}_PROGRAM}")
+ if (NOT _gir_program STREQUAL "")
+ set(_gir_program "--program=${_gir_program}")
+ endif ()
+
+ # Variables which provides a list of things
+ _gir_list_prefix(_gir_libraries ${_gir_name}_LIBS "--library=")
+ _gir_list_prefix(_gir_packages ${_gir_name}_PACKAGES "--pkg=")
+ _gir_list_prefix(_gir_includes ${_gir_name}_INCLUDES "--include=")
+ _gir_list_prefix(_gir_export_packages ${_gir_name}_EXPORT_PACKAGES "--pkg-export=")
+
+ # Reuse the LIBTOOL variable from by automake if it's set
+ set(_gir_libtool "--no-libtool")
+
+ add_custom_command(
+ COMMAND ${INTROSPECTION_SCANNER}
+ ${INTROSPECTION_SCANNER_ARGS}
+ --namespace=${_gir_namespace}
+ --nsversion=${_gir_version}
+ ${_gir_libtool}
+ ${_gir_program}
+ ${_gir_libraries}
+ ${_gir_packages}
+ ${_gir_includes}
+ ${_gir_export_packages}
+ ${${_gir_name}_SCANNERFLAGS}
+ ${${_gir_name}_CFLAGS}
+ ${${_gir_name}_FILES}
+ --output ${CMAKE_CURRENT_BINARY_DIR}/${gir}
+ DEPENDS ${${_gir_name}_FILES}
+ ${${_gir_name}_LIBS}
+ OUTPUT ${gir}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ VERBATIM
+ )
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${gir} DESTINATION share/gir-1.0)
+
+ string(REPLACE ".gir" ".typelib" _typelib "${gir}")
+ add_custom_command(
+ COMMAND ${INTROSPECTION_COMPILER}
+ ${INTROSPECTION_COMPILER_ARGS}
+ --includedir=.
+ ${CMAKE_CURRENT_BINARY_DIR}/${gir}
+ -o ${CMAKE_CURRENT_BINARY_DIR}/${_typelib}
+ DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${gir}
+ OUTPUT ${_typelib}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ )
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${_typelib} DESTINATION ${CMAKE_INSTALL_LIBDIR}/girepository-1.0)
+
+ add_custom_target(gir-${gir} ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${gir})
+ add_custom_target(gir-typelibs-${_typelib} ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${_typelib})
+ endforeach()
+
+endmacro(gir_add_introspections)
+
+macro(gir_get_cflags _output)
+ get_directory_property(_tmp_includes INCLUDE_DIRECTORIES)
+ list_prefix(_includes _tmp_includes "-I")
+ get_directory_property(_tmp_compile_definitions COMPILE_DEFINITIONS)
+ list_prefix(_compile_definitions _tmp_compile_definitions "-D")
+ set(${_output} ${_includes} ${_compile_definitions})
+endmacro(gir_get_cflags)
diff --git a/cmake/UseVala.cmake b/cmake/UseVala.cmake
new file mode 100644
index 0000000..f0202e2
--- /dev/null
+++ b/cmake/UseVala.cmake
@@ -0,0 +1,241 @@
+# - Precompilation of Vala/Genie source files into C sources
+# Makes use of the parallel build ability introduced in Vala 0.11. Derived
+# from a similar module by Jakob Westhoff and the original GNU Make rules.
+# Might be a bit oversimplified.
+#
+# This module defines three functions. The first one:
+#
+# vala_init (id
+# [DIRECTORY dir] - Output directory (binary dir by default)
+# [PACKAGES package...] - Package dependencies
+# [OPTIONS option...] - Extra valac options
+# [CUSTOM_VAPIS file...]) - Custom vapi files to include in the build
+# [DEPENDS targets...]) - Extra dependencies for code generation
+#
+# initializes a single precompilation unit using the given arguments.
+# You can put files into it via the following function:
+#
+# vala_add (id source.vala
+# [DEPENDS source...]) - Vala/Genie source or .vapi dependencies
+#
+# Finally retrieve paths for generated C files by calling:
+#
+# vala_finish (id
+# [SOURCES sources_var] - Input Vala/Genie sources
+# [OUTPUTS outputs_var] - Output C sources
+# [GENERATE_HEADER id.h - Generate id.h and id_internal.h
+# [GENERATE_VAPI id.vapi] - Generate a vapi file
+# [GENERATE_SYMBOLS id.def]]) - Generate a list of public symbols
+#
+
+#=============================================================================
+# Copyright Přemysl Janouch 2011
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+# OF SUCH DAMAGE.
+#=============================================================================
+
+find_package (Vala 0.20 REQUIRED)
+include (CMakeParseArguments)
+
+function (vala_init id)
+ set (_multi_value PACKAGES OPTIONS CUSTOM_VAPIS DEPENDS)
+ cmake_parse_arguments (arg "" "DIRECTORY" "${_multi_value}" ${ARGN})
+
+ if (arg_DIRECTORY)
+ set (directory ${arg_DIRECTORY})
+ if (NOT IS_DIRECTORY ${directory})
+ file (MAKE_DIRECTORY ${directory})
+ endif (NOT IS_DIRECTORY ${directory})
+ else (arg_DIRECTORY)
+ set (directory ${CMAKE_CURRENT_BINARY_DIR})
+ endif (arg_DIRECTORY)
+
+ set (pkg_opts)
+ foreach (pkg ${arg_PACKAGES})
+ list (APPEND pkg_opts "--pkg=${pkg}")
+ endforeach (pkg)
+
+ set (VALA_${id}_DIR "${directory}" PARENT_SCOPE)
+ set (VALA_${id}_ARGS ${pkg_opts} ${arg_OPTIONS}
+ ${arg_CUSTOM_VAPIS} PARENT_SCOPE)
+ set (VALA_${id}_DEPENDS ${arg_DEPENDS}
+ PARENT_SCOPE)
+
+ set (VALA_${id}_SOURCES "" PARENT_SCOPE)
+ set (VALA_${id}_OUTPUTS "" PARENT_SCOPE)
+ set (VALA_${id}_FAST_VAPI_FILES "" PARENT_SCOPE)
+ set (VALA_${id}_FAST_VAPI_ARGS "" PARENT_SCOPE)
+endfunction (vala_init)
+
+function (vala_add id file)
+ cmake_parse_arguments (arg "" "" "DEPENDS" ${ARGN})
+
+ if (NOT IS_ABSOLUTE "${file}")
+ set (file "${CMAKE_CURRENT_SOURCE_DIR}/${file}")
+ endif (NOT IS_ABSOLUTE "${file}")
+
+ get_filename_component (output_name "${file}" NAME)
+ get_filename_component (output_base "${file}" NAME_WE)
+ set (output_base "${VALA_${id}_DIR}/${output_base}")
+
+ # XXX: It would be best to have it working without touching the vapi
+ # but it appears this cannot be done in CMake.
+ add_custom_command (OUTPUT "${output_base}.vapi"
+ COMMAND ${VALA_COMPILER} "${file}" "--fast-vapi=${output_base}.vapi"
+ COMMAND ${CMAKE_COMMAND} -E touch "${output_base}.vapi"
+ DEPENDS "${file}"
+ COMMENT "Generating a fast vapi for ${output_name}" VERBATIM)
+
+ set (vapi_opts)
+ set (vapi_depends)
+ foreach (vapi ${arg_DEPENDS})
+ if (NOT IS_ABSOLUTE "${vapi}")
+ set (vapi "${VALA_${id}_DIR}/${vapi}.vapi")
+ endif (NOT IS_ABSOLUTE "${vapi}")
+
+ list (APPEND vapi_opts "--use-fast-vapi=${vapi}")
+ list (APPEND vapi_depends "${vapi}")
+ endforeach (vapi)
+
+ add_custom_command (OUTPUT "${output_base}.c"
+ COMMAND ${VALA_COMPILER} "${file}" -C ${vapi_opts} ${VALA_${id}_ARGS}
+ COMMAND ${CMAKE_COMMAND} -E touch "${output_base}.c"
+ DEPENDS "${file}" ${vapi_depends} ${VALA_${id}_DEPENDS}
+ WORKING_DIRECTORY "${VALA_${id}_DIR}"
+ COMMENT "Precompiling ${output_name}" VERBATIM)
+
+ set (VALA_${id}_SOURCES ${VALA_${id}_SOURCES}
+ "${file}" PARENT_SCOPE)
+ set (VALA_${id}_OUTPUTS ${VALA_${id}_OUTPUTS}
+ "${output_base}.c" PARENT_SCOPE)
+ set (VALA_${id}_FAST_VAPI_FILES ${VALA_${id}_FAST_VAPI_FILES}
+ "${output_base}.vapi" PARENT_SCOPE)
+ set (VALA_${id}_FAST_VAPI_ARGS ${VALA_${id}_FAST_VAPI_ARGS}
+ "--use-fast-vapi=${output_base}.vapi" PARENT_SCOPE)
+endfunction (vala_add)
+
+function (vala_finish id)
+ set (_one_value SOURCES OUTPUTS
+ GENERATE_VAPI GENERATE_HEADER GENERATE_SYMBOLS)
+ cmake_parse_arguments (arg "" "${_one_value}" "" ${ARGN})
+
+ if (arg_SOURCES)
+ set (${arg_SOURCES} ${VALA_${id}_SOURCES} PARENT_SCOPE)
+ endif (arg_SOURCES)
+
+ if (arg_OUTPUTS)
+ set (${arg_OUTPUTS} ${VALA_${id}_OUTPUTS} PARENT_SCOPE)
+ endif (arg_OUTPUTS)
+
+ set (outputs)
+ set (export_args)
+
+ if (arg_GENERATE_VAPI)
+ if (NOT IS_ABSOLUTE "${arg_GENERATE_VAPI}")
+ set (arg_GENERATE_VAPI
+ "${VALA_${id}_DIR}/${arg_GENERATE_VAPI}")
+ endif (NOT IS_ABSOLUTE "${arg_GENERATE_VAPI}")
+
+ list (APPEND outputs "${arg_GENERATE_VAPI}")
+ list (APPEND export_args "--internal-vapi=${arg_GENERATE_VAPI}")
+
+ if (NOT arg_GENERATE_HEADER)
+ message (FATAL_ERROR "Header generation required for vapi")
+ endif (NOT arg_GENERATE_HEADER)
+ endif (arg_GENERATE_VAPI)
+
+ if (arg_GENERATE_SYMBOLS)
+ if (NOT IS_ABSOLUTE "${arg_GENERATE_SYMBOLS}")
+ set (arg_GENERATE_SYMBOLS
+ "${VALA_${id}_DIR}/${arg_GENERATE_SYMBOLS}")
+ endif (NOT IS_ABSOLUTE "${arg_GENERATE_SYMBOLS}")
+
+ list (APPEND outputs "${arg_GENERATE_SYMBOLS}")
+ list (APPEND export_args "--symbols=${arg_GENERATE_SYMBOLS}")
+
+ if (NOT arg_GENERATE_HEADER)
+ message (FATAL_ERROR "Header generation required for symbols")
+ endif (NOT arg_GENERATE_HEADER)
+ endif (arg_GENERATE_SYMBOLS)
+
+ if (arg_GENERATE_HEADER)
+ if (NOT IS_ABSOLUTE "${arg_GENERATE_HEADER}")
+ set (arg_GENERATE_HEADER
+ "${VALA_${id}_DIR}/${arg_GENERATE_HEADER}")
+ endif (NOT IS_ABSOLUTE "${arg_GENERATE_HEADER}")
+
+ get_filename_component (header_path "${arg_GENERATE_HEADER}" PATH)
+ get_filename_component (header_name "${arg_GENERATE_HEADER}" NAME_WE)
+ set (header_base "${header_path}/${header_name}")
+ get_filename_component (header_ext "${arg_GENERATE_HEADER}" EXT)
+
+ list (APPEND outputs
+ "${header_base}${header_ext}"
+ "${header_base}_internal${header_ext}")
+ list (APPEND export_args
+ "--header=${header_base}${header_ext}"
+ "--internal-header=${header_base}_internal${header_ext}")
+ endif (arg_GENERATE_HEADER)
+
+ if (outputs)
+ add_custom_command (OUTPUT ${outputs}
+ COMMAND ${VALA_COMPILER} -C ${VALA_${id}_ARGS}
+ ${export_args} ${VALA_${id}_FAST_VAPI_ARGS}
+ DEPENDS ${VALA_${id}_FAST_VAPI_FILES}
+ COMMENT "Generating vapi/headers/symbols" VERBATIM)
+ endif (outputs)
+endfunction (vala_finish id)
+
+
+function (vapi_gen id)
+ set (_one_value LIBRARY INPUT)
+ set (_multi_value PACKAGES)
+ cmake_parse_arguments (arg "" "${_one_value}" "${_multi_value}" ${ARGN})
+
+ set(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${id}.vapi")
+ if (arg_LIBRARY)
+ set (OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${arg_LIBRARY}.vapi")
+ endif (arg_LIBRARY)
+
+ set("${id}_OUTPUT" ${OUTPUT} PARENT_SCOPE)
+
+ set(PACKAGE_LIST)
+ foreach(PACKAGE ${arg_PACKAGES})
+ list(APPEND PACKAGE_LIST "--pkg" ${PACKAGE})
+ endforeach()
+
+ add_custom_command(
+ OUTPUT
+ ${OUTPUT}
+ COMMAND
+ ${VAPI_GEN}
+ ${PACKAGE_LIST}
+ --library=${arg_LIBRARY}
+ ${arg_INPUT}
+ DEPENDS
+ ${arg_INPUT}
+ VERBATIM
+ )
+
+ add_custom_target(${id} ALL DEPENDS ${OUTPUT})
+endfunction (vapi_gen id)
+
diff --git a/configure.ac b/configure.ac
deleted file mode 100644
index 77ac763..0000000
--- a/configure.ac
+++ /dev/null
@@ -1,247 +0,0 @@
-AC_INIT([libayatana-appindicator],
- [0.5.5],
- [https://github.com/ArcticaProject/libayatana-appindicator/issues],
- [libayatana-appindicator],
- [https://github.com/ArcticaProject/libayatana-appindicator])
-AC_COPYRIGHT([Copyright 2009, 2010 Canonical
-Copyright 2015, Arctica Project])
-
-AC_PREREQ([2.64])
-
-AC_CONFIG_HEADERS([config.h])
-AC_CONFIG_MACRO_DIR([m4])
-
-AM_INIT_AUTOMAKE([1.11 -Wall tar-pax])
-
-AM_MAINTAINER_MODE([enable])
-
-AM_SILENT_RULES([yes])
-
-# Check for programs
-AC_PROG_CC
-AM_PROG_CC_C_O
-AM_PROG_AR
-
-# Initialize libtool
-LT_PREREQ([2.2])
-LT_INIT
-
-AC_PATH_PROG([GLIB_MKENUMS], [glib-mkenums])
-AC_PATH_PROG([GLIB_GENMARSHAL], [glib-genmarshal])
-
-PKG_PROG_PKG_CONFIG
-
-###########################
-# GTK Doc
-###########################
-
-GTK_DOC_CHECK([1.14],[--flavour no-tmpl])
-
-
-###########################
-# Dependencies
-###########################
-
-GTK_REQUIRED_VERSION=2.18
-GTK3_REQUIRED_VERSION=2.91
-GLIB_REQUIRED_VERSION=2.35.4
-GIO_REQUIRED_VERSION=2.26
-INDICATOR_REQUIRED_VERSION=0.6.0
-DBUSMENUGTK_REQUIRED_VERSION=0.5.90
-DBUS_GLIB_REQUIRED_VERSION=0.82
-
-AC_ARG_WITH([gtk],
- [AS_HELP_STRING([--with-gtk],
- [Which version of gtk to use @<:@default=3@:>@])],
- [],
- [with_gtk=3])
-AS_IF([test "x$with_gtk" = x3],
- [PKG_CHECK_MODULES(LIBRARY, gtk+-3.0 >= $GTK3_REQUIRED_VERSION
- glib-2.0 >= $GLIB_REQUIRED_VERSION
- gio-2.0 >= $GIO_REQUIRED_VERSION
- ayatana-indicator3-0.4 >= $INDICATOR_REQUIRED_VERSION
- dbusmenu-gtk3-0.4 >= $DBUSMENUGTK_REQUIRED_VERSION)
- AC_DEFINE(HAVE_GTK3, 1, [whether gtk3 is available])
- ],
- [test "x$with_gtk" = x2],
- [PKG_CHECK_MODULES(LIBRARY, gtk+-2.0 >= $GTK_REQUIRED_VERSION
- glib-2.0 >= $GLIB_REQUIRED_VERSION
- gio-2.0 >= $GIO_REQUIRED_VERSION
- ayatana-indicator-0.4 >= $INDICATOR_REQUIRED_VERSION
- dbusmenu-gtk-0.4 >= $DBUSMENUGTK_REQUIRED_VERSION)
- ],
- [AC_MSG_FAILURE([Value for --with-gtk was neither 2 nor 3])]
-)
-AM_CONDITIONAL(USE_GTK3, [test "x$with_gtk" = x3])
-
-PKG_CHECK_MODULES(TESTDEPS, dbus-glib-1)
-
-###########################
-# GObject Introspection
-###########################
-
-GOBJECT_INTROSPECTION_CHECK([0.6.7])
-
-PKG_CHECK_EXISTS([gobject-introspection-1.0 >= 0.10],
- introspection_ten=yes,
- introspection_ten=no)
-
-AM_CONDITIONAL(INTROSPECTION_TEN, [test "x$introspection_ten" = "xyes"])
-
-###########################
-# Vala API Generation
-###########################
-
-AC_PATH_PROG([VALA_API_GEN], [vapigen])
-AM_CONDITIONAL(HAVE_VAPIGEN, [test "x$VALA_API_GEN" != "x"])
-
-###########################
-# Vala Compiler support
-###########################
-
-AM_PROG_VALAC([0.14.0])
-AM_CONDITIONAL(HAVE_VALAC, [test "x$VALAC" != "x"])
-
-###########################
-# Check for Mono support
-###########################
-
-MONO_REQUIRED_VERSION=1.0
-PKG_CHECK_MODULES(MONO_DEPENDENCY, mono >= $MONO_REQUIRED_VERSION, has_mono=true, has_mono=false)
-AM_CONDITIONAL(HAS_MONO, [test "x$has_mono" = "xtrue"])
-
-AC_PATH_PROG(AL, al, no)
-if test "x$AL" = "xno" ; then
- AC_MSG_NOTICE([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, mono-csc, no)
- LIB_PREFIX=.so
- LIB_SUFFIX=
-fi
-
-if test "x$CSC" = "xno" ; then
- AC_MSG_NOTICE([No Mono compiler found.])
-fi
-
-AC_PATH_PROG(GACUTIL, gacutil, no)
-if test "x$GACUTIL" = "xno" ; then
- AC_MSG_NOTICE([No gacutil tool found])
-fi
-
-AC_SUBST(RUNTIME)
-AC_SUBST(CSC)
-AC_SUBST(GACUTIL)
-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, has_gtksharp=true, has_gtksharp=false)
-
-PKG_CHECK_MODULES(GAPI, gapi-2.0 >= $GLIB_SHARP_REQ_VERSION, has_gapi=true, has_gapi=false)
-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 for nunit
-AC_ARG_ENABLE([mono-test],
- AC_HELP_STRING([--disable-mono-test], [Disable mono test]),,
- [enable_mono_test=auto])
-
-if test x"$enable_mono_test" != x"no" ; then
- PKG_CHECK_MODULES(NUNIT, nunit >= 2.4.7,
- [have_nunit=yes],
- [PKG_CHECK_MODULES(MONO_NUNIT, mono-nunit,
- [have_nunit=yes],
- [have_nunit=no])
- ])
- if test x${enable_mono_test} = xyes && test x${have_nunit} = xno; then
- AC_MSG_ERROR([Mono test configured but nunit not found])
- fi
-else
- have_nunit=no
-fi
-AM_CONDITIONAL(BUILD_MONO_TEST, test x${have_nunit} = xyes)
-
-#########################
-# Check if build tests
-#########################
-AC_ARG_ENABLE([tests],
- AC_HELP_STRING([--disable-tests], [Disable tests]),,
- [enable_tests=yes])
-AM_CONDITIONAL([WANT_TESTS], [test "x$enable_tests" != "xno"])
-
-###########################
-# gcov coverage reporting
-###########################
-
-m4_include([m4/gcov.m4])
-AC_TDD_GCOV
-AM_CONDITIONAL([HAVE_GCOV], [test "x$ac_cv_check_gcov" = xyes])
-AM_CONDITIONAL([HAVE_LCOV], [test "x$ac_cv_check_lcov" = xyes])
-AM_CONDITIONAL([HAVE_GCOVR], [test "x$ac_cv_check_gcovr" = xyes])
-AC_SUBST(COVERAGE_CFLAGS)
-AC_SUBST(COVERAGE_CXXFLAGS)
-AC_SUBST(COVERAGE_LDFLAGS)
-
-###########################
-# Files
-###########################
-
-AC_CONFIG_FILES([
-Makefile
-src/Makefile
-src/ayatana-appindicator-0.1.pc
-src/ayatana-appindicator3-0.1.pc
-bindings/Makefile
-bindings/vala/Makefile
-bindings/vala/examples/Makefile
-tests/Makefile
-example/Makefile
-docs/Makefile
-docs/reference/Makefile
-docs/reference/version.xml
-docs/reference/libayatana-appindicator-docs.sgml
-])
-
-if test "x$has_mono" = "xtrue" ; then
- AC_CONFIG_FILES([
- bindings/mono/Makefile
- bindings/mono/ayatana-appindicator-sharp.dll.config
- bindings/mono/ayatana-appindicator-sharp-0.1.pc
- bindings/mono/app-indicator.sources.xml
- bindings/mono/examples/Makefile
- bindings/mono/examples/ayatana-indicator-example
- ])
-fi
-
-AC_OUTPUT
-
-###########################
-# Results
-###########################
-
-AC_MSG_NOTICE([
-
-libayatana-appindicator Configuration:
-
- Prefix: $prefix
- GTK+ Version: $with_gtk
- Mono: $has_mono
- Tests: $enable_tests
- Mono tests: $have_nunit
- gcov: $use_gcov
-])
diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt
new file mode 100644
index 0000000..90bb2b5
--- /dev/null
+++ b/docs/CMakeLists.txt
@@ -0,0 +1 @@
+add_subdirectory(reference)
diff --git a/docs/Makefile.am b/docs/Makefile.am
deleted file mode 100644
index e12f36d..0000000
--- a/docs/Makefile.am
+++ /dev/null
@@ -1,2 +0,0 @@
-SUBDIRS = reference
-DISTCLEANFILES = Makefile.in
diff --git a/docs/reference/CMakeLists.txt b/docs/reference/CMakeLists.txt
new file mode 100644
index 0000000..6ae064a
--- /dev/null
+++ b/docs/reference/CMakeLists.txt
@@ -0,0 +1,233 @@
+
+# libayatana-appindicator-docs.sgml
+
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/libayatana-appindicator-docs.sgml.in" "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-docs.sgml" @ONLY)
+
+# version.xml
+
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/version.xml.in" "${CMAKE_CURRENT_BINARY_DIR}/version.xml" @ONLY)
+
+# libayatana-appindicator-decl.txt
+# libayatana-appindicator-decl-list.txt
+# libayatana-appindicator-overrides.txt
+# libayatana-appindicator-sections.txt
+
+find_program(GTKDOC_SCAN gtkdoc-scan)
+
+add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-decl.txt"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-decl-list.txt"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-overrides.txt"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-sections.txt"
+ DEPENDS "src"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ COMMAND
+ ${GTKDOC_SCAN}
+ --ignore-headers="app-indicator-enum-types.h;application-service-appstore.h;application-service-client.h;application-service-lru-file.h;application-service-marshal.h;application-service-server.h;application-service-watcher.h;dbus-properties-client.h;dbus-properties-server.h;dbus-shared.h;generate-id.h;notification-item-client.h;notification-item-server.h;notification-watcher-client.h;notification-watcher-server.h"
+ --module=libayatana-appindicator
+ --source-dir="${CMAKE_SOURCE_DIR}/src"
+ --source-dir="${CMAKE_BINARY_DIR}/src"
+)
+
+# libayatana-appindicator.types
+
+add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator.types"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-decl.txt"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-decl-list.txt"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-overrides.txt"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-sections.txt"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ COMMAND
+ ${CMAKE_COMMAND}
+ -E copy
+ "${CMAKE_CURRENT_SOURCE_DIR}/libayatana-appindicator.types"
+ "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator.types"
+)
+
+# scangobj.sh
+
+list(JOIN PROJECT_DEPS_INCLUDE_DIRS " -I" GTKDOC_SCANGOBJ_INCLUDE_DIRS)
+list(JOIN PROJECT_DEPS_LIBRARIES " -l" GTKDOC_SCANGOBJ_LIBRARIES)
+
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/scangobj.sh.in" "${CMAKE_CURRENT_BINARY_DIR}/scangobj.sh")
+
+# libayatana-appindicator.actions
+# libayatana-appindicator.args
+# libayatana-appindicator.hierarchy
+# libayatana-appindicator.interfaces
+# libayatana-appindicator.prerequisites
+# libayatana-appindicator.signals
+
+add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator.actions"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator.args"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator.hierarchy"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator.interfaces"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator.prerequisites"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator.signals"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator.types"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ COMMAND sh scangobj.sh
+)
+
+# gtkdocentities.ent
+
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/xml/gtkdocentities.ent" "<!ENTITY package \"libayatana-appindicator\">")
+file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/xml/gtkdocentities.ent" "\n<!ENTITY package_bugreport \"https://github.com/AyatanaIndicators/libayatana-appindicator/issues\">")
+file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/xml/gtkdocentities.ent" "\n<!ENTITY package_name \"libayatana-appindicator\">")
+file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/xml/gtkdocentities.ent" "\n<!ENTITY package_string \"libayatana-appindicator ${PROJECT_VERSION}\">")
+file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/xml/gtkdocentities.ent" "\n<!ENTITY package_tarname \"libayatana-appindicator\">")
+file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/xml/gtkdocentities.ent" "\n<!ENTITY package_url \"https://github.com/AyatanaIndicators/libayatana-appindicator\">")
+file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/xml/gtkdocentities.ent" "\n<!ENTITY package_version \"${PROJECT_VERSION}\">")
+
+# libayatana-appindicator-undeclared.txt
+# libayatana-appindicator-undocumented.txt
+# libayatana-appindicator-unused.txt
+# xml/annotation-glossary.xml
+# xml/api-index-0.5.xml
+# xml/api-index-deprecated.xml
+# xml/api-index-full.xml
+# xml/app-indicator.xml
+# xml/libayatana-appindicator-doc.bottom
+# xml/libayatana-appindicator-doc.top
+# xml/object_index.sgml
+# xml/tree_index.sgml
+
+find_program(GTKDOC_MKDB gtkdoc-mkdb)
+list(JOIN PROJECT_DEPS_INCLUDE_DIRS ";-I" GTKDOC_SCANGOBJ_INCLUDE_DIRS)
+list(JOIN PROJECT_DEPS_LIBRARIES ";-l" GTKDOC_SCANGOBJ_LIBRARIES)
+
+add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-undeclared.txt"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-undocumented.txt"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-unused.txt"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/xml/annotation-glossary.xml"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/xml/api-index-0.5.xml"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/xml/api-index-deprecated.xml"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/xml/api-index-full.xml"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/xml/app-indicator.xml"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/xml/libayatana-appindicator-doc.bottom"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/xml/libayatana-appindicator-doc.top"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/xml/object_index.sgml"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/xml/tree_index.sgml"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator.actions"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator.args"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator.hierarchy"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator.interfaces"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator.prerequisites"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator.signals"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ COMMAND
+ ${GTKDOC_MKDB}
+ --module=libayatana-appindicator
+ --output-format=xml
+ --expand-content-files=""
+ --main-sgml-file=libayatana-appindicator-docs.sgml
+ --source-dir="${CMAKE_SOURCE_DIR}/src"
+ --sgml-mode
+)
+
+# html
+file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/html")
+
+# html/annotation-glossary.html
+# html/api-index-0-5.html
+# html/api-index-deprecated.html
+# html/api-index-full.html
+# html/AppIndicator.html
+# html/ch01.html
+# html/home.png
+# html/index.html
+# html/left.png
+# html/left-insensitive.png
+# html/libayatana-appindicator.devhelp2
+# html/object-tree.html
+# html/right.png
+# html/right-insensitive.png
+# html/style.css
+# html/up.png
+# html/up-insensitive.png
+
+find_program(GTKDOC_MKHTML gtkdoc-mkhtml)
+
+add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/annotation-glossary.html"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/api-index-0-5.html"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/api-index-deprecated.html"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/api-index-full.html"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/AppIndicator.html"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/ch01.html"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/home.png"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/index.html"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/left.png"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/left-insensitive.png"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/libayatana-appindicator.devhelp2"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/object-tree.html"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/right.png"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/right-insensitive.png"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/style.css"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/up.png"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/up-insensitive.png"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-undeclared.txt"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-undocumented.txt"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-unused.txt"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/xml/annotation-glossary.xml"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/xml/api-index-0.5.xml"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/xml/api-index-deprecated.xml"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/xml/api-index-full.xml"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/xml/app-indicator.xml" "xml/libayatana-appindicator-doc.bottom"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/xml/libayatana-appindicator-doc.top"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/xml/object_index.sgml"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/xml/tree_index.sgml"
+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/html"
+ COMMAND
+ ${GTKDOC_MKHTML}
+ --path=${CMAKE_CURRENT_BINARY_DIR}
+ libayatana-appindicator
+ libayatana-appindicator-docs.sgml
+)
+
+# html/annotation-glossary.html
+# html/api-index-0-5.html
+# html/api-index-deprecated.html
+# html/api-index-full.html
+# html/AppIndicator.html
+# html/ch01.html
+# html/index.html
+# html/object-tree.html
+# html/style.css
+
+find_program(GTKDOC_FIXXREF gtkdoc-fixxref)
+
+add_custom_command(
+ OUTPUT "fixxref"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/annotation-glossary.html"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/api-index-0-5.html"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/api-index-deprecated.html"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/api-index-full.html"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/AppIndicator.html"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/ch01.html"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/home.png"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/index.html"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/left.png"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/left-insensitive.png"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/libayatana-appindicator.devhelp2"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/object-tree.html"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/right.png"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/right-insensitive.png"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/style.css"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/up.png"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/up-insensitive.png"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ COMMAND
+ ${GTKDOC_FIXXREF}
+ --module=libayatana-appindicator
+ --module-dir=html
+ --html-dir="${CMAKE_INSTALL_FULL_DATADIR}/gtk-doc/html"
+)
+
+set_source_files_properties("fixxref" PROPERTIES SYMBOLIC True)
+install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/html/" DESTINATION "${CMAKE_INSTALL_FULL_DATADIR}/gtk-doc/html/libayatana-appindicator")
+
+add_custom_target("docs-references" ALL DEPENDS "fixxref")
diff --git a/docs/reference/Makefile.am b/docs/reference/Makefile.am
deleted file mode 100644
index 950ec37..0000000
--- a/docs/reference/Makefile.am
+++ /dev/null
@@ -1,125 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-# We require automake 1.6 at least.
-AUTOMAKE_OPTIONS = 1.6
-
-if USE_GTK3
-VER=3
-APPINDICATORLIB = libayatana-appindicator3.la
-else
-VER=
-APPINDICATORLIB = libayatana-appindicator.la
-endif
-
-# This is a blank Makefile.am for using gtk-doc.
-# Copy this to your project's API docs directory and modify the variables to
-# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
-# of using the various options.
-
-# The name of the module, e.g. 'glib'.
-DOC_MODULE=libayatana-appindicator
-
-# Uncomment for versioned docs and specify the version of the module, e.g. '2'.
-#DOC_MODULE_VERSION=2
-
-
-# The top-level SGML file. You can change this if you want to.
-DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml
-
-# The directory containing the source code. Relative to $(srcdir).
-# gtk-doc will search all .c & .h files beneath here for inline comments
-# documenting the functions and macros.
-# e.g. DOC_SOURCE_DIR=../../../gtk
-DOC_SOURCE_DIR=$(top_srcdir)/src
-
-# Extra options to pass to gtkdoc-scangobj. Not normally needed.
-SCANGOBJ_OPTIONS= --type-init-func="g_type_init()"
-
-# Extra options to supply to gtkdoc-scan.
-# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
-#SCAN_OPTIONS=--rebuild-types --rebuild-sections
-SCAN_OPTIONS=
-
-# Extra options to supply to gtkdoc-mkdb.
-# e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml
-MKDB_OPTIONS=--sgml-mode --output-format=xml
-
-# Extra options to supply to gtkdoc-mktmpl
-# e.g. MKTMPL_OPTIONS=--only-section-tmpl
-MKTMPL_OPTIONS=
-
-# Extra options to supply to gtkdoc-mkhtml
-MKHTML_OPTIONS=
-
-# Extra options to supply to gtkdoc-fixref. Not normally needed.
-# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
-FIXXREF_OPTIONS=
-
-# Used for dependencies. The docs will be rebuilt if any of these change.
-# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
-# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
-HFILE_GLOB=$(top_srcdir)/src/app-indicator*.h
-CFILE_GLOB=$(top_srcdir)/src/app-indicator*.c
-
-# Header files to ignore when scanning.
-# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h
-IGNORE_HFILES= \
- app-indicator-enum-types.h \
- application-service-appstore.h \
- application-service-client.h \
- application-service-lru-file.h \
- application-service-marshal.h \
- application-service-server.h \
- application-service-watcher.h \
- dbus-properties-client.h \
- dbus-properties-server.h \
- dbus-shared.h \
- generate-id.h \
- notification-item-client.h \
- notification-item-server.h \
- notification-watcher-client.h \
- notification-watcher-server.h
-
-# Images to copy into HTML directory.
-# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
-HTML_IMAGES=
-
-# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
-# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
-content_files=version.xml
-
-# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
-# These files must be listed here *and* in content_files
-# e.g. expand_content_files=running.sgml
-expand_content_files=
-
-# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
-# Only needed if you are using gtkdoc-scangobj to dynamically query widget
-# signals and properties.
-# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
-# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
-GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_srcdir)/src $(LIBRARY_CFLAGS)
-GTKDOC_LIBS=$(top_builddir)/src/$(APPINDICATORLIB) $(LIBRARY_LIBS)
-
-# This includes the standard gtk-doc make rules, copied by gtkdocize.
-include $(top_srcdir)/gtk-doc.make
-
-# Other files to distribute
-# e.g. EXTRA_DIST += version.xml.in
-EXTRA_DIST += version.xml.in libayatana-appindicator-docs.sgml.in
-
-# Files not to distribute
-# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
-# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
-#DISTCLEANFILES +=
-
-# Comment this out if you want 'make check' to test you doc status
-# and run some sanity checks
-if ENABLE_GTK_DOC
-TESTS_ENVIRONMENT = cd $(srcdir) && \
- DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \
- SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir)
-#TESTS = $(GTKDOC_CHECK)
-endif
-
-DISTCLEANFILES = Makefile.in \ No newline at end of file
diff --git a/docs/reference/libayatana-appindicator-docs.sgml.in b/docs/reference/libayatana-appindicator-docs.sgml.in
index e76b2ec..b30a891 100644
--- a/docs/reference/libayatana-appindicator-docs.sgml.in
+++ b/docs/reference/libayatana-appindicator-docs.sgml.in
@@ -8,7 +8,7 @@
<bookinfo>
<title>libayatana-appindicator Reference Manual</title>
<releaseinfo>
- for libayatana-appindicator @VERSION@
+ for libayatana-appindicator @PROJECT_VERSION@
</releaseinfo>
</bookinfo>
diff --git a/docs/reference/scangobj.sh.in b/docs/reference/scangobj.sh.in
new file mode 100644
index 0000000..0272865
--- /dev/null
+++ b/docs/reference/scangobj.sh.in
@@ -0,0 +1 @@
+LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${CMAKE_BINARY_DIR}/src" CFLAGS="-I${GTKDOC_SCANGOBJ_INCLUDE_DIRS}" LDFLAGS="-l${GTKDOC_SCANGOBJ_LIBRARIES} -L${CMAKE_BINARY_DIR}/src -layatana-appindicator3" gtkdoc-scangobj --type-init-func="g_type_init()" --module=libayatana-appindicator > /dev/null
diff --git a/docs/reference/version.xml.in b/docs/reference/version.xml.in
index d78bda9..fdee238 100644
--- a/docs/reference/version.xml.in
+++ b/docs/reference/version.xml.in
@@ -1 +1 @@
-@VERSION@
+@PROJECT_VERSION@
diff --git a/example/CMakeLists.txt b/example/CMakeLists.txt
new file mode 100644
index 0000000..ba8839e
--- /dev/null
+++ b/example/CMakeLists.txt
@@ -0,0 +1,37 @@
+# simple-client-vala.c
+
+add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/simple-client-vala.c"
+ DEPENDS "bindings-vala"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ COMMAND
+ ${VALA_COMPILER}
+ --pkg ayatana-appindicator3-0.1
+ --pkg gtk+-3.0
+ --vapidir=${CMAKE_BINARY_DIR}/bindings/vala
+ -C simple-client-vala.vala
+ --directory=${CMAKE_CURRENT_BINARY_DIR}
+ VERBATIM
+ COMMAND
+ sed
+ -i "s|#include\\s*<\\s*libayatana-appindicator/app-indicator.h\\s*>||g"
+ "${CMAKE_CURRENT_BINARY_DIR}/simple-client-vala.c"
+)
+
+# simple-client-vala
+
+set_source_files_properties("${CMAKE_CURRENT_BINARY_DIR}/simple-client-vala.c" PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS} -include ${CMAKE_SOURCE_DIR}/src/app-indicator.h")
+add_executable("simple-client-vala" "${CMAKE_CURRENT_BINARY_DIR}/simple-client-vala.c")
+target_include_directories("simple-client-vala" PUBLIC ${PROJECT_DEPS_INCLUDE_DIRS})
+target_link_libraries("simple-client-vala" "${PROJECT_DEPS_LIBRARIES} -layatana-appindicator3 -L${CMAKE_BINARY_DIR}/src")
+add_dependencies("simple-client-vala" "ayatana-appindicator3")
+
+# simple-client
+
+set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/simple-client.c" PROPERTIES COMPILE_FLAGS ${COMPILE_FLAGS})
+add_executable("simple-client" "${CMAKE_CURRENT_SOURCE_DIR}/simple-client.c")
+target_compile_definitions("simple-client" PUBLIC LOCAL_ICON="${CMAKE_CURRENT_SOURCE_DIR}/simple-client-test-icon.png")
+target_include_directories("simple-client" PUBLIC ${PROJECT_DEPS_INCLUDE_DIRS})
+target_include_directories("simple-client" PUBLIC "${CMAKE_SOURCE_DIR}/src")
+target_link_libraries("simple-client" "${PROJECT_DEPS_LIBRARIES} -layatana-appindicator3 -L${CMAKE_BINARY_DIR}/src")
+add_dependencies("simple-client" "ayatana-appindicator3")
diff --git a/example/Makefile.am b/example/Makefile.am
deleted file mode 100644
index 0509e3e..0000000
--- a/example/Makefile.am
+++ /dev/null
@@ -1,63 +0,0 @@
-if USE_GTK3
-VER=3
-else
-VER=
-endif
-
-CLEANFILES =
-DISTCLEANFILES = Makefile Makefile.in .deps/
-EXTRA_DIST =
-
-check_PROGRAMS = \
- simple-client \
- simple-client-vala
-
-#########################################
-## simple-client
-#########################################
-
-simple_client_SOURCES = \
- simple-client.c
-
-#-Werror removed for Vala
-simple_client_CFLAGS = \
- $(LIBRARY_CFLAGS) \
- -DLOCAL_ICON="\"$(abs_srcdir)/simple-client-test-icon.png\"" \
- -Wall \
- -I$(top_srcdir)/src
-
-simple_client_LDADD = \
- $(LIBRARY_LIBS) \
- $(top_builddir)/src/libayatana-appindicator$(VER).la
-
-EXTRA_DIST += \
- simple-client-test-icon.png
-
-#########################################
-## simple-client-vala
-#########################################
-if HAVE_VALAC
-
-VALAFLAGS = \
- --pkg appindicator$(VER)-0.1 \
- --vapidir=$(top_builddir)/bindings/vala
-
-BUILT_SOURCES = simple-client-vala.c
-simple-client-vala.c: $(srcdir)/simple-client-vala.vala
- $(VALAC) $(VALAFLAGS) -C $< -o $@
- $(SED) -i "s|#include\s*<\s*libayatana-appindicator/app-indicator.h\s*>||g" $@
-
-simple_client_vala_SOURCES = simple-client-vala.c
-simple_client_vala_CFLAGS = \
- $(simple_client_CFLAGS) \
- -include $(top_srcdir)/src/app-indicator.h
-
-simple_client_vala_LDADD = $(simple_client_LDADD)
-
-CLEANFILES += *.stamp *-vala.c
-
-endif
-
-EXTRA_DIST += \
- simple-client-vala.vala
-
diff --git a/m4/gcov.m4 b/m4/gcov.m4
deleted file mode 100644
index bd96386..0000000
--- a/m4/gcov.m4
+++ /dev/null
@@ -1,86 +0,0 @@
-# Checks for existence of coverage tools:
-# * gcov
-# * lcov
-# * genhtml
-# * gcovr
-#
-# Sets ac_cv_check_gcov to yes if tooling is present
-# and reports the executables to the variables LCOV, GCOVR and GENHTML.
-AC_DEFUN([AC_TDD_GCOV],
-[
- AC_ARG_ENABLE(gcov,
- AS_HELP_STRING([--enable-gcov],
- [enable coverage testing with gcov]),
- [use_gcov=$enableval], [use_gcov=no])
-
- if test "x$use_gcov" = "xyes"; then
- # we need gcc:
- if test "$GCC" != "yes"; then
- AC_MSG_ERROR([GCC is required for --enable-gcov])
- fi
-
- # Check if ccache is being used
- AC_CHECK_PROG(SHTOOL, shtool, shtool)
- case `$SHTOOL path $CC` in
- *ccache*[)] gcc_ccache=yes;;
- *[)] gcc_ccache=no;;
- esac
-
- if test "$gcc_ccache" = "yes" && (test -z "$CCACHE_DISABLE" || test "$CCACHE_DISABLE" != "1"); then
- AC_MSG_ERROR([ccache must be disabled when --enable-gcov option is used. You can disable ccache by setting environment variable CCACHE_DISABLE=1.])
- fi
-
- lcov_version_list="1.6 1.7 1.8 1.9 1.10 1.11"
- AC_CHECK_PROG(LCOV, lcov, lcov)
- AC_CHECK_PROG(GENHTML, genhtml, genhtml)
-
- if test "$LCOV"; then
- AC_CACHE_CHECK([for lcov version], glib_cv_lcov_version, [
- glib_cv_lcov_version=invalid
- lcov_version=`$LCOV -v 2>/dev/null | $SED -e 's/^.* //'`
- for lcov_check_version in $lcov_version_list; do
- if test "$lcov_version" = "$lcov_check_version"; then
- glib_cv_lcov_version="$lcov_check_version (ok)"
- fi
- done
- ])
- else
- lcov_msg="To enable code coverage reporting you must have one of the following lcov versions installed: $lcov_version_list"
- AC_MSG_ERROR([$lcov_msg])
- fi
-
- case $glib_cv_lcov_version in
- ""|invalid[)]
- lcov_msg="You must have one of the following versions of lcov: $lcov_version_list (found: $lcov_version)."
- AC_MSG_ERROR([$lcov_msg])
- LCOV="exit 0;"
- ;;
- esac
-
- if test -z "$GENHTML"; then
- AC_MSG_ERROR([Could not find genhtml from the lcov package])
- fi
-
- ac_cv_check_gcov=yes
- ac_cv_check_lcov=yes
-
- # Remove all optimization flags from CFLAGS
- changequote({,})
- CFLAGS=`echo "$CFLAGS" | $SED -e 's/-O[0-9]*//g'`
- changequote([,])
-
- # Add the special gcc flags
- COVERAGE_CFLAGS="-O0 -fprofile-arcs -ftest-coverage"
- COVERAGE_CXXFLAGS="-O0 -fprofile-arcs -ftest-coverage"
- COVERAGE_LDFLAGS="-lgcov"
-
- # Check availability of gcovr
- AC_CHECK_PROG(GCOVR, gcovr, gcovr)
- if test -z "$GCOVR"; then
- ac_cv_check_gcovr=no
- else
- ac_cv_check_gcovr=yes
- fi
-
-fi
-]) # AC_TDD_GCOV
diff --git a/m4/introspection.m4 b/m4/introspection.m4
deleted file mode 100644
index 589721c..0000000
--- a/m4/introspection.m4
+++ /dev/null
@@ -1,94 +0,0 @@
-dnl -*- mode: autoconf -*-
-dnl Copyright 2009 Johan Dahlin
-dnl
-dnl This file is free software; the author(s) gives unlimited
-dnl permission to copy and/or distribute it, with or without
-dnl modifications, as long as this notice is preserved.
-dnl
-
-# serial 1
-
-m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL],
-[
- AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
- AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
- AC_BEFORE([LT_INIT],[$0])dnl setup libtool first
-
- dnl enable/disable introspection
- m4_if([$2], [require],
- [dnl
- enable_introspection=yes
- ],[dnl
- AC_ARG_ENABLE(introspection,
- AS_HELP_STRING([--enable-introspection[=@<:@no/auto/yes@:>@]],
- [Enable introspection for this build]),,
- [enable_introspection=auto])
- ])dnl
-
- AC_MSG_CHECKING([for gobject-introspection])
-
- dnl presence/version checking
- AS_CASE([$enable_introspection],
- [no], [dnl
- found_introspection="no (disabled, use --enable-introspection to enable)"
- ],dnl
- [yes],[dnl
- PKG_CHECK_EXISTS([gobject-introspection-1.0],,
- AC_MSG_ERROR([gobject-introspection-1.0 is not installed]))
- PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1],
- found_introspection=yes,
- AC_MSG_ERROR([You need to have gobject-introspection >= $1 installed to build AC_PACKAGE_NAME]))
- ],dnl
- [auto],[dnl
- PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], found_introspection=yes, found_introspection=no)
- ],dnl
- [dnl
- AC_MSG_ERROR([invalid argument passed to --enable-introspection, should be one of @<:@no/auto/yes@:>@])
- ])dnl
-
- AC_MSG_RESULT([$found_introspection])
-
- INTROSPECTION_SCANNER=
- INTROSPECTION_COMPILER=
- INTROSPECTION_GENERATE=
- INTROSPECTION_GIRDIR=
- INTROSPECTION_TYPELIBDIR=
- if test "x$found_introspection" = "xyes"; then
- INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
- INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
- INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
- INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0`
- INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)"
- INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0`
- INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0`
- INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
- fi
- AC_SUBST(INTROSPECTION_SCANNER)
- AC_SUBST(INTROSPECTION_COMPILER)
- AC_SUBST(INTROSPECTION_GENERATE)
- AC_SUBST(INTROSPECTION_GIRDIR)
- AC_SUBST(INTROSPECTION_TYPELIBDIR)
- AC_SUBST(INTROSPECTION_CFLAGS)
- AC_SUBST(INTROSPECTION_LIBS)
- AC_SUBST(INTROSPECTION_MAKEFILE)
-
- AM_CONDITIONAL(HAVE_INTROSPECTION, test "x$found_introspection" = "xyes")
-])
-
-
-dnl Usage:
-dnl GOBJECT_INTROSPECTION_CHECK([minimum-g-i-version])
-
-AC_DEFUN([GOBJECT_INTROSPECTION_CHECK],
-[
- _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1])
-])
-
-dnl Usage:
-dnl GOBJECT_INTROSPECTION_REQUIRE([minimum-g-i-version])
-
-
-AC_DEFUN([GOBJECT_INTROSPECTION_REQUIRE],
-[
- _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1], [require])
-])
diff --git a/src/AyatanaAppIndicator-0.1.metadata.in b/src/AyatanaAppIndicator-0.1.metadata.in
deleted file mode 100644
index 1af31e7..0000000
--- a/src/AyatanaAppIndicator-0.1.metadata.in
+++ /dev/null
@@ -1,3 +0,0 @@
-AyatanaAppIndicator name="AppIndicator"
-Indicator.priv hidden="1"
-IndicatorPrivate hidden="1"
diff --git a/src/AyatanaAppIndicator3-0.1.metadata.in b/src/AyatanaAppIndicator3-0.1.metadata
index 09d457d..09d457d 100644
--- a/src/AyatanaAppIndicator3-0.1.metadata.in
+++ b/src/AyatanaAppIndicator3-0.1.metadata
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
new file mode 100644
index 0000000..3a0ce71
--- /dev/null
+++ b/src/CMakeLists.txt
@@ -0,0 +1,166 @@
+set(HEADERS
+ app-indicator.h
+)
+
+set(SOURCES
+ app-indicator.c
+ app-indicator-enum-types.c
+ application-service-marshal.c
+ generate-id.c
+ gen-notification-item.xml.c
+ gen-notification-watcher.xml.c
+)
+
+install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/app-indicator.h" DESTINATION "${CMAKE_INSTALL_FULL_INCLUDEDIR}/libayatana-appindicator3-0.1/libayatana-appindicator")
+
+# ayatana-appindicator3-0.1.pc
+
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/ayatana-appindicator3-0.1.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/ayatana-appindicator3-0.1.pc" @ONLY)
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ayatana-appindicator3-0.1.pc" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/pkgconfig")
+
+# app-indicator-enum-types.h
+
+find_program(GLIB_MKENUMS glib-mkenums)
+
+add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/app-indicator-enum-types.h"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ COMMAND
+ ${GLIB_MKENUMS}
+ --template app-indicator-enum-types.h.in
+ ${HEADERS}
+ --output="${CMAKE_CURRENT_BINARY_DIR}/app-indicator-enum-types.h"
+)
+
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/app-indicator-enum-types.h" DESTINATION "${CMAKE_INSTALL_FULL_INCLUDEDIR}/libayatana-appindicator3-0.1/libayatana-appindicator")
+
+# app-indicator-enum-types.c
+
+add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/app-indicator-enum-types.c"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/app-indicator-enum-types.h"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ COMMAND
+ ${GLIB_MKENUMS}
+ --template app-indicator-enum-types.c.in
+ ${HEADERS}
+ --output="${CMAKE_CURRENT_BINARY_DIR}/app-indicator-enum-types.c"
+)
+
+find_program(GLIB_GENMARSHAL glib-genmarshal)
+
+# application-service-marshal.h
+
+add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/application-service-marshal.h"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/app-indicator-enum-types.c"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ COMMAND
+ ${GLIB_GENMARSHAL}
+ --prefix=_application_service_marshal
+ --header application-service-marshal.list
+ --quiet
+ --output="${CMAKE_CURRENT_BINARY_DIR}/application-service-marshal.h"
+)
+
+# application-service-marshal.c
+
+add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/application-service-marshal.c"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/application-service-marshal.h"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ COMMAND
+ ${GLIB_GENMARSHAL}
+ --prefix=_application_service_marshal
+ --body application-service-marshal.list
+ --include-header=application-service-marshal.h
+ --quiet
+ --output="${CMAKE_CURRENT_BINARY_DIR}/application-service-marshal.c"
+)
+
+# gen-notification-item.xml.h
+
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/gen-notification-item.xml.h" "extern const char * _notification_item;")
+
+# gen-notification-item.xml.c
+
+file(READ "${CMAKE_CURRENT_SOURCE_DIR}/notification-item.xml" GEN_NOTIFICATION_ITEM_XML_C)
+string(REPLACE "\"" "\\\"" GEN_NOTIFICATION_ITEM_XML_C ${GEN_NOTIFICATION_ITEM_XML_C})
+string(REPLACE "\n" "\\n\"\n\"" GEN_NOTIFICATION_ITEM_XML_C ${GEN_NOTIFICATION_ITEM_XML_C})
+string(REGEX REPLACE "\n\"$" "\n" GEN_NOTIFICATION_ITEM_XML_C ${GEN_NOTIFICATION_ITEM_XML_C})
+string(PREPEND GEN_NOTIFICATION_ITEM_XML_C "const char * _notification_item = \n\"")
+string(APPEND GEN_NOTIFICATION_ITEM_XML_C "\;")
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/gen-notification-item.xml.c" ${GEN_NOTIFICATION_ITEM_XML_C})
+
+# gen-notification-watcher.xml.h
+
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/gen-notification-watcher.xml.h" "extern const char * _notification_watcher;")
+
+# gen-notification-watcher.xml.c
+
+file(READ "${CMAKE_CURRENT_SOURCE_DIR}/notification-watcher.xml" GEN_NOTIFICATION_WATCHER_XML_C)
+string(REPLACE "\"" "\\\"" GEN_NOTIFICATION_WATCHER_XML_C ${GEN_NOTIFICATION_WATCHER_XML_C})
+string(REPLACE "\n" "\\n\"\n\"" GEN_NOTIFICATION_WATCHER_XML_C ${GEN_NOTIFICATION_WATCHER_XML_C})
+string(REGEX REPLACE "\n\"$" "\n" GEN_NOTIFICATION_WATCHER_XML_C ${GEN_NOTIFICATION_WATCHER_XML_C})
+string(PREPEND GEN_NOTIFICATION_WATCHER_XML_C "const char * _notification_watcher = \n\"")
+string(APPEND GEN_NOTIFICATION_WATCHER_XML_C "\;")
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/gen-notification-watcher.xml.c" ${GEN_NOTIFICATION_WATCHER_XML_C})
+
+# libayatana-appindicator3.so
+
+set_source_files_properties(${SOURCES} PROPERTIES COMPILE_FLAGS ${COMPILE_FLAGS})
+add_library("ayatana-appindicator3" SHARED ${SOURCES})
+set_target_properties("ayatana-appindicator3" PROPERTIES VERSION 1.0.0 SOVERSION 1)
+target_compile_definitions("ayatana-appindicator3" PUBLIC G_LOG_DOMAIN="libayatana-appindicator")
+target_include_directories("ayatana-appindicator3" PUBLIC ${PROJECT_DEPS_INCLUDE_DIRS})
+target_include_directories("ayatana-appindicator3" PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
+target_include_directories("ayatana-appindicator3" PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
+target_link_libraries("ayatana-appindicator3" ${PROJECT_DEPS_LIBRARIES})
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator3.so" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}")
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator3.so.1" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}")
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator3.so.1.0.0" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}")
+
+# AyatanaAppIndicator3-0.1.gir
+
+find_package(GObjectIntrospection REQUIRED QUIET)
+
+add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator3-0.1.gir"
+ DEPENDS "ayatana-appindicator3"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ COMMAND
+ ${INTROSPECTION_SCANNER}
+ app-indicator.c ${HEADERS}
+ --add-include-path=${CMAKE_CURRENT_BINARY_DIR}
+ --c-include=libayatana-appindicator/app-indicator.h
+ --symbol-prefix=app
+ --identifier-prefix=App
+ --namespace=AyatanaAppIndicator3
+ --nsversion=0.1
+ --quiet
+ --warn-all
+ --include=GObject-2.0
+ --include=Gtk-3.0
+ --library-path=${CMAKE_CURRENT_BINARY_DIR}
+ --library="ayatana-appindicator3"
+ --output "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator3-0.1.gir"
+)
+
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator3-0.1.gir" DESTINATION "${CMAKE_INSTALL_FULL_DATADIR}/gir-1.0")
+
+# AyatanaAppIndicator3-0.1.typelib
+
+add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator3-0.1.typelib"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator3-0.1.gir"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ COMMAND
+ ${INTROSPECTION_COMPILER}
+ --includedir=${CMAKE_CURRENT_BINARY_DIR}
+ ${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator3-0.1.gir
+ -o "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator3-0.1.typelib"
+)
+
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator3-0.1.typelib" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/girepository-1.0")
+
+add_custom_target(src ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator3-0.1.typelib")
diff --git a/src/Makefile.am b/src/Makefile.am
deleted file mode 100644
index a1bbcf0..0000000
--- a/src/Makefile.am
+++ /dev/null
@@ -1,188 +0,0 @@
-if USE_GTK3
-VER=3
-lib_LTLIBRARIES = libayatana-appindicator3.la
-GTKGIR = Gtk-3.0
-else
-VER=
-lib_LTLIBRARIES = libayatana-appindicator.la
-GTKGIR = Gtk-2.0
-endif
-
-CLEANFILES =
-DISTCLEANFILES = Makefile.in
-BUILT_SOURCES =
-EXTRA_DIST = \
- ayatana-appindicator-0.1.pc.in \
- ayatana-appindicator3-0.1.pc.in \
- AyatanaAppIndicator-0.1.metadata.in \
- AyatanaAppIndicator3-0.1.metadata.in
-
-include $(top_srcdir)/Makefile.am.enum
-include $(top_srcdir)/Makefile.am.marshal
-
-##################################
-# Marshallers
-##################################
-
-BUILT_SOURCES += \
- application-service-marshal.h \
- application-service-marshal.c
-
-glib_marshal_list = application-service-marshal.list
-glib_marshal_prefix = _application_service_marshal
-
-##################################
-# Library
-##################################
-
-pkgconfig_DATA = ayatana-appindicator$(VER)-0.1.pc
-pkgconfigdir = $(libdir)/pkgconfig
-
-glib_enum_h = app-indicator-enum-types.h
-glib_enum_c = app-indicator-enum-types.c
-glib_enum_headers = $(addprefix $(srcdir)/, $(libayatana_appindicator_headers))
-
-DISTCLEANFILES += app-indicator-enum-types.c
-
-libayatana_appindicatorincludefolder=libayatana-appindicator
-libayatana_appindicatorincludedir=$(includedir)/libayatana-appindicator$(VER)-0.1/$(libayatana_appindicatorincludefolder)
-
-libayatana_appindicator_headers = \
- app-indicator.h
-
-libayatana_appindicatorinclude_HEADERS = \
- $(libayatana_appindicator_headers) \
- $(glib_enum_h)
-
-libayatana_appindicator_la_SOURCES = \
- $(libayatana_appindicator_headers) \
- app-indicator-enum-types.c \
- app-indicator.c \
- application-service-marshal.c \
- dbus-shared.h \
- generate-id.h \
- generate-id.c \
- gen-notification-item.xml.h \
- gen-notification-item.xml.c \
- gen-notification-watcher.xml.h \
- gen-notification-watcher.xml.c
-
-libayatana_appindicator_la_LDFLAGS = \
- $(COVERAGE_LDFLAGS) \
- -version-info 1:0:0 \
- -no-undefined \
- -export-symbols-regex "^[^_d].*"
-
-libayatana_appindicator_la_CFLAGS = \
- $(LIBRARY_CFLAGS) \
- $(COVERAGE_CFLAGS) \
- -Wall -Wno-error=deprecated-declarations \
- -DG_LOG_DOMAIN=\"libayatana-appindicator\"
-
-libayatana_appindicator_la_LIBADD = \
- $(LIBRARY_LIBS)
-
-# We duplicate these here because Automake won't let us use $(VER) on the left hand side.
-# Since we carefully use $(VER) in the right hand side above, we can assign the same values.
-# Only one version of the library is every compiled at the same time, so it is safe to reuse
-# the right hand sides like this.
-libayatana_appindicator3includedir = $(libayatana_appindicatorincludedir)
-libayatana_appindicator3include_HEADERS = $(libayatana_appindicatorinclude_HEADERS)
-libayatana_appindicator3_la_SOURCES = $(libayatana_appindicator_la_SOURCES)
-libayatana_appindicator3_la_LDFLAGS = $(libayatana_appindicator_la_LDFLAGS)
-libayatana_appindicator3_la_CFLAGS = $(libayatana_appindicator_la_CFLAGS)
-libayatana_appindicator3_la_LIBADD = $(libayatana_appindicator_la_LIBADD)
-
-##################################
-# DBus Specs
-##################################
-
-DBUS_SPECS = \
- notification-item.xml \
- notification-watcher.xml
-
-gen-%.xml.h: %.xml
- @echo "Building $@ from $<"
- @echo "extern const char * _$(subst -,_,$(subst .,_,$(basename $(notdir $<))));" > $@
-
-gen-%.xml.c: %.xml
- @echo "Building $@ from $<"
- @echo "const char * _$(subst -,_,$(subst .,_,$(basename $(notdir $<)))) = " > $@
- @sed -e "s:\":\\\\\":g" -e s:^:\": -e s:\$$:\\\\n\": $< >> $@
- @echo ";" >> $@
-
-BUILT_SOURCES += \
- gen-notification-item.xml.c \
- gen-notification-item.xml.h \
- gen-notification-watcher.xml.c \
- gen-notification-watcher.xml.h
-
-CLEANFILES += \
- gen-notification-item.xml.c \
- gen-notification-item.xml.h \
- gen-notification-watcher.xml.c \
- gen-notification-watcher.xml.h
-
-EXTRA_DIST += $(DBUS_SPECS)
-
-#########################
-# GObject Introsepction
-#########################
-
--include $(INTROSPECTION_MAKEFILE)
-INTROSPECTION_GIRS =
-
-if INTROSPECTION_TEN
-INTROSPECTION_SCANNER_ARGS = \
- --add-include-path=$(srcdir) \
- $(addprefix --c-include=$(libayatana_appindicatorincludefolder)/, $(libayatana_appindicator_headers)) \
- --symbol-prefix=app \
- --identifier-prefix=App \
- --warn-all
-else
-INTROSPECTION_SCANNER_ARGS = \
- --add-include-path=$(srcdir) \
- $(addprefix --c-include=$(libayatana_appindicatorincludefolder)/, $(libayatana_appindicator_headers))
-endif
-
-INTROSPECTION_COMPILER_ARGS = --includedir=$(builddir)
-
-if HAVE_INTROSPECTION
-
-introspection_sources = \
- $(addprefix $(srcdir)/,app-indicator.c) \
- $(addprefix $(srcdir)/,$(libayatana_appindicator_headers))
-
-AyatanaAppIndicator$(VER)-0.1.gir: libayatana-appindicator$(VER).la
-
-AyatanaAppIndicator_0_1_gir_INCLUDES = \
- GObject-2.0 \
- $(GTKGIR)
-AyatanaAppIndicator_0_1_gir_CFLAGS = $(LIBRARY_CFLAGS) -I$(srcdir) -I$(top_builddir)/src
-AyatanaAppIndicator_0_1_gir_LIBS = libayatana-appindicator$(VER).la
-AyatanaAppIndicator_0_1_gir_FILES = $(introspection_sources)
-# AyatanaAppIndicator_0_1_gir_NAMESPACE = AyatanaAppIndicator
-
-AyatanaAppIndicator3_0_1_gir_INCLUDES = $(AyatanaAppIndicator_0_1_gir_INCLUDES)
-AyatanaAyatanaAppIndicator3_0_1_gir_CFLAGS = $(AyatanaAyatanaAppIndicator_0_1_gir_CFLAGS)
-AyatanaAppIndicator3_0_1_gir_LIBS = $(AyatanaAppIndicator_0_1_gir_LIBS)
-AyatanaAppIndicator3_0_1_gir_FILES = $(AyatanaAppIndicator_0_1_gir_FILES)
-# AyatanaAppIndicator3_0_1_gir_NAMESPACE = AyatanaAppIndicator
-
-INTROSPECTION_GIRS += AyatanaAppIndicator$(VER)-0.1.gir
-
-AyatanaAppIndicator$(VER)-0.1.metadata: AyatanaAppIndicator$(VER)-0.1.gir
- cp -f $(srcdir)/$@.in $@
-
-BUILT_SOURCES += AyatanaAppIndicator$(VER)-0.1.metadata
-CLEANFILES += AyatanaAppIndicator$(VER)-0.1.metadata
-
-girdir = $(datadir)/gir-1.0
-gir_DATA = $(INTROSPECTION_GIRS)
-
-typelibdir = $(libdir)/girepository-1.0
-typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
-
-CLEANFILES += $(gir_DATA) $(typelib_DATA)
-
-endif
diff --git a/src/ayatana-appindicator3-0.1.pc.in b/src/ayatana-appindicator3-0.1.pc.in
index 51eb96b..bf8c1b8 100644
--- a/src/ayatana-appindicator3-0.1.pc.in
+++ b/src/ayatana-appindicator3-0.1.pc.in
@@ -1,14 +1,14 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-bindir=@bindir@
-includedir=@includedir@
+prefix=@CMAKE_INSTALL_PREFIX@
+exec_prefix=${prefix}
+libdir=@CMAKE_INSTALL_FULL_LIBDIR@
+bindir=@CMAKE_INSTALL_FULL_BINDIR@
+includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
Cflags: -I${includedir}/libayatana-appindicator3-0.1
-Requires: dbusmenu-glib-0.4 gtk+-3.0
+Requires: ayatana-indicator3-0.4 dbusmenu-glib-0.4 glib-2.0 gtk+-3.0
Libs: -L${libdir} -layatana-appindicator3
Name: ayatana-appindicator3-0.1
Description: Ayatana Application Indicators
-Version: @VERSION@
+Version: @PROJECT_VERSION@
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
new file mode 100644
index 0000000..03771ba
--- /dev/null
+++ b/tests/CMakeLists.txt
@@ -0,0 +1,184 @@
+# test-libappindicator
+
+set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/test-libappindicator.c" PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS} -include ${CMAKE_SOURCE_DIR}/src/app-indicator.h")
+add_executable("test-libappindicator" "${CMAKE_CURRENT_SOURCE_DIR}/test-libappindicator.c")
+target_compile_definitions("test-libappindicator" PUBLIC SRCDIR="${CMAKE_CURRENT_SOURCE_DIR}")
+target_include_directories("test-libappindicator" PUBLIC ${PROJECT_DEPS_INCLUDE_DIRS})
+target_include_directories("test-libappindicator" PUBLIC "${CMAKE_SOURCE_DIR}/src")
+target_link_libraries("test-libappindicator" "${PROJECT_DEPS_LIBRARIES} -layatana-appindicator3")
+target_link_directories("test-libappindicator" PUBLIC "${CMAKE_BINARY_DIR}/src")
+add_dependencies("test-libappindicator" "ayatana-appindicator3")
+
+# test-libappindicator-dbus-client
+
+set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/test-libappindicator.c" PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS}")
+add_executable("test-libappindicator-dbus-client" "${CMAKE_CURRENT_SOURCE_DIR}/test-libappindicator-dbus-client.c")
+target_include_directories("test-libappindicator-dbus-client" PUBLIC ${PROJECT_DEPS_INCLUDE_DIRS})
+target_include_directories("test-libappindicator-dbus-client" PUBLIC "${CMAKE_SOURCE_DIR}/src")
+target_link_libraries("test-libappindicator-dbus-client" "${PROJECT_DEPS_LIBRARIES} -layatana-appindicator3")
+target_link_directories("test-libappindicator-dbus-client" PUBLIC "${CMAKE_BINARY_DIR}/src")
+add_dependencies("test-libappindicator-dbus-client" "ayatana-appindicator3")
+
+# test-libappindicator-dbus-server
+
+set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/test-libappindicator-dbus-server.c" PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS}")
+add_executable("test-libappindicator-dbus-server" "${CMAKE_CURRENT_SOURCE_DIR}/test-libappindicator-dbus-server.c")
+target_include_directories("test-libappindicator-dbus-server" PUBLIC ${PROJECT_DEPS_INCLUDE_DIRS})
+target_include_directories("test-libappindicator-dbus-server" PUBLIC "${CMAKE_SOURCE_DIR}/src")
+target_link_libraries("test-libappindicator-dbus-server" "${PROJECT_DEPS_LIBRARIES} -layatana-appindicator3")
+target_link_directories("test-libappindicator-dbus-server" PUBLIC "${CMAKE_BINARY_DIR}/src")
+add_dependencies("test-libappindicator-dbus-server" "ayatana-appindicator3")
+
+# test-libappindicator-status-client
+
+set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/test-libappindicator-status-client.c" PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS}")
+add_executable("test-libappindicator-status-client" "${CMAKE_CURRENT_SOURCE_DIR}/test-libappindicator-status-client.c")
+target_include_directories("test-libappindicator-status-client" PUBLIC ${PROJECT_DEPS_INCLUDE_DIRS})
+target_link_libraries("test-libappindicator-status-client" "${PROJECT_DEPS_LIBRARIES} -layatana-appindicator3")
+target_link_directories("test-libappindicator-status-client" PUBLIC "${CMAKE_BINARY_DIR}/src")
+add_dependencies("test-libappindicator-status-client" "ayatana-appindicator3")
+
+# test-libappindicator-status-server
+
+set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/test-libappindicator-status-server.c" PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS}")
+add_executable("test-libappindicator-status-server" "${CMAKE_CURRENT_SOURCE_DIR}/test-libappindicator-status-server.c")
+target_include_directories("test-libappindicator-status-server" PUBLIC ${PROJECT_DEPS_INCLUDE_DIRS})
+target_include_directories("test-libappindicator-status-server" PUBLIC "${CMAKE_SOURCE_DIR}/src")
+target_link_libraries("test-libappindicator-status-server" "${PROJECT_DEPS_LIBRARIES} -layatana-appindicator3")
+target_link_directories("test-libappindicator-status-server" PUBLIC "${CMAKE_BINARY_DIR}/src")
+add_dependencies("test-libappindicator-status-server" "ayatana-appindicator3")
+
+# test-libappindicator-fallback-item
+
+set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/test-libappindicator-fallback-item.c" PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS}")
+add_executable("test-libappindicator-fallback-item" "${CMAKE_CURRENT_SOURCE_DIR}/test-libappindicator-fallback-item.c")
+target_include_directories("test-libappindicator-fallback-item" PUBLIC ${PROJECT_DEPS_INCLUDE_DIRS})
+target_include_directories("test-libappindicator-fallback-item" PUBLIC "${CMAKE_SOURCE_DIR}/src")
+target_link_libraries("test-libappindicator-fallback-item" "${PROJECT_DEPS_LIBRARIES} -layatana-appindicator3")
+target_link_directories("test-libappindicator-fallback-item" PUBLIC "${CMAKE_BINARY_DIR}/src")
+add_dependencies("test-libappindicator-fallback-item" "ayatana-appindicator3")
+
+# test-libappindicator-fallback-watcher
+
+set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/test-libappindicator-fallback-watcher.c" PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS}")
+add_executable("test-libappindicator-fallback-watcher" "${CMAKE_CURRENT_SOURCE_DIR}/test-libappindicator-fallback-watcher.c")
+target_include_directories("test-libappindicator-fallback-watcher" PUBLIC ${PROJECT_DEPS_INCLUDE_DIRS})
+target_link_libraries("test-libappindicator-fallback-watcher" "${PROJECT_DEPS_LIBRARIES} -layatana-appindicator3")
+target_link_directories("test-libappindicator-fallback-watcher" PUBLIC "${CMAKE_BINARY_DIR}/src")
+add_dependencies("test-libappindicator-fallback-watcher" "ayatana-appindicator3")
+
+# test-simple-app
+
+set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/test-simple-app.c" PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS}")
+add_executable("test-simple-app" "${CMAKE_CURRENT_SOURCE_DIR}/test-simple-app.c")
+target_include_directories("test-simple-app" PUBLIC ${PROJECT_DEPS_INCLUDE_DIRS})
+target_include_directories("test-simple-app" PUBLIC "${CMAKE_SOURCE_DIR}/src")
+target_link_libraries("test-simple-app" "${PROJECT_DEPS_LIBRARIES} -layatana-appindicator3")
+target_link_directories("test-simple-app" PUBLIC "${CMAKE_BINARY_DIR}/src")
+add_dependencies("test-simple-app" "ayatana-appindicator3")
+
+# test-libappindicator-fallback
+
+find_program(DBUS_TEST_RUNNER dbus-test-runner)
+
+add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-fallback"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-fallback-watcher"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-fallback-item"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ VERBATIM
+ COMMAND
+ echo "#!/bin/bash" > "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-fallback"
+ COMMAND
+ echo "export DISPLAY=" >> "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-fallback"
+ COMMAND
+ echo ". ${CMAKE_CURRENT_SOURCE_DIR}/run-xvfb.sh" >> "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-fallback"
+ COMMAND
+ echo "${DBUS_TEST_RUNNER} -m 300 --dbus-config /usr/share/dbus-test-runner/session.conf --task ${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-fallback-watcher --task-name Watcher --ignore-return --task ${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-fallback-item --task-name Item" >> "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-fallback"
+ COMMAND
+ chmod +x "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-fallback"
+)
+
+add_test("test-libappindicator-fallback" "test-libappindicator-fallback")
+
+# test-libappindicator-dbus
+
+add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-dbus"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-dbus-client"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-dbus-server"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ VERBATIM
+ COMMAND
+ echo "#!/bin/bash" > "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-dbus"
+ COMMAND
+ echo "export DISPLAY=" >> "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-dbus"
+ COMMAND
+ echo ". ${CMAKE_CURRENT_SOURCE_DIR}/run-xvfb.sh" >> "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-dbus"
+ COMMAND
+ echo "${DBUS_TEST_RUNNER} -m 300 --dbus-config /usr/share/dbus-test-runner/session.conf --task ${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-dbus-client --task-name Client --ignore-return --task ${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-dbus-server --task-name Server" >> "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-dbus"
+ COMMAND
+ chmod +x "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-dbus"
+)
+
+add_test("test-libappindicator-dbus" "test-libappindicator-dbus")
+
+# test-libappindicator-status
+
+add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-status"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-status-client"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-status-server"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ VERBATIM
+ COMMAND
+ echo "#!/bin/bash" > "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-status"
+ COMMAND
+ echo "export DISPLAY=" >> "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-status"
+ COMMAND
+ echo ". ${CMAKE_CURRENT_SOURCE_DIR}/run-xvfb.sh" >> "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-status"
+ COMMAND
+ echo "${DBUS_TEST_RUNNER} -m 300 --dbus-config /usr/share/dbus-test-runner/session.conf --task ${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-status-client --task-name Client --ignore-return --task ${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-status-server --task-name Server" >> "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-status"
+ COMMAND
+ chmod +x "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-status"
+)
+
+add_test("test-libappindicator-status" "test-libappindicator-status")
+
+# libappindicator-tests-gtester
+
+add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libappindicator-tests-gtester"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ VERBATIM
+ COMMAND
+ echo "#!/bin/sh" > "${CMAKE_CURRENT_BINARY_DIR}/libappindicator-tests-gtester"
+ COMMAND
+ echo "gtester -k --verbose -o=${CMAKE_CURRENT_BINARY_DIR}/libappindicator-check-results.xml ${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator" >> "${CMAKE_CURRENT_BINARY_DIR}/libappindicator-tests-gtester"
+ COMMAND
+ chmod +x "${CMAKE_CURRENT_BINARY_DIR}/libappindicator-tests-gtester"
+)
+
+# libappindicator-tests
+
+add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libappindicator-tests"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libappindicator-tests-gtester"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ VERBATIM
+ COMMAND
+ echo "#!/bin/bash" > "${CMAKE_CURRENT_BINARY_DIR}/libappindicator-tests"
+ COMMAND
+ echo "export DISPLAY=" >> "${CMAKE_CURRENT_BINARY_DIR}/libappindicator-tests"
+ COMMAND
+ echo ". ${CMAKE_CURRENT_SOURCE_DIR}/run-xvfb.sh" >> "${CMAKE_CURRENT_BINARY_DIR}/libappindicator-tests"
+ COMMAND
+ echo "${DBUS_TEST_RUNNER} -m 300 --dbus-config /usr/share/dbus-test-runner/session.conf --task ${CMAKE_CURRENT_BINARY_DIR}/libappindicator-tests-gtester" >> "${CMAKE_CURRENT_BINARY_DIR}/libappindicator-tests"
+ COMMAND
+ chmod +x "${CMAKE_CURRENT_BINARY_DIR}/libappindicator-tests"
+)
+
+add_test("libappindicator-tests" "libappindicator-tests")
+
+add_custom_target("tests" ALL DEPENDS "test-libappindicator-fallback" "test-libappindicator-dbus" "test-libappindicator-status" "libappindicator-tests")
diff --git a/tests/Makefile.am b/tests/Makefile.am
deleted file mode 100644
index 0e1ef96..0000000
--- a/tests/Makefile.am
+++ /dev/null
@@ -1,207 +0,0 @@
-if USE_GTK3
-VER=3
-else
-VER=
-endif
-
-
-check_PROGRAMS = \
- test-libappindicator \
- test-libappindicator-dbus-client \
- test-libappindicator-dbus-server \
- test-libappindicator-status-client \
- test-libappindicator-status-server \
- test-libappindicator-fallback-watcher \
- test-libappindicator-fallback-item \
- test-simple-app
-
-TESTS =
-DISTCLEANFILES = $(TESTS) Makefile.in
-
-EXTRA_DIST = \
- run-xvfb.sh \
- test-libappindicator.desktop
-
-#########################################
-## test-libappindicator
-#########################################
-
-test_libappindicator_SOURCES = \
- test-libappindicator.c
-
-test_libappindicator_CFLAGS = \
- $(TESTDEPS_CFLAGS) $(LIBRARY_CFLAGS) \
- -DSRCDIR="\"$(srcdir)\"" \
- -Wall -Wno-error=deprecated-declarations \
- -I$(top_srcdir)/src
-
-test_libappindicator_LDADD = \
- $(TESTDEPS_LIBS) $(LIBRARY_LIBS) \
- $(top_builddir)/src/libayatana-appindicator$(VER).la
-
-#########################################
-## test-libappindicator-dbus-client
-#########################################
-
-test_libappindicator_dbus_client_SOURCES = \
- test-defines.h \
- test-libappindicator-dbus-client.c
-
-test_libappindicator_dbus_client_CFLAGS = \
- $(TESTDEPS_CFLAGS) $(LIBRARY_CFLAGS) \
- -Wall -Wno-error=deprecated-declarations \
- -I$(top_srcdir)/src
-
-test_libappindicator_dbus_client_LDADD = \
- $(TESTDEPS_LIBS) $(LIBRARY_LIBS) \
- $(top_builddir)/src/libayatana-appindicator$(VER).la
-
-#########################################
-## test-libappindicator-dbus-server
-#########################################
-
-test_libappindicator_dbus_server_SOURCES = \
- test-defines.h \
- test-libappindicator-dbus-server.c
-
-test_libappindicator_dbus_server_CFLAGS = \
- $(TESTDEPS_CFLAGS) $(LIBRARY_CFLAGS) \
- -Wall -Wno-error=deprecated-declarations \
- -I$(top_srcdir)/src
-
-test_libappindicator_dbus_server_LDADD = \
- $(TESTDEPS_LIBS) $(LIBRARY_LIBS) \
- $(top_builddir)/src/libayatana-appindicator$(VER).la
-
-#########################################
-## test-libappindicator-status-client
-#########################################
-
-test_libappindicator_status_client_SOURCES = \
- test-defines.h \
- test-libappindicator-status-client.c
-
-test_libappindicator_status_client_CFLAGS = \
- $(TESTDEPS_CFLAGS) $(LIBRARY_CFLAGS) \
- -Wall -Wno-error=deprecated-declarations \
- -I$(top_srcdir)/src
-
-test_libappindicator_status_client_LDADD = \
- $(TESTDEPS_LIBS) $(LIBRARY_LIBS) \
- $(top_builddir)/src/libayatana-appindicator$(VER).la
-
-#########################################
-## test-libappindicator-status-server
-#########################################
-
-test_libappindicator_status_server_SOURCES = \
- test-defines.h \
- test-libappindicator-status-server.c
-
-test_libappindicator_status_server_CFLAGS = \
- $(TESTDEPS_CFLAGS) $(LIBRARY_CFLAGS) \
- -Wall -Wno-error=deprecated-declarations \
- -I$(top_srcdir)/src
-
-test_libappindicator_status_server_LDADD = \
- $(TESTDEPS_LIBS) $(LIBRARY_LIBS) \
- $(top_builddir)/src/libayatana-appindicator$(VER).la
-
-#########################################
-## test-libappindicator-fallback
-#########################################
-
-test_libappindicator_fallback_watcher_SOURCES = \
- test-libappindicator-fallback-watcher.c
-
-test_libappindicator_fallback_watcher_CFLAGS = \
- $(TESTDEPS_CFLAGS) $(LIBRARY_CFLAGS) \
- -Wall -Wno-error=deprecated-declarations \
- -I$(top_srcdir)/src
-
-test_libappindicator_fallback_watcher_LDADD = \
- $(TESTDEPS_LIBS) $(LIBRARY_LIBS) \
- $(top_builddir)/src/libayatana-appindicator$(VER).la
-
-test_libappindicator_fallback_item_SOURCES = \
- test-libappindicator-fallback-item.c
-
-test_libappindicator_fallback_item_CFLAGS = \
- $(TESTDEPS_CFLAGS) $(LIBRARY_CFLAGS) \
- -Wall -Wno-error=deprecated-declarations \
- -I$(top_srcdir)/src
-
-test_libappindicator_fallback_item_LDADD = \
- $(TESTDEPS_LIBS) $(LIBRARY_LIBS) \
- $(top_builddir)/src/libayatana-appindicator$(VER).la
-
-test-libappindicator-fallback: test-libappindicator-fallback-watcher test-libappindicator-fallback-item Makefile.am
- @echo "#!/bin/bash" > $@
- @echo export DISPLAY= >> $@
- @echo . $(srcdir)/run-xvfb.sh >> $@
- @echo $(DBUS_RUNNER) --task ./test-libappindicator-fallback-watcher --task-name Watcher --ignore-return --task ./test-libappindicator-fallback-item --task-name Item >> $@
- @chmod +x $@
-
-TESTS += test-libappindicator-fallback
-
-#########################################
-## Actual tests
-#########################################
-
-XML_REPORT = libappindicator-check-results.xml
-HTML_REPORT = libappindicator-check-results.html
-
-libappindicator-tests: libappindicator-tests-gtester Makefile.am
- @echo "#!/bin/bash" > $@
- @echo export DISPLAY= >> $@
- @echo . $(srcdir)/run-xvfb.sh >> $@
- @echo export UBUNTU_MENUPROXY= >> $@
- @echo $(DBUS_RUNNER) --task ./libappindicator-tests-gtester >> $@
- @chmod +x $@
-
-libappindicator-tests-gtester: test-libappindicator Makefile.am
- @echo "#!/bin/sh" > $@
- @echo gtester -k --verbose -o=$(XML_REPORT) ./test-libappindicator >> $@
- @chmod +x $@
-
-TESTS += libappindicator-tests
-DISTCLEANFILES += $(XML_REPORT) $(HTML_REPORT) libappindicator-tests-gtester
-
-
-DBUS_RUNNER=dbus-test-runner --keep-env -m 300 --dbus-config /usr/share/dbus-test-runner/session.conf
-
-test-libappindicator-dbus: test-libappindicator-dbus-client test-libappindicator-dbus-server Makefile.am
- @echo "#!/bin/bash" > test-libappindicator-dbus
- @echo export DISPLAY= >> $@
- @echo . $(srcdir)/run-xvfb.sh >> $@
- @echo $(DBUS_RUNNER) --task ./test-libappindicator-dbus-client --task-name Client --task ./test-libappindicator-dbus-server --task-name Server --ignore-return >> test-libappindicator-dbus
- @chmod +x test-libappindicator-dbus
-
-TESTS += test-libappindicator-dbus
-XFAIL_TESTS = test-libappindicator-dbus
-
-test-libappindicator-status: test-libappindicator-status-client test-libappindicator-status-server Makefile.am
- @echo "#!/bin/bash" > test-libappindicator-status
- @echo export DISPLAY= >> $@
- @echo . $(srcdir)/run-xvfb.sh >> $@
- @echo $(DBUS_RUNNER) --task ./test-libappindicator-status-client --task-name Client --task ./test-libappindicator-status-server --task-name Server --ignore-return >> test-libappindicator-status
- @chmod +x test-libappindicator-status
-
-TESTS += test-libappindicator-status
-
-#########################################
-## test-simple-app
-#########################################
-
-test_simple_app_SOURCES = \
- test-simple-app.c
-
-test_simple_app_CFLAGS = \
- $(TESTDEPS_CFLAGS) $(LIBRARY_CFLAGS) \
- -Wall -Wno-error=deprecated-declarations \
- -I$(top_srcdir)/src
-
-test_simple_app_LDADD = \
- $(TESTDEPS_LIBS) $(LIBRARY_LIBS) \
- $(top_builddir)/src/libayatana-appindicator$(VER).la
-