aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Gabriel <mike.gabriel@das-netzwerkteam.de>2021-05-25 13:01:26 +0200
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2021-05-25 13:01:26 +0200
commitfe5ae6b69f0d98a26735f8d42859a08f788215ce (patch)
tree3667f9fdd463a8824a14e77820efeec151437a01
parentdd675b4d9d02b73969ab47ed6a8ed4a13ea2cfa5 (diff)
parentb9a91db2f5ff1655270bc4943debd6bdfa550036 (diff)
downloadayatana-indicator-application-fe5ae6b69f0d98a26735f8d42859a08f788215ce.tar.gz
ayatana-indicator-application-fe5ae6b69f0d98a26735f8d42859a08f788215ce.tar.bz2
ayatana-indicator-application-fe5ae6b69f0d98a26735f8d42859a08f788215ce.zip
Merge branch 'tari01-pr/move-to-cmake'
Attributes GH PR #7: https://github.com/AyatanaIndicators/ayatana-indicator-application/pull/7
-rw-r--r--CMakeLists.txt55
-rw-r--r--Makefile.am8
-rw-r--r--Makefile.am.coverage48
-rw-r--r--Makefile.am.marshal45
-rw-r--r--acinclude.m4247
-rwxr-xr-xautogen.sh10
-rw-r--r--configure.ac118
-rw-r--r--data/CMakeLists.txt19
-rw-r--r--data/Makefile.am29
-rw-r--r--data/ayatana-indicator-application.desktop.in2
-rw-r--r--data/ayatana-indicator-application.service.in2
-rw-r--r--m4/gcov.m486
-rw-r--r--src/CMakeLists.txt112
-rw-r--r--src/Makefile.am113
-rw-r--r--src/ayatana-appindicator3-0.1.pc.in14
-rw-r--r--tests/Makefile.am7
-rw-r--r--tests/run-xvfb.sh8
17 files changed, 188 insertions, 735 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..dfc1576
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,55 @@
+cmake_minimum_required(VERSION 3.13)
+project(ayatana-appindicator-application C)
+
+if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
+ SET(CMAKE_INSTALL_PREFIX "/usr" CACHE PATH "..." FORCE)
+endif(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
+
+option(ENABLE_TESTS "Enable all tests and checks" OFF)
+option(ENABLE_COVERAGE "Enable coverage reports (includes enabling all tests and checks)" OFF)
+
+if(ENABLE_COVERAGE)
+ set(ENABLE_TESTS ON)
+ set(CMAKE_BUILD_TYPE "Coverage")
+else()
+ set(CMAKE_BUILD_TYPE "Release")
+endif()
+
+# Check for prerequisites
+
+set(CMAKE_BUILD_TYPE "Release")
+find_package(PkgConfig REQUIRED)
+pkg_check_modules(PROJECT_DEPS REQUIRED glib-2.0>=2.58 ayatana-indicator3-0.4>=0.6.2 gtk+-3.0>=3.24 ayatana-appindicator3-0.1>=0.5.3 dbus-glib-1>=0.110 dbusmenu-gtk3-0.4)
+
+# Set global variables
+
+include(GNUInstallDirs)
+set(PROJECT_VERSION "0.8.0")
+set(PROJECT_NAME "ayatana-appindicator-application")
+
+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(data)
+add_subdirectory(src)
+
+if (ENABLE_TESTS)
+ include(CTest)
+ enable_testing()
+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 8ddabd4..0000000
--- a/Makefile.am
+++ /dev/null
@@ -1,8 +0,0 @@
-SUBDIRS = data \
- src \
- tests
-
-EXTRA_DIST = \
- ChangeLog
-
-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.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 3e98bd3..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="-I${py_prefix}/include/python${PYTHON_VERSION}"
-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 43b0aca..0000000
--- a/autogen.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-
-PKG_NAME="ayatana-indicator-application"
-
-which mate-autogen || {
- echo "You need mate-common from https://git.mate-desktop.org/mate-common"
- exit 1
-}
-
-mate-autogen $@
diff --git a/configure.ac b/configure.ac
deleted file mode 100644
index cdfc5b1..0000000
--- a/configure.ac
+++ /dev/null
@@ -1,118 +0,0 @@
-AC_INIT(ayatana-indicator-application, 0.8.0, mike.gabriel@das-netzwerkteam.de)
-AC_COPYRIGHT([Copyright 2009, 2010 Canonical
-Copyright 2015 Arctica Project])
-
-AC_PREREQ(2.53)
-
-AM_CONFIG_HEADER(config.h)
-AM_INIT_AUTOMAKE(ayatana-indicator-application, 0.8.0)
-
-AM_MAINTAINER_MODE
-
-AC_ISC_POSIX
-AC_PROG_CC
-AM_PROG_CC_C_O
-AM_PROG_AR
-AC_STDC_HEADERS
-AC_PROG_LIBTOOL
-
-AC_SUBST(VERSION)
-AC_CONFIG_MACRO_DIR([m4])
-
-m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
-
-AC_PATH_PROG([GLIB_MKENUMS], [glib-mkenums])
-AC_PATH_PROG([GLIB_GENMARSHAL], [glib-genmarshal])
-
-PKG_PROG_PKG_CONFIG
-
-###########################
-# Dependencies
-###########################
-
-GLIB_REQUIRED_VERSION=2.35.4
-GTK_REQUIRED_VERSION=3.0.0
-GIO_REQUIRED_VERSION=2.26
-INDICATOR_REQUIRED_VERSION=0.6.0
-DBUSMENUGTK_REQUIRED_VERSION=0.5.90
-JSON_GLIB_REQUIRED_VERSION=0.7.6
-DBUS_GLIB_REQUIRED_VERSION=0.82
-
-LIBAPPINDICATOR_REQUIRED_VERSION=0.5.0
-
-PKG_CHECK_MODULES(INDICATOR, glib-2.0 >= $GLIB_REQUIRED_VERSION
- gio-2.0 >= $GIO_REQUIRED_VERSION
- gtk+-3.0 >= $GTK_REQUIRED_VERSION
- ayatana-indicator3-0.4 >= $INDICATOR_REQUIRED_VERSION
- json-glib-1.0 >= $JSON_GLIB_REQUIRED_VERSION
- dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
- dbusmenu-gtk3-0.4 >= $DBUSMENUGTK_REQUIRED_VERSION)
-PKG_CHECK_MODULES(APPINDICATOR, ayatana-appindicator3-0.1 >= $LIBAPPINDICATOR_REQUIRED_VERSION)
-
-#########################
-# Check for systemd
-#########################
-PKG_CHECK_MODULES(SYSTEMD, systemd,
- [has_systemd=yes],
- []
-)
-if test "x$has_systemd" = "xyes"; then
- SYSTEMD_USERDIR=`$PKG_CONFIG --variable=systemduserunitdir systemd`
- AC_SUBST(SYSTEMD_USERDIR)
- AC_DEFINE(HAVE_SYSTEMD, 1, [create ayatana-indicator-application.service for systemd])
-fi
-
-###########################
-# 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)
-AC_SUBST(INDICATOR_CFLAGS)
-AC_SUBST(INDICATOR_LIBS)
-AC_SUBST(APPINDICATOR_CFLAGS)
-AC_SUBST(APPINDICATOR_LIBS)
-
-###########################
-# Indicator Info
-###########################
-
-if test "x$with_gtk" = x2; then
- INDICATORDIR=`$PKG_CONFIG --variable=indicatordir ayatana-indicator-0.4`
- INDICATORICONSDIR=`$PKG_CONFIG --variable=iconsdir ayatana-indicator-0.4`
-else
- INDICATORDIR=`$PKG_CONFIG --variable=indicatordir ayatana-indicator3-0.4`
- INDICATORICONSDIR=`$PKG_CONFIG --variable=iconsdir ayatana-indicator3-0.4`
-fi
-AC_SUBST(INDICATORDIR)
-AC_SUBST(INDICATORICONSDIR)
-
-###########################
-# Files
-###########################
-
-AC_OUTPUT([
-Makefile
-src/Makefile
-data/Makefile
-tests/Makefile
-])
-
-###########################
-# Results
-###########################
-
-AC_MSG_NOTICE([
-
-Application Indicator Configuration:
-
- Prefix: $prefix
- Indicator Dir: $INDICATORDIR
- gcov: $use_gcov
- systemd unit: $SYSTEMD_USERDIR
-])
diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt
new file mode 100644
index 0000000..123c63e
--- /dev/null
+++ b/data/CMakeLists.txt
@@ -0,0 +1,19 @@
+# ayatana-indicator-application.service
+
+pkg_check_modules(SYSTEMD systemd)
+
+if (${SYSTEMD_FOUND})
+ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/ayatana-indicator-application.service.in" "${CMAKE_CURRENT_BINARY_DIR}/ayatana-indicator-application.service" @ONLY)
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ayatana-indicator-application.service" DESTINATION "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/systemd/user")
+endif()
+
+# ayatana-indicator-application.desktop
+
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/ayatana-indicator-application.desktop.in" "${CMAKE_CURRENT_BINARY_DIR}/ayatana-indicator-application.desktop" @ONLY)
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ayatana-indicator-application.desktop" DESTINATION "${CMAKE_INSTALL_PREFIX}/etc/xdg/autostart")
+
+# ordering-override.keyfile
+
+install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/ordering-override.keyfile" DESTINATION "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR}/ayatana-indicator-application")
+
+
diff --git a/data/Makefile.am b/data/Makefile.am
deleted file mode 100644
index 671d5c0..0000000
--- a/data/Makefile.am
+++ /dev/null
@@ -1,29 +0,0 @@
-NULL =
-
-xdg_autostartdir = /etc/xdg/autostart
-xdg_autostart_DATA = ayatana-indicator-application.desktop
-
-%.desktop: %.desktop.in
- $(AM_V_GEN) sed -e "s|\@pkglibexecdir\@|$(pkglibexecdir)|" $< > $@
-
-overridedir = $(pkgdatadir)
-override_DATA = ordering-override.keyfile
-
-#if defined(HAVE_SYSTEMD)
-%.service: %.service.in
- $(AM_V_GEN) sed -e "s|\@pkglibexecdir\@|$(pkglibexecdir)|" $< > $@
-
-systemddir = $(SYSTEMD_USERDIR)
-systemd_DATA = ayatana-indicator-application.service
-#endif
-
-EXTRA_DIST = \
- ayatana-indicator-application.desktop.in \
- ayatana-indicator-application.service.in \
- ordering-override.keyfile \
- $(NULL)
-
-CLEANFILES = \
- ayatana-indicator-application.desktop \
- ayatana-indicator-application.service \
- $(NULL)
diff --git a/data/ayatana-indicator-application.desktop.in b/data/ayatana-indicator-application.desktop.in
index e624e98..4fce04f 100644
--- a/data/ayatana-indicator-application.desktop.in
+++ b/data/ayatana-indicator-application.desktop.in
@@ -1,7 +1,7 @@
[Desktop Entry]
Type=Application
Name=Ayatana Indicator Application
-Exec=@pkglibexecdir@/ayatana-indicator-application-service
+Exec=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBEXECDIR@/ayatana-indicator-application/ayatana-indicator-application-service
StartupNotify=false
Terminal=false
OnlyShowIn=Unity;MATE;XFCE;Budgie;
diff --git a/data/ayatana-indicator-application.service.in b/data/ayatana-indicator-application.service.in
index 3435853..fb2362d 100644
--- a/data/ayatana-indicator-application.service.in
+++ b/data/ayatana-indicator-application.service.in
@@ -4,7 +4,7 @@ PartOf=graphical-session.target
PartOf=ayatana-indicators.target
[Service]
-ExecStart=@pkglibexecdir@/ayatana-indicator-application-service
+ExecStart=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBEXECDIR@/ayatana-indicator-application/ayatana-indicator-application-service
Restart=on-failure
[Install]
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/src/CMakeLists.txt b/src/CMakeLists.txt
new file mode 100644
index 0000000..e328688
--- /dev/null
+++ b/src/CMakeLists.txt
@@ -0,0 +1,112 @@
+# gen-ayatana-application-service.xml.h
+
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/gen-ayatana-application-service.xml.h" "extern const char * _ayatana_application_service;")
+
+# gen-ayatana-application-service.xml.c
+
+file(READ "${CMAKE_CURRENT_SOURCE_DIR}/ayatana-application-service.xml" GEN_AYATANA_APPLICATION_SERVICE_XML_C)
+string(REPLACE "\"" "\\\"" GEN_AYATANA_APPLICATION_SERVICE_XML_C ${GEN_AYATANA_APPLICATION_SERVICE_XML_C})
+string(REPLACE "\n" "\\n\"\n\"" GEN_AYATANA_APPLICATION_SERVICE_XML_C ${GEN_AYATANA_APPLICATION_SERVICE_XML_C})
+string(REGEX REPLACE "\n\"$" "\n" GEN_AYATANA_APPLICATION_SERVICE_XML_C ${GEN_AYATANA_APPLICATION_SERVICE_XML_C})
+string(PREPEND GEN_AYATANA_APPLICATION_SERVICE_XML_C "const char * _ayatana_application_service = \n\"")
+string(APPEND GEN_AYATANA_APPLICATION_SERVICE_XML_C "\;")
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/gen-ayatana-application-service.xml.c" ${GEN_AYATANA_APPLICATION_SERVICE_XML_C})
+
+# ayatana-application-service-marshal.h
+
+find_program(GLIB_GENMARSHAL glib-genmarshal)
+
+add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/ayatana-application-service-marshal.h"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ COMMAND
+ ${GLIB_GENMARSHAL}
+ --prefix=_ayatana_application_service_marshal
+ --header ayatana-application-service-marshal.list
+ --quiet
+ --output="${CMAKE_CURRENT_BINARY_DIR}/ayatana-application-service-marshal.h"
+)
+
+# ayatana-application-service-marshal.c
+
+add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/ayatana-application-service-marshal.c"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/ayatana-application-service-marshal.h"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ COMMAND
+ ${GLIB_GENMARSHAL}
+ --prefix=_ayatana_application_service_marshal
+ --body ayatana-application-service-marshal.list
+ --include-header=ayatana-application-service-marshal.h
+ --quiet
+ --output="${CMAKE_CURRENT_BINARY_DIR}/ayatana-application-service-marshal.c"
+)
+
+# ayatana-notification-watcher-server.h
+
+find_program(DBUS_BINDING_TOOL dbus-binding-tool)
+
+add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/ayatana-notification-watcher-server.h"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/ayatana-application-service-marshal.c"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ COMMAND
+ ${DBUS_BINDING_TOOL}
+ --prefix=_ayatana_notification_watcher_server
+ --mode=glib-server
+ --output="${CMAKE_CURRENT_BINARY_DIR}/ayatana-notification-watcher-server.h"
+ "${CMAKE_CURRENT_SOURCE_DIR}/ayatana-notification-watcher.xml"
+)
+
+# ayatana-notification-watcher-client.h
+
+add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/ayatana-notification-watcher-client.h"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/ayatana-notification-watcher-server.h"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ COMMAND
+ ${DBUS_BINDING_TOOL}
+ --prefix=_ayatana_notification_watcher_client
+ --mode=glib-client
+ --output="${CMAKE_CURRENT_BINARY_DIR}/ayatana-notification-watcher-client.h"
+ "${CMAKE_CURRENT_SOURCE_DIR}/ayatana-notification-watcher.xml"
+)
+
+add_custom_target("src-generated" DEPENDS "ayatana-notification-watcher-client.h")
+
+# libayatana-application.so
+
+set(SOURCES
+ ayatana-application-service-marshal.c
+ indicator-application.c
+)
+
+set_source_files_properties(${SOURCES} PROPERTIES COMPILE_FLAGS ${COMPILE_FLAGS})
+add_library("ayatana-application" SHARED ${SOURCES})
+target_compile_definitions("ayatana-application" PUBLIC G_LOG_DOMAIN="Ayatana-Indicator-Application")
+target_include_directories("ayatana-application" PUBLIC ${PROJECT_DEPS_INCLUDE_DIRS})
+target_include_directories("ayatana-application" PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
+target_link_libraries("ayatana-application" ${PROJECT_DEPS_LIBRARIES})
+add_dependencies("ayatana-application" "src-generated")
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libayatana-application.so" DESTINATION "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/ayatana-indicators3/7")
+
+# ayatana-indicator-application-service
+
+set(SOURCES
+ application-service.c
+ application-service-appstore.c
+ ayatana-application-service-marshal.c
+ application-service-watcher.c
+ gen-ayatana-application-service.xml.c
+ generate-id.c
+)
+
+set_source_files_properties(${SOURCES} PROPERTIES COMPILE_FLAGS ${COMPILE_FLAGS})
+add_executable("ayatana-indicator-application-service" ${SOURCES})
+target_compile_definitions("ayatana-indicator-application-service" PUBLIC DATADIR="${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR}/ayatana-indicator-application")
+target_compile_definitions("ayatana-indicator-application-service" PUBLIC G_LOG_DOMAIN="ayatana-indicator-application-service")
+target_include_directories("ayatana-indicator-application-service" PUBLIC ${PROJECT_DEPS_INCLUDE_DIRS})
+target_include_directories("ayatana-indicator-application-service" PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
+target_link_libraries("ayatana-indicator-application-service" ${PROJECT_DEPS_LIBRARIES})
+add_dependencies("ayatana-indicator-application-service" "ayatana-application")
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ayatana-indicator-application-service" DESTINATION "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBEXECDIR}/ayatana-indicator-application")
diff --git a/src/Makefile.am b/src/Makefile.am
deleted file mode 100644
index 916b745..0000000
--- a/src/Makefile.am
+++ /dev/null
@@ -1,113 +0,0 @@
-CLEANFILES =
-DISTCLEANFILES =
-BUILT_SOURCES =
-EXTRA_DIST =
-
-include $(top_srcdir)/Makefile.am.marshal
-
-##################################
-# Indicator
-##################################
-
-applicationlibdir = $(INDICATORDIR)
-applicationlib_LTLIBRARIES = libayatana-application.la
-libayatana_application_la_SOURCES = \
- ayatana-application-service-marshal.c \
- dbus-shared.h \
- indicator-application.c
-libayatana_application_la_CFLAGS = $(INDICATOR_CFLAGS) \
- $(COVERAGE_CFLAGS) \
- -Wall \
- -Wl,-Bsymbolic-functions \
- -Wl,-z,defs \
- -Wl,--as-needed \
- -Wno-error=deprecated-declarations \
- -DG_LOG_DOMAIN=\"Ayatana-Indicator-Application\"
-libayatana_application_la_LIBADD = $(INDICATOR_LIBS)
-libayatana_application_la_LDFLAGS = $(COVERAGE_LDFLAGS) \
- -module -avoid-version
-
-##################################
-# Service
-##################################
-
-pkglibexec_PROGRAMS = ayatana-indicator-application-service
-
-BUILT_SOURCES += \
- ayatana-application-service-marshal.h \
- ayatana-application-service-marshal.c \
- ayatana-notification-watcher-server.h
-
-ayatana_indicator_application_service_SOURCES = \
- application-service.c \
- application-service-appstore.h \
- application-service-appstore.c \
- ayatana-application-service-marshal.c \
- application-service-watcher.h \
- application-service-watcher.c \
- gen-ayatana-application-service.xml.c \
- dbus-shared.h \
- generate-id.h \
- generate-id.c
-
-ayatana_indicator_application_service_CFLAGS = \
- $(INDICATOR_CFLAGS) \
- $(APPINDICATOR_CFLAGS) \
- $(COVERAGE_CFLAGS) \
- -DDATADIR="\"$(pkgdatadir)\"" \
- -Wall -Wno-error=deprecated-declarations \
- -DG_LOG_DOMAIN=\"ayatana-indicator-application-service\"
-
-ayatana_indicator_application_service_LDADD = \
- $(INDICATOR_LIBS) \
- $(APPINDICATOR_LIBS)
-
-ayatana_indicator_application_service_LDFLAGS = \
- $(COVERAGE_LDFLAGS)
-
-glib_marshal_list = ayatana-application-service-marshal.list
-glib_marshal_prefix = _ayatana_application_service_marshal
-
-##################################
-# DBus Specs
-##################################
-
-GDBUS_SPECS = \
- ayatana-application-service.xml
-
-DBUS_SPECS = \
- ayatana-notification-watcher.xml
-
-%-client.h: %.xml
- dbus-binding-tool \
- --prefix=_$(notdir $(subst -,_,$(<:.xml=)))_client \
- --mode=glib-client \
- --output=$@ \
- $<
-
-%-server.h: %.xml
- dbus-binding-tool \
- --prefix=_$(notdir $(subst -,_,$(<:.xml=)))_server \
- --mode=glib-server \
- --output=$@ \
- $<
-
-gen-%.xml.c: %.xml
- @echo "Building $@ from $<"
- @echo "const char * _$(notdir $(subst -,_,$(subst .,_,$(basename $<)))) = " > $@
- @sed -e "s:\":\\\\\":g" -e s:^:\": -e s:\$$:\\\\n\": $< >> $@
- @echo ";" >> $@
-
-gen-%.xml.h: %.xml
- @echo "Building $@ from $<"
- @echo "extern const char * _$(notdir $(subst -,_,$(subst .,_,$(basename $<))));" > $@
-
-BUILT_SOURCES += \
- $(DBUS_SPECS:.xml=-client.h) \
- $(DBUS_SPECS:.xml=-server.h) \
- gen-ayatana-application-service.xml.c \
- gen-ayatana-application-service.xml.h
-
-CLEANFILES += $(BUILT_SOURCES)
-
-EXTRA_DIST += $(DBUS_SPECS) $(GDBUS_SPECS)
diff --git a/src/ayatana-appindicator3-0.1.pc.in b/src/ayatana-appindicator3-0.1.pc.in
deleted file mode 100644
index e02bdbd..0000000
--- a/src/ayatana-appindicator3-0.1.pc.in
+++ /dev/null
@@ -1,14 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-bindir=@bindir@
-includedir=@includedir@
-
-Cflags: -I${includedir}/libayatana-appindicator3-0.1
-Requires: dbusmenu-glib gtk+-3.0
-Libs: -L${libdir} -layatana-appindicator3
-
-Name: ayatana-appindicator3-0.1
-Description: Application indicators
-Version: @VERSION@
-
diff --git a/tests/Makefile.am b/tests/Makefile.am
deleted file mode 100644
index 20ac513..0000000
--- a/tests/Makefile.am
+++ /dev/null
@@ -1,7 +0,0 @@
-
-check_PROGRAMS =
-
-TESTS =
-DISTCLEANFILES = $(TESTS)
-
-EXTRA_DIST = run-xvfb.sh
diff --git a/tests/run-xvfb.sh b/tests/run-xvfb.sh
deleted file mode 100644
index 35737c2..0000000
--- a/tests/run-xvfb.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-if [ "$DISPLAY" == "" ]; then
-Xvfb -ac -noreset -screen 0 800x600x16 -help 2>/dev/null 1>&2
-XID=`for id in 101 102 103 104 105 106 107 197 199 211 223 227 293 307 308 309 310 311 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 4703 4721 4723 4729 4733 4751 9973 9974 9975 9976 9977 9978 9979 9980 9981 9982 9983 9984 9985 9986 9987 9988 9989 9990 9991 9992 9993 9994 9995 9996 9997 9998 9999 ; do test -e /tmp/.X$id-lock || { echo $id; exit 0; }; done; exit 1`
-{ Xvfb -ac -noreset -screen 0 800x600x16 :$XID -screen 0 800x600x16 -nolisten tcp -auth /dev/null >/dev/null 2>&1 & trap "kill -15 $! " 0 HUP INT QUIT TRAP USR1 PIPE TERM ; } || { echo "Gtk+Tests:ERROR: Failed to start Xvfb environment for X11 target tests."; exit 1; }
-DISPLAY=:$XID
-export DISPLAY
-sleep 2
-fi