summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlliver Schinagl <oliver@schinagl.nl>2015-01-24 13:53:43 (GMT)
committerOlliver Schinagl <oliver@schinagl.nl>2015-01-24 14:18:21 (GMT)
commit08cfb908c22c0c7b5aeb788569950718939b7465 (patch)
tree6602640dc6b8dafaa3605d9cc3e955e66581d1e9
parente13c3bc4aeba38f4f70754d8e73985eafb23a290 (diff)
downloadeulogium-08cfb908c22c0c7b5aeb788569950718939b7465.zip
eulogium-08cfb908c22c0c7b5aeb788569950718939b7465.tar.gz
eulogium-08cfb908c22c0c7b5aeb788569950718939b7465.tar.bz2
EFL empty project
Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
-rw-r--r--.gitignore63
-rw-r--r--AUTHORS1
-rw-r--r--COPYING (renamed from LICENSE)0
-rw-r--r--ChangeLog1
-rw-r--r--INSTALL370
-rw-r--r--Makefile.am91
-rw-r--r--Makefile_Edje_Helper.am9
-rw-r--r--NEWS0
-rw-r--r--TODO0
-rwxr-xr-xautogen.sh15
-rw-r--r--configure.ac98
-rw-r--r--data/Makefile.am3
-rw-r--r--data/desktop/Makefile.am9
-rw-r--r--data/desktop/eulogium.desktop.in12
-rw-r--r--data/desktop/eulogium.pngbin0 -> 82822 bytes
-rw-r--r--data/themes/Makefile.am4
-rw-r--r--data/themes/default/Makefile.am22
-rw-r--r--data/themes/default/default.edc21
-rw-r--r--data/themes/default/images/enlightenment.pngbin0 -> 2046 bytes
-rw-r--r--data/themes/default/sounds/bell.wavbin0 -> 242396 bytes
-rw-r--r--description1
-rw-r--r--doc/Makefile.am38
-rw-r--r--doc/eulogium.1.in50
-rw-r--r--m4/efl.m4123
-rw-r--r--m4/efl_attribute.m456
-rw-r--r--m4/efl_binary.m479
-rw-r--r--m4/efl_compiler_flag.m457
-rw-r--r--m4/efl_doxygen.m498
-rw-r--r--m4/efl_path_max.m436
-rw-r--r--m4/efl_tests.m465
-rw-r--r--packaging/Makefile.am4
-rw-r--r--packaging/pkgbuild/Makefile.am3
-rw-r--r--packaging/pkgbuild/PKGBUILD60
-rw-r--r--packaging/slackware/Makefile.am4
-rw-r--r--packaging/slackware/doinst.sh1
-rwxr-xr-xpackaging/slackware/eulogium.SlackBuild106
-rw-r--r--packaging/slackware/slack-desc19
-rw-r--r--packaging/slackware/slack-required5
-rw-r--r--po/Makevars41
-rw-r--r--po/POTFILES.in2
-rw-r--r--src/Makefile.am4
-rw-r--r--src/bin/Makefile.am19
-rw-r--r--src/bin/eulogium_main.c118
-rw-r--r--src/bin/eulogium_private.h6
-rw-r--r--src/bin/gettext.h280
-rw-r--r--src/lib/Eulogium.h111
-rw-r--r--src/lib/Makefile.am18
-rw-r--r--src/lib/eulogium.c64
-rw-r--r--src/lib/eulogium_private.h27
-rw-r--r--src/tests/Makefile.am17
-rw-r--r--src/tests/test_eulogium.c124
51 files changed, 2355 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..cd67ad2
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,63 @@
+# generated and tmp files
+*~
+*.edj
+*.exe
+*.o
+*.lo
+*.la
+.deps
+*.gcno
+*.gcda
+
+/src/bin/skeleton
+/src/tests/skeleton_tests
+packaging/slackware/skeleton-*.txz
+skeleton-*.tar.?z*
+po/*.gmo
+po/POTFILES
+.libs
+
+# autotools crap
+m4/*.m4
+!m4/efl*.m4
+Makefile
+Makefile.in
+aclocal.m4
+autom4te.cache
+compile
+config.guess
+config.h
+config.h.in
+config.log
+config.rpath
+config.status
+config.sub
+configure
+depcomp
+install-sh
+libtool
+ltmain.sh
+missing
+stamp-h1
+ar-lib
+test-driver
+test-suite.log
+
+# gettext crap
+ABOUT-NLS
+po/Makefile.in.in
+po/Makevars.template
+po/Rules-quot
+po/boldquot.sed
+po/en@boldquot.header
+po/en@quot.header
+po/insert-header.sin
+po/quot.sed
+po/remove-potcdate.sed
+po/remove-potcdate.sin
+po/stamp-po
+
+/coverage/
+/src/tests/skeleton_tests.*
+/src/tests/test-suite.log
+/src/tests/check-results.xml
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..d2f68c0
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1 @@
+Olliver Schinagl <o.schinagl@ultimaker.com>
diff --git a/LICENSE b/COPYING
index dba13ed..dba13ed 100644
--- a/LICENSE
+++ b/COPYING
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 0000000..e6a8d12
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1 @@
+Initial version
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 0000000..007e939
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,370 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation,
+Inc.
+
+ Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved. This file is offered as-is,
+without warranty of any kind.
+
+Basic Installation
+==================
+
+ Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package. The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package. Some packages provide this
+`INSTALL' file but do not implement all of the features documented
+below. The lack of an optional feature in a given package is not
+necessarily a bug. More recommendations for GNU packages can be found
+in *note Makefile Conventions: (standards)Makefile Conventions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+ It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring. Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+ The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'. You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
+
+ The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system.
+
+ Running `configure' might take a while. While running, it prints
+ some messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package, generally using the just-built uninstalled binaries.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation. When installing into a prefix owned by root, it is
+ recommended that the package be configured and built as a regular
+ user, and only the `make install' phase executed with root
+ privileges.
+
+ 5. Optionally, type `make installcheck' to repeat any self-tests, but
+ this time using the binaries in their final installed location.
+ This target does not install anything. Running this target as a
+ regular user, particularly if the prior `make install' required
+ root privileges, verifies that the installation completed
+ correctly.
+
+ 6. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+ 7. Often, you can also type `make uninstall' to remove the installed
+ files again. In practice, not all packages have tested that
+ uninstallation works correctly, even though it is required by the
+ GNU Coding Standards.
+
+ 8. Some packages, particularly those that use Automake, provide `make
+ distcheck', which can by used by developers to test that all other
+ targets like `make install' and `make uninstall' work correctly.
+ This target is generally not run by end users.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+ You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment. Here
+is an example:
+
+ ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+ *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you can use GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'. This
+is known as a "VPATH" build.
+
+ With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory. After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
+
+ On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple `-arch' options to the
+compiler but only a single `-arch' option to the preprocessor. Like
+this:
+
+ ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+ CPP="gcc -E" CXXCPP="g++ -E"
+
+ This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the `lipo' tool if you have problems.
+
+Installation Names
+==================
+
+ By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc. You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX', where PREFIX must be an
+absolute file name.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files. Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them. In general, the
+default for these options is expressed in terms of `${prefix}', so that
+specifying just `--prefix' will affect all of the other directory
+specifications that were not explicitly provided.
+
+ The most portable way to affect installation locations is to pass the
+correct locations to `configure'; however, many packages provide one or
+both of the following shortcuts of passing variable assignments to the
+`make install' command line to change installation locations without
+having to reconfigure or recompile.
+
+ The first method involves providing an override variable for each
+affected directory. For example, `make install
+prefix=/alternate/directory' will choose an alternate location for all
+directory configuration variables that were expressed in terms of
+`${prefix}'. Any directories that were specified during `configure',
+but not in terms of `${prefix}', must each be overridden at install
+time for the entire installation to be relocated. The approach of
+makefile variable overrides for each directory variable is required by
+the GNU Coding Standards, and ideally causes no recompilation.
+However, some platforms have known limitations with the semantics of
+shared libraries that end up requiring recompilation when using this
+method, particularly noticeable in packages that use GNU Libtool.
+
+ The second method involves providing the `DESTDIR' variable. For
+example, `make install DESTDIR=/alternate/directory' will prepend
+`/alternate/directory' before all installation names. The approach of
+`DESTDIR' overrides is not required by the GNU Coding Standards, and
+does not work on platforms that have drive letters. On the other hand,
+it does better at avoiding recompilation issues, and works well even
+when some directory options were not specified in terms of `${prefix}'
+at `configure' time.
+
+Optional Features
+=================
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+ Some packages offer the ability to configure how verbose the
+execution of `make' will be. For these packages, running `./configure
+--enable-silent-rules' sets the default to minimal output, which can be
+overridden with `make V=1'; while running `./configure
+--disable-silent-rules' sets the default to verbose, which can be
+overridden with `make V=0'.
+
+Particular systems
+==================
+
+ On HP-UX, the default C compiler is not ANSI C compatible. If GNU
+CC is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+ ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+ HP-UX `make' updates targets which have the same time stamps as
+their prerequisites, which makes it generally unusable when shipped
+generated files such as `configure' are involved. Use GNU `make'
+instead.
+
+ On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its `<wchar.h>' header file. The option `-nodtk' can be used as
+a workaround. If GNU CC is not installed, it is therefore recommended
+to try
+
+ ./configure CC="cc"
+
+and if that doesn't work, try
+
+ ./configure CC="cc -nodtk"
+
+ On Solaris, don't put `/usr/ucb' early in your `PATH'. This
+directory contains several dysfunctional programs; working variants of
+these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
+in your `PATH', put it _after_ `/usr/bin'.
+
+ On Haiku, software installed for all users goes in `/boot/common',
+not `/usr/local'. It is recommended to use the following options:
+
+ ./configure --prefix=/boot/common
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on. Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+ CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+ OS
+ KERNEL-OS
+
+ See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+ If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+ If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+ Variables not defined in a site shell script can be set in the
+environment passed to `configure'. However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost. In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'. For example:
+
+ ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf limitation. Until the limitation is lifted, you can use
+this workaround:
+
+ CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+`configure' Invocation
+======================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+ Print a summary of all of the options to `configure', and exit.
+
+`--help=short'
+`--help=recursive'
+ Print a summary of the options unique to this package's
+ `configure', and exit. The `short' variant lists options used
+ only in the top level, while the `recursive' variant lists options
+ also present in any nested packages.
+
+`--version'
+`-V'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`--cache-file=FILE'
+ Enable the cache: use and save the results of the tests in FILE,
+ traditionally `config.cache'. FILE defaults to `/dev/null' to
+ disable caching.
+
+`--config-cache'
+`-C'
+ Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made. To
+ suppress all normal output, redirect it to `/dev/null' (any error
+ messages will still be shown).
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--prefix=DIR'
+ Use DIR as the installation prefix. *note Installation Names::
+ for more details, including other options available for fine-tuning
+ the installation locations.
+
+`--no-create'
+`-n'
+ Run the configure checks, but stop before creating any output
+ files.
+
+`configure' also accepts some other, not widely useful, options. Run
+`configure --help' for more details.
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 0000000..1fd85ec
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,91 @@
+MAINTAINERCLEANFILES = \
+ ABOUT-NLS \
+ Makefile.in \
+ aclocal.m4 \
+ compile \
+ config.guess \
+ config.h.in \
+ config.rpath \
+ config.sub \
+ configure \
+ depcomp \
+ install-sh \
+ ltmain.sh \
+ missing \
+ m4/libtool.m4 \
+ m4/ltoptions.m4 \
+ m4/ltsugar.m4 \
+ m4/ltversion.m4 \
+ m4/lt~obsolete.m4 \
+ po/boldquot.sed \
+ po/en@boldquot.header \
+ po/en@quot.header \
+ po/insert-header.sin \
+ po/Makefile.in.in \
+ po/Makevars.template \
+ po/quot.sed \
+ po/remove-potcdate.sin \
+ po/Rules-quot \
+ $(PACKAGE_TARNAME)-$(PACKAGE_VERSION).tar.gz \
+ $(PACKAGE_TARNAME)-$(PACKAGE_VERSION).tar.bz2
+
+SUBDIRS = data doc packaging po src
+
+ACLOCAL_AMFLAGS = -I m4
+
+filesdir = $(docdir)
+files_DATA = \
+ AUTHORS \
+ COPYING \
+ ChangeLog \
+ INSTALL \
+ NEWS \
+ README \
+ TODO
+
+EXTRA_DIST = \
+ autogen.sh \
+ config.rpath \
+ configure \
+ m4/efl_attribute.m4 \
+ m4/efl_binary.m4 \
+ m4/efl_compiler_flag.m4 \
+ m4/efl_path_max.m4
+
+if EFL_HAVE_LCOV
+
+lcov-reset:
+ @rm -rf $(top_builddir)/coverage
+ @find $(top_builddir) -name "*.gcda" -delete
+ @lcov --zerocounters --directory $(top_builddir)
+
+lcov-report:
+ @mkdir $(top_builddir)/coverage
+ lcov --capture --compat-libtool --output-file $(top_builddir)/coverage/coverage.info --directory $(top_builddir)/src/lib --base-directory $(top_srcdir)/src/lib
+ lcov --remove $(top_builddir)/coverage/coverage.info '*.h' --output-file $(top_builddir)/coverage/coverage.cleaned.info
+ lcov --remove $(top_builddir)/coverage/coverage.cleaned.info '*/tests/*' --output-file $(top_builddir)/coverage/coverage.cleaned2.info
+ genhtml --branch-coverage -t "$(PACKAGE_STRING)" -o $(top_builddir)/coverage/html $(top_builddir)/coverage/coverage.cleaned2.info
+ @echo "Coverage Report at $(top_builddir)/coverage/html"
+
+endif
+
+if EFL_HAVE_TESTS
+
+TESTS = src/tests/eulogium_tests
+
+lcov-check:
+if EFL_HAVE_LCOV
+ @$(MAKE) $(AM_MAKEFLAGS) lcov-reset
+endif
+ @$(MAKE) $(AM_MAKEFLAGS) check
+if EFL_HAVE_LCOV
+ @$(MAKE) $(AM_MAKEFLAGS) lcov-report
+endif
+
+endif
+
+# cleaning
+
+clean-local:
+ rm -rf benchmark coverage
+
diff --git a/Makefile_Edje_Helper.am b/Makefile_Edje_Helper.am
new file mode 100644
index 0000000..3f05237
--- /dev/null
+++ b/Makefile_Edje_Helper.am
@@ -0,0 +1,9 @@
+EDJE_CC = @edje_cc@
+EDJE_CC_FLAGS_VERBOSE = $(EDJE_CC_FLAGS_VERBOSE_@AM_V@)
+EDJE_CC_FLAGS_VERBOSE_ = $(EDJE_CC_FLAGS_VERBOSE_@AM_DEFAULT_V@)
+EDJE_CC_FLAGS_VERBOSE_1 = -v
+EDJE_CC_FLAGS = $(EDJE_CC_FLAGS_VERBOSE) -fastdecomp -id $(srcdir) -fd $(srcdir)
+
+AM_V_EDJ = $(am__v_EDJ_@AM_V@)
+am__v_EDJ_ = $(am__v_EDJ_@AM_DEFAULT_V@)
+am__v_EDJ_0 = @echo " EDJ " $@;
diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/NEWS
diff --git a/TODO b/TODO
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/TODO
diff --git a/autogen.sh b/autogen.sh
new file mode 100755
index 0000000..fe644eb
--- /dev/null
+++ b/autogen.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+rm -rf autom4te.cache
+rm -f aclocal.m4 ltmain.sh
+
+echo "Running autopoint..." ; autopoint -f || :
+echo "Running aclocal..." ; aclocal -I m4 $ACLOCAL_FLAGS || exit 1
+echo "Running autoconf..." ; autoconf || exit 1
+echo "Running autoheader..." ; autoheader || exit 1
+echo "Running libtoolize..." ; (libtoolize --copy --automake || glibtoolize --automake) || exit 1
+echo "Running automake..." ; automake --add-missing --copy --gnu || exit 1
+
+if [ -z "$NOCONFIGURE" ]; then
+ ./configure "$@"
+fi
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..5af30e4
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,98 @@
+EFL_VERSION([0], [0], [1], [dev])
+AC_INIT([eulogium], [efl_version], [enlightenment-devel@lists.sourceforge.net])
+
+AC_PREREQ([2.65])
+AC_CONFIG_SRCDIR([configure.ac])
+AC_CONFIG_HEADERS([config.h])
+
+AC_CANONICAL_BUILD
+AC_CANONICAL_HOST
+
+AM_INIT_AUTOMAKE([1.10 dist-bzip2 -Wall color-tests])
+m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+AM_PROG_AR
+
+# this will speed up libtool checks
+LT_PREREQ([2.2])
+LT_INIT([win32-dll pic-only])
+EFL_INIT
+
+AC_PROG_CC
+AM_PROG_CC_C_O
+EFL_ATTRIBUTE_UNUSED
+ELM_QUICKLAUNCH
+EFL_COMPILER_FLAG([-Wall])
+EFL_COMPILER_FLAG([-W])
+
+# Checks for header files.
+EFL_CHECK_PATH_MAX
+
+# Check for EFL
+PKG_CHECK_MODULES([EFL],
+[
+ eina >= 1.8.0
+ evas >= 1.8.0
+ ecore >= 1.8.0
+ edje >= 1.8.0
+ elementary >= 1.8.0
+])
+
+# Check for tests and coverage
+AC_ARG_WITH([tests],
+ [AC_HELP_STRING([--with-tests=none|regular|coverage],
+ [choose testing method: regular, coverage or none.
+ @<:@default=none@:>@])],
+ [build_tests=${withval}],
+ [build_tests=auto])
+
+EFL_TESTS([${build_tests}])
+
+# doxygen program for documentation building
+EFL_CHECK_DOXYGEN([build_doc="yes"], [build_doc="no"])
+
+# Check edje_cc
+EFL_WITH_BIN([edje], [edje-cc], [edje_cc])
+
+# Checks for library functions.
+AC_CHECK_FUNCS([setlocale])
+
+AM_GNU_GETTEXT_VERSION([0.17])
+AM_GNU_GETTEXT([external])
+
+AC_CONFIG_FILES([
+Makefile
+data/Makefile
+data/desktop/Makefile
+data/desktop/eulogium.desktop
+data/themes/Makefile
+data/themes/default/Makefile
+doc/Makefile
+packaging/Makefile
+packaging/slackware/Makefile
+packaging/pkgbuild/Makefile
+po/Makefile.in
+src/Makefile
+src/bin/Makefile
+src/lib/Makefile
+src/tests/Makefile
+doc/eulogium.1
+])
+AC_OUTPUT
+
+echo
+echo
+echo "------------------------------------------------------------------------"
+echo "$PACKAGE_NAME $PACKAGE_VERSION"
+echo "------------------------------------------------------------------------"
+echo
+echo "Compilation..............: make (or gmake)"
+echo " CFLAGS.................: $CFLAGS"
+echo " edje_cc................: ${edje_cc}"
+echo
+echo "Building documentation...: ${build_doc}"
+echo "Building tests...........: ${have_tests}"
+echo "Generate coverage .......: ${have_lcov}"
+echo
+echo "Installation.............: make install (as root if needed, with 'su' or 'sudo')"
+echo " prefix.................: $prefix"
+echo
diff --git a/data/Makefile.am b/data/Makefile.am
new file mode 100644
index 0000000..2d4e6c1
--- /dev/null
+++ b/data/Makefile.am
@@ -0,0 +1,3 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+SUBDIRS = themes desktop
diff --git a/data/desktop/Makefile.am b/data/desktop/Makefile.am
new file mode 100644
index 0000000..8a745a0
--- /dev/null
+++ b/data/desktop/Makefile.am
@@ -0,0 +1,9 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+desktopdir = $(datadir)/applications
+desktop_DATA = eulogium.desktop
+
+icondir = $(datadir)/icons
+icon_DATA = eulogium.png
+
+EXTRA_DIST = $(desktop_DATA) $(icon_DATA)
diff --git a/data/desktop/eulogium.desktop.in b/data/desktop/eulogium.desktop.in
new file mode 100644
index 0000000..1bc380c
--- /dev/null
+++ b/data/desktop/eulogium.desktop.in
@@ -0,0 +1,12 @@
+[Desktop Entry]
+Encoding=UTF-8
+Version=@VERSION@
+Type=Application
+Name=@PACKAGE_NAME@
+Name[fr]=@PACKAGE_NAME@
+GenericName=Efl Application Skeletion
+Comment=Efl Application Eulogium
+Icon=@PACKAGE_NAME@
+TryExec=@PACKAGE_NAME@
+Exec=@PACKAGE_NAME@
+Categories=Development;Utility;
diff --git a/data/desktop/eulogium.png b/data/desktop/eulogium.png
new file mode 100644
index 0000000..9037bea
--- /dev/null
+++ b/data/desktop/eulogium.png
Binary files differ
diff --git a/data/themes/Makefile.am b/data/themes/Makefile.am
new file mode 100644
index 0000000..31a2b40
--- /dev/null
+++ b/data/themes/Makefile.am
@@ -0,0 +1,4 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+SUBDIRS = default
+
diff --git a/data/themes/default/Makefile.am b/data/themes/default/Makefile.am
new file mode 100644
index 0000000..2612ac0
--- /dev/null
+++ b/data/themes/default/Makefile.am
@@ -0,0 +1,22 @@
+AUTOMAKE_OPTIONS = subdir-objects
+MAINTAINERCLEANFILES = Makefile.in
+
+EXTRA_DIST = \
+default.edc \
+images/enlightenment.png \
+sounds/bell.wav
+
+include ../../../Makefile_Edje_Helper.am
+
+filesdir = $(datadir)/$(PACKAGE)/themes
+files_DATA = default.edj
+
+default.edj: Makefile $(EXTRA_DIST)
+ $(AM_V_EDJ)$(EDJE_CC) $(EDJE_CC_FLAGS) \
+ -id ${top_srcdir}/data/themes/default/images \
+ -sd ${top_srcdir}/data/themes/default/sounds \
+ $(top_srcdir)/data/themes/default/default.edc \
+ $(top_builddir)/data/themes/default/default.edj
+
+clean-local:
+ rm -f *.edj
diff --git a/data/themes/default/default.edc b/data/themes/default/default.edc
new file mode 100644
index 0000000..b1bacd8
--- /dev/null
+++ b/data/themes/default/default.edc
@@ -0,0 +1,21 @@
+images.image: "enlightenment.png" COMP;
+
+collections {
+ sounds {
+ sample {
+ name: "bell" LOSSY 64;
+ source: "bell.wav";
+ }
+ }
+
+ group {
+ name: "test";
+ parts {
+ part { name: "main"; type: IMAGE;
+ description {
+ image.normal: "enlightenment.png";
+ }
+ }
+ }
+ }
+}
diff --git a/data/themes/default/images/enlightenment.png b/data/themes/default/images/enlightenment.png
new file mode 100644
index 0000000..759381d
--- /dev/null
+++ b/data/themes/default/images/enlightenment.png
Binary files differ
diff --git a/data/themes/default/sounds/bell.wav b/data/themes/default/sounds/bell.wav
new file mode 100644
index 0000000..c052881
--- /dev/null
+++ b/data/themes/default/sounds/bell.wav
Binary files differ
diff --git a/description b/description
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/description
@@ -0,0 +1 @@
+
diff --git a/doc/Makefile.am b/doc/Makefile.am
new file mode 100644
index 0000000..8433e51
--- /dev/null
+++ b/doc/Makefile.am
@@ -0,0 +1,38 @@
+MAINTAINERCLEANFILES = Makefile.in
+EXTRA_DIST = eulogium.1.in
+
+man_MANS = eulogium.1
+
+
+.PHONY: doc
+
+PACKAGE_DOCNAME = $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)-doc
+
+if EFL_BUILD_DOC
+
+doc-clean:
+ rm -rf html/ latex/ man/ xml/ $(top_builddir)/$(PACKAGE_DOCNAME).tar*
+
+doc: all
+ $(efl_doxygen)
+ cp $(srcdir)/img/* html/
+ cp $(srcdir)/img/*.eps latex/
+ rm -rf $(PACKAGE_DOCNAME).tar*
+ mkdir -p $(PACKAGE_DOCNAME)/doc
+ cp -R html/ latex/ man/ $(PACKAGE_DOCNAME)/doc
+ tar cf $(PACKAGE_DOCNAME).tar $(PACKAGE_DOCNAME)/
+ bzip2 -9 $(PACKAGE_DOCNAME).tar
+ rm -rf $(PACKAGE_DOCNAME)/
+ mv $(PACKAGE_DOCNAME).tar.bz2 $(top_builddir)
+ @echo "Documentation Package: doc/$(PACKAGE_DOCNAME).tar.bz2"
+ @echo "Documentation HTML: doc/html"
+
+clean-local: doc-clean
+
+else
+
+doc:
+ @echo "Documentation not built. Run ./configure --help"
+
+endif
+
diff --git a/doc/eulogium.1.in b/doc/eulogium.1.in
new file mode 100644
index 0000000..d865f25
--- /dev/null
+++ b/doc/eulogium.1.in
@@ -0,0 +1,50 @@
+.TH EULOGIUM 1 "01 01 1970 FIXME" "@PACKAGE_NAME@ @PACKAGE_VERSION@"
+
+.SH NAME
+eulogium \- a demo application
+
+.SH SYNOPSIS
+.B eulogium
+[-d] [-f] [-t=THEME] [-m=MINES] [-L] [-C] [-V] [-h]
+
+.SH DESCRIPTION
+
+Eulogium is a demo application to show how to integrate EFL and autotools into a
+cross platform build. You should be able to generate an executable easily for all
+target supported by EFL with this eulogium.
+
+With no option, the program starts and display an Hello World.
+
+
+.SH OPTIONS
+
+.TP
+.B -L, --license
+Show license.
+
+.TP
+.B -C, --copyright
+Show copyright.
+
+.TP
+.B -V, --version
+Show program version.
+
+.TP
+.B -h, --help
+Print list of options with short description.
+
+
+.SH BUGS
+
+Reports are welcome. Send them at @PACKAGE_BUGREPORT@.
+
+
+.SH HOMEPAGE
+
+http://enlightenment.org
+
+
+.SH AUTHORS
+
+oliver <o.schinagl@ultimaker.com> and various contributors.
diff --git a/m4/efl.m4 b/m4/efl.m4
new file mode 100644
index 0000000..098722f
--- /dev/null
+++ b/m4/efl.m4
@@ -0,0 +1,123 @@
+dnl file to manage modules in efl
+
+dnl EFL_VERSION(major, minor, micro, release)
+dnl This setup EFL version information and should be called BEFORE AC_INIT().
+dnl
+dnl release parameter is 'dev' to use from SVN or libtool -release field.
+dnl It may be empty if not dev (svn/live build) and no -release is to be used.
+dnl
+dnl Examples:
+dnl EFL_VERSION(1, 7, 99, dev)
+dnl EFL_VERSION(1, 7, 99, ver-1234)
+dnl This will define couple of m4 symbols:
+dnl v_maj = given major number (first parameter)
+dnl v_min = given minor number (second parameter)
+dnl v_mic = given micro number (third parameter)
+dnl v_rev = if release, it's 0, otherwise it's dev_version.
+dnl v_rel = if release, it's -release followed by fourth parameter,
+dnl otherwise it's empty. (mostly for libtool)
+dnl efl_version = if release, it's major.minor.micro, otherwise it's
+dnl major.minor.micro.dev_version
+dnl dev_version = development version (svn revision).
+dnl def_build_profile = dev or release based on 'dev' release parameter.
+AC_DEFUN([EFL_VERSION],
+[dnl
+m4_define([v_maj], [$1])dnl
+m4_define([v_min], [$2])dnl
+m4_define([v_mic], [$3])dnl
+m4_define([dev_version], m4_esyscmd([(git rev-list --count HEAD 2>/dev/null || echo 0) | tr -d '\n']))dnl
+m4_define([v_rev], m4_if($4, dev, [dev_version], [0]))dnl
+m4_define([v_rel], [])dnl
+m4_define([def_build_profile], m4_if($4, dev, [dev], [release]))dnl
+m4_define([efl_version], m4_if($4, dev, [v_maj.v_min.v_mic.v_rev], [v_maj.v_min.v_mic]))dnl
+m4_define([efl_version], [v_maj.v_min.v_mic])dnl
+])
+
+dnl EFL_COLOR
+dnl will check if terminal supports color and if color is wanted by user.
+dnl
+dnl Used Variables:
+dnl WANT_COLOR: if no, forces no color output.
+dnl TERM: used to check if color should be enabled.
+dnl
+dnl Defined Variables:
+dnl COLOR_YES: to be used in positive/yes conditions
+dnl COLOR_NO: to be used in negative/no conditions
+dnl COLOR_OTHER: to be used to highlight some other condition
+dnl COLOR_RESET: to reset color
+dnl want_color: yes or no
+AC_DEFUN([EFL_COLOR],
+[dnl
+case "$TERM" in
+ xterm|xterm-color|xterm-256color|Eterm|aterm|kterm|rxvt*|screen|gnome|interix)
+ want_color="${WANT_COLOR:-yes}"
+ ;;
+ *)
+ want_color="no"
+ ;;
+esac
+
+if test "${want_color}" = "yes"; then
+ if test `echo -e x` = x; then
+ echoopt=-e
+ else
+ echoopt=
+ fi
+
+ COLOR_YES=`echo $echoopt "\033@<:@1;32m"`
+ COLOR_NO=`echo $echoopt "\033@<:@1;31m"`
+ COLOR_OTHER=`echo $echoopt "\033@<:@1;36m"`
+ COLOR_RESET=`echo $echoopt "\033@<:@0m"`
+
+else
+ COLOR_YES=""
+ COLOR_NO=""
+ COLOR_OTHER=""
+ COLOR_RESET=""
+fi
+])
+
+dnl EFL_INIT()
+dnl Will AC_DEFINE() the following:
+dnl VMAJ = v_maj
+dnl VMIN = v_min
+dnl VMIC = v_mic
+dnl VREV = v_rev
+dnl Will AC_SUBST() the following:
+dnl VMAJ = v_maj
+dnl VMIN = v_min
+dnl VMIC = v_mic
+dnl EFL_LTLIBRARY_FLAGS="-no-undefined -version-info ..."
+dnl EFL_LTMODULE_FLAGS="-no-undefined -avoid-version"
+dnl Will define the following m4:
+dnl lt_cur = libtool 'current' field of libtool's -version-info
+dnl lt_rev = libtool 'revision' field of libtool's -version-info
+dnl lt_age = libtool 'age' field of libtool's -version-info
+AC_DEFUN([EFL_INIT],
+[dnl
+AC_REQUIRE([EFL_COLOR])dnl
+AC_DEFINE_UNQUOTED([VMAJ], [v_maj], [Major version])dnl
+AC_DEFINE_UNQUOTED([VMIN], [v_min], [Minor version])dnl
+AC_DEFINE_UNQUOTED([VMIC], [v_mic], [Micro version])dnl
+AC_DEFINE_UNQUOTED([VREV], [v_rev], [Revison])dnl
+VMAJ=v_maj
+VMIN=v_min
+VMIC=v_mic
+AC_SUBST([VMAJ])dnl
+AC_SUBST([VMIN])dnl
+AC_SUBST([VMIC])dnl
+dnl
+dnl TODO: warning - lt_cur:
+dnl the previous code assumed v_maj + v_min, but this will be a problem when
+dnl we bump v_maj and reset v_min. 1 + 7 == 7 + 1, so if v_maj is bumped
+dnl we multiply it by 100.
+m4_define([lt_cur], m4_if(m4_cmp(v_maj, 1), 0, m4_eval(v_maj + v_min), m4_eval(v_maj * 100 + v_min)))dnl
+m4_define([lt_rev], v_mic)dnl
+m4_define([lt_age], v_min)dnl
+dnl
+EFL_LTLIBRARY_FLAGS="-no-undefined -version-info lt_cur:lt_rev:lt_age v_rel"
+AC_SUBST(EFL_LTLIBRARY_FLAGS)dnl
+EFL_LTMODULE_FLAGS="-no-undefined -avoid-version"
+AC_SUBST([EFL_LTMODULE_FLAGS])dnl
+AC_MSG_NOTICE([Initialized AC_PACKAGE_NAME (AC_PACKAGE_VERSION) development=dev_version v_rel])
+])
diff --git a/m4/efl_attribute.m4 b/m4/efl_attribute.m4
new file mode 100644
index 0000000..78bff15
--- /dev/null
+++ b/m4/efl_attribute.m4
@@ -0,0 +1,56 @@
+dnl Copyright (C) 2011 Vincent Torri <vtorri at univ-evry dot fr>
+dnl That code is public domain and can be freely used or copied.
+
+dnl Macros for checking if the compiler supports some __attribute__ uses
+
+dnl Usage: EFL_ATTRIBUTE_UNUSED
+dnl call AC_DEFINE for __UNUSED__ if __attribute__((unused)) is available
+
+AC_DEFUN([EFL_ATTRIBUTE_UNUSED],
+[
+AC_MSG_CHECKING([for __attribute__ ((unused))])
+AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+void foo(int x __attribute__ ((unused))) {}
+ ]],
+ [[
+ ]])],
+ [have_attribute_unused="yes"],
+ [have_attribute_unused="no"])
+AC_MSG_RESULT([${have_attribute_unused}])
+
+if test "x${have_attribute_unused}" = "xyes" ; then
+ AC_DEFINE([__UNUSED__], [__attribute__ ((unused))], [Macro declaring a function argument to be unused.])
+else
+ AC_DEFINE([__UNUSED__], [], [__attribute__ ((unused)) is not supported.])
+fi
+])
+
+dnl Usage: EFL_ATTRIBUTE_VECTOR
+dnl call AC_DEFINE for HAVE_GCC_ATTRIBUTE_VECTOR if __attribute__((vector)) is available
+
+AC_DEFUN([EFL_ATTRIBUTE_VECTOR],
+[
+AC_MSG_CHECKING([for __attribute__ ((vector))])
+AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+typedef int v4si __attribute__ ((vector_size (16)));
+ ]],
+ [[
+if (sizeof(v4si) == 16)
+ return 0;
+else
+ return -1;
+ ]])],
+ [have_attribute_vector="yes"],
+ [have_attribute_vector="no"])
+AC_MSG_RESULT([${have_attribute_vector}])
+
+if test "x${have_attribute_vector}" = "xyes" ; then
+ AC_DEFINE([HAVE_GCC_ATTRIBUTE_VECTOR], [1], [Define to 1 if your compiler supports __attribute__ ((vector)).])
+fi
+])
+
+dnl End of efl_attribute.m4
diff --git a/m4/efl_binary.m4 b/m4/efl_binary.m4
new file mode 100644
index 0000000..91a26b2
--- /dev/null
+++ b/m4/efl_binary.m4
@@ -0,0 +1,79 @@
+dnl Copyright (C) 2010 Vincent Torri <vtorri at univ-evry dot fr>
+dnl That code is public domain and can be freely used or copied.
+
+dnl Macro that check if a binary is built or not
+
+dnl Usage: EFL_ENABLE_BIN(binary)
+dnl Call AC_SUBST(BINARY_PRG) (BINARY is the uppercase of binary, - being transformed into _)
+dnl Define have_binary (- is transformed into _)
+dnl Define conditional BUILD_BINARY (BINARY is the uppercase of binary, - being transformed into _)
+
+AC_DEFUN([EFL_ENABLE_BIN],
+[
+
+m4_pushdef([UP], m4_translit([[$1]], [-a-z], [_A-Z]))dnl
+m4_pushdef([DOWN], m4_translit([[$1]], [-A-Z], [_a-z]))dnl
+
+have_[]m4_defn([DOWN])="yes"
+
+dnl configure option
+
+AC_ARG_ENABLE([$1],
+ [AC_HELP_STRING([--disable-$1], [disable building of ]DOWN)],
+ [
+ if test "x${enableval}" = "xyes" ; then
+ have_[]m4_defn([DOWN])="yes"
+ else
+ have_[]m4_defn([DOWN])="no"
+ fi
+ ])
+
+AC_MSG_CHECKING([whether to build ]DOWN[ binary])
+AC_MSG_RESULT([$have_[]m4_defn([DOWN])])
+
+if test "x$have_[]m4_defn([DOWN])" = "xyes"; then
+ UP[]_PRG=DOWN[${EXEEXT}]
+fi
+
+AC_SUBST(UP[]_PRG)
+
+AM_CONDITIONAL(BUILD_[]UP, test "x$have_[]m4_defn([DOWN])" = "xyes")
+
+AS_IF([test "x$have_[]m4_defn([DOWN])" = "xyes"], [$2], [$3])
+
+])
+
+
+dnl Macro that check if a binary is built or not
+
+dnl Usage: EFL_WITH_BIN(package, binary, default_value)
+dnl Call AC_SUBST(_binary) (_binary is the lowercase of binary, - being transformed into _ by default, or the value set by the user)
+
+AC_DEFUN([EFL_WITH_BIN],
+[
+
+m4_pushdef([DOWN], m4_translit([[$2]], [-A-Z], [_a-z]))dnl
+m4_pushdef([UP], m4_translit([[$2]], [-a-z], [_A-Z]))dnl
+
+dnl configure option
+
+AC_ARG_WITH([$2],
+ [AC_HELP_STRING([--with-$2=PATH], [specify a specific path to ]DOWN[ @<:@default=$3@:>@])],
+ [
+ _efl_with_binary=${withval}
+ _efl_binary_define="yes"
+ ],
+ [
+ _efl_with_binary=$(pkg-config --variable=prefix $1)/bin/$3
+ _efl_binary_define="no"
+ ])
+
+DOWN=${_efl_with_binary}
+AC_MSG_NOTICE(DOWN[ set to ${_efl_with_binary}])
+
+with_binary_[]m4_defn([DOWN])=${_efl_with_binary}
+
+AM_CONDITIONAL(HAVE_[]UP, [test "x${_efl_binary_define}" = "xyes"])
+AC_SUBST(DOWN)
+
+])
diff --git a/m4/efl_compiler_flag.m4 b/m4/efl_compiler_flag.m4
new file mode 100644
index 0000000..25c285d
--- /dev/null
+++ b/m4/efl_compiler_flag.m4
@@ -0,0 +1,57 @@
+dnl Copyright (C) 2010 Vincent Torri <vtorri at univ-evry dot fr>
+dnl and Albin Tonnerre <albin dot tonnerre at gmail dot com>
+dnl That code is public domain and can be freely used or copied.
+
+dnl Macro that checks if a compiler flag is supported by the compiler.
+
+dnl Usage: EFL_COMPILER_FLAG(flag)
+dnl flag is added to CFLAGS if supported.
+
+AC_DEFUN([EFL_COMPILER_FLAG],
+[
+
+CFLAGS_save="${CFLAGS}"
+CFLAGS="${CFLAGS} $1"
+
+AC_LANG_PUSH([C])
+AC_MSG_CHECKING([whether the compiler supports $1])
+
+AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[]])],
+ [have_flag="yes"],
+ [have_flag="no"])
+AC_MSG_RESULT([${have_flag}])
+
+if test "x${have_flag}" = "xno" ; then
+ CFLAGS="${CFLAGS_save}"
+fi
+AC_LANG_POP([C])
+
+])
+
+dnl Macro that checks if a linker flag is supported by the compiler.
+
+dnl Usage: EFL_LINKER_FLAG(flag)
+dnl flag is added to LDFLAGS if supported (will be passed to ld anyway).
+
+AC_DEFUN([EFL_LINKER_FLAG],
+[
+
+LDFLAGS_save="${LDFLAGS}"
+LDFLAGS="${LDFLAGS} $1"
+
+AC_LANG_PUSH([C])
+AC_MSG_CHECKING([whether the compiler supports $1])
+
+AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM([[]])],
+ [have_flag="yes"],
+ [have_flag="no"])
+AC_MSG_RESULT([${have_flag}])
+
+if test "x${have_flag}" = "xno" ; then
+ LDFLAGS="${LDFLAGS_save}"
+fi
+AC_LANG_POP([C])
+
+])
diff --git a/m4/efl_doxygen.m4 b/m4/efl_doxygen.m4
new file mode 100644
index 0000000..0c1452f
--- /dev/null
+++ b/m4/efl_doxygen.m4
@@ -0,0 +1,98 @@
+dnl Copyright (C) 2008 Vincent Torri <vtorri at univ-evry dot fr>
+dnl That code is public domain and can be freely used or copied.
+
+dnl Macro that check if doxygen is available or not.
+
+dnl EFL_CHECK_DOXYGEN([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+dnl Test for the doxygen program
+dnl Defines efl_doxygen
+dnl Defines the automake conditionnal EFL_BUILD_DOC
+dnl
+AC_DEFUN([EFL_CHECK_DOXYGEN],
+[
+
+dnl
+dnl Disable the build of the documentation
+dnl
+AC_ARG_ENABLE([doc],
+ [AC_HELP_STRING(
+ [--disable-doc],
+ [Disable documentation build @<:@default=enabled@:>@])],
+ [
+ if test "x${enableval}" = "xyes" ; then
+ efl_enable_doc="yes"
+ else
+ efl_enable_doc="no"
+ fi
+ ],
+ [efl_enable_doc="yes"]
+)
+
+if test "x${efl_enable_doc}" = "xyes" ; then
+
+dnl
+dnl Specify the full file name, with path
+dnl
+
+ efl_doxygen="doxygen"
+
+ AC_ARG_WITH([doxygen],
+ [AC_HELP_STRING(
+ [--with-doxygen=FILE],
+ [doxygen program to use @<:@default=doxygen@:>@])],
+dnl
+dnl Check the given doxygen program.
+dnl
+ [efl_doxygen=${withval}
+ AC_CHECK_PROG([efl_have_doxygen],
+ [${efl_doxygen}],
+ [yes],
+ [no])
+ if test "x${efl_have_doxygen}" = "xno" ; then
+ echo "WARNING:"
+ echo "The doxygen program you specified:"
+ echo "$efl_doxygen"
+ echo "was not found. Please check the path and make sure "
+ echo "the program exists and is executable."
+ AC_MSG_WARN([Warning: no doxygen detected. Documentation will not be built])
+ fi
+ ],
+ [AC_CHECK_PROG([efl_have_doxygen],
+ [${efl_doxygen}],
+ [yes],
+ [no])
+ if test "x${efl_have_doxygen}" = "xno" ; then
+ echo "WARNING:"
+ echo "The doxygen program was not found in your execute"
+ echo "You may have doxygen installed somewhere not covered by your path."
+ echo ""
+ echo "If this is the case make sure you have the packages installed, AND"
+ echo "that the doxygen program is in your execute path (see your"
+ echo "shell manual page on setting the \$PATH environment variable), OR"
+ echo "alternatively, specify the program to use with --with-doxygen."
+ AC_MSG_WARN([Warning: no doxygen detected. Documentation will not be built])
+ fi
+ ]
+ )
+fi
+
+dnl
+dnl Substitution
+dnl
+AC_SUBST([efl_doxygen])
+
+if ! test "x${efl_have_doxygen}" = "xyes" ; then
+ efl_enable_doc="no"
+fi
+
+AM_CONDITIONAL(EFL_BUILD_DOC, test "x${efl_enable_doc}" = "xyes")
+
+if test "x${efl_enable_doc}" = "xyes" ; then
+ ifelse([$1], , :, [$1])
+else
+ ifelse([$2], , :, [$2])
+fi
+
+])
+
+dnl End of doxygen.m4
diff --git a/m4/efl_path_max.m4 b/m4/efl_path_max.m4
new file mode 100644
index 0000000..f57bfd2
--- /dev/null
+++ b/m4/efl_path_max.m4
@@ -0,0 +1,36 @@
+dnl Check for PATH_MAX in limits.h, and define a default value if not found
+dnl This is a workaround for systems not providing PATH_MAX, like GNU/Hurd
+
+dnl EFL_CHECK_PATH_MAX([DEFAULT_VALUE_IF_NOT_FOUND])
+dnl
+dnl If PATH_MAX is not defined in <limits.h>, defines it
+dnl to DEFAULT_VALUE_IF_NOT_FOUND if it exists, or fallback
+dnl to using 4096
+
+AC_DEFUN([EFL_CHECK_PATH_MAX],
+[
+
+default_max=m4_default([$1], "4096")
+AC_LANG_PUSH([C])
+
+AC_MSG_CHECKING([for PATH_MAX in limits.h])
+AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+#include <limits.h>
+ ]],
+ [[
+int i = PATH_MAX;
+ ]])],
+ [AC_MSG_RESULT([yes])],
+ [
+ AC_DEFINE_UNQUOTED([PATH_MAX],
+ [${default_max}],
+ [default value since PATH_MAX is not defined])
+ AC_MSG_RESULT([no: using ${default_max}])
+ ])
+
+AC_LANG_POP([C])
+
+])
+dnl end of efl_path_max.m4
diff --git a/m4/efl_tests.m4 b/m4/efl_tests.m4
new file mode 100644
index 0000000..2b6106c
--- /dev/null
+++ b/m4/efl_tests.m4
@@ -0,0 +1,65 @@
+dnl Copyright (C) 2013 Cedric BAIL <cedric.bail at free dot fr>
+dnl That code is public domain and can be freely used or copied.
+
+dnl Macro for checking availability of tests and coverage infra structure
+
+dnl Usage: EFL_TESTS(profile)
+dnl Valid profile are auto, tests, coverage, no
+dnl Call PKG_CHECK_MODULES, AC_CHECK_PROG, define CHECK_CFLAGS/CHECK_LIBS and modify CFLAGS/LIBS
+dnl It define EFL_HAVE_TESTS/EFL_HAVE_LCOV for use in Makefile.am
+dnl It set have_test and have_coverage to yes/no depending if found
+
+AC_DEFUN([EFL_TESTS],
+[
+build_tests=$1
+
+case "${build_tests}" in
+ auto)
+ check_tests="auto"
+ check_coverage="auto"
+ ;;
+ tests)
+ check_tests="yes"
+ check_coverage="auto"
+ ;;
+ coverage)
+ check_tests="yes"
+ check_coverage="yes"
+ ;;
+ no)
+ check_tests="no"
+ check_coverage="no"
+ ;;
+ *)
+ AC_MSG_ERROR([Unknow tests profile])
+esac
+
+have_tests="no"
+if test "x${check_tests}" = "xyes" -o "x${check_tests}" = "xauto"; then
+ PKG_CHECK_MODULES([CHECK], [check >= 0.9.5], [have_tests="yes"], [have_tests="no"])
+ if test "${check_tests}" = "xyes" -a "x${have_tests}" = "xno"; then
+ AC_MSG_ERROR([Impossible to find check package to build tests])
+ fi
+fi
+
+if test "x${have_tests}" = "xyes"; then
+ if test "x${check_coverage}" = "xyes" -o "x${check_coverage}" = "xauto"; then
+ AC_CHECK_PROG([have_lcov], [lcov], [yes], [no])
+ if test "x${have_lcov}" = "xyes" ; then
+ CFLAGS="${CFLAGS} -fprofile-arcs -ftest-coverage"
+ LIBS="${LIBS} -lgcov"
+ fi
+ if test "x${have_lcov}" = "xno" -a "x${check_coverage}" = "xyes"; then
+ AC_MSG_ERROR([Impossible to find lcov package to build with coverage support])
+ fi
+ else
+ have_coverage="no"
+ fi
+else
+ have_coverage="no"
+fi
+
+AM_CONDITIONAL([EFL_HAVE_TESTS], [test "x${have_tests}" = "xyes"])
+AM_CONDITIONAL([EFL_HAVE_LCOV], [test "x${have_lcov}" = "xyes"])
+
+])
diff --git a/packaging/Makefile.am b/packaging/Makefile.am
new file mode 100644
index 0000000..47eb174
--- /dev/null
+++ b/packaging/Makefile.am
@@ -0,0 +1,4 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+SUBDIRS = slackware pkgbuild
+
diff --git a/packaging/pkgbuild/Makefile.am b/packaging/pkgbuild/Makefile.am
new file mode 100644
index 0000000..c1675ad
--- /dev/null
+++ b/packaging/pkgbuild/Makefile.am
@@ -0,0 +1,3 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+EXTRA_DIST = PKGBUILD
diff --git a/packaging/pkgbuild/PKGBUILD b/packaging/pkgbuild/PKGBUILD
new file mode 100644
index 0000000..d273ab0
--- /dev/null
+++ b/packaging/pkgbuild/PKGBUILD
@@ -0,0 +1,60 @@
+# Maintainer: Enlightenment Developers <enlightenment-devel@enlightenment.org>
+pkgname=('eulogium-git' 'eulogium_doc-git')
+pkgver=1.8.99.8967.a1cfce6
+pkgrel=1
+pkgdesc="Enlightenment toolkit eulogium - GIT development snapshot"
+arch=('i686' 'x86_64' 'arm')
+url="http://www.ultimaker.com/eulogium"
+license=('WTFPL')
+makedepends=('doxygen' 'imagemagick' 'git')
+depends=('elementary-git')
+optdepends=('emotion_generic_players' 'evas_generic_loaders')
+options=('!libtool' 'debug')
+provides=('eulogium')
+
+pkgver() {
+ cd "../.."
+
+ for _i in v_maj v_min v_mic; do
+ local v_ver=$v_ver.$(grep -m 1 $_i configure.ac | sed 's/m4//' | grep -o "[[:digit:]]*")
+ done
+
+ v_ver=$(awk -F , -v v_ver=${v_ver#.} '/^AC_INIT/ {gsub(/v_ver/, v_ver); gsub(/[\[\] -]/, ""); print $2}' configure.ac)
+
+ printf "$v_ver.$(git rev-list --count HEAD).$(git rev-parse --short HEAD)"
+}
+
+build() {
+ cd "../.."
+ export CFLAGS="$CFLAGS -fvisibility=hidden -fomit-frame-pointer"
+ [[ -e Makefile ]] && make clean distclean
+ ./configure --prefix=/usr \
+ --disable-static
+ make
+ make doc
+}
+
+package_eulogium-git() {
+ cd "../.."
+ make -j1 DESTDIR="$pkgdir/" install
+ install -Dm644 README "$pkgdir/usr/share/$pkgname/README"
+ install -Dm644 NEWS "$pkgdir/usr/share/$pkgname/NEWS"
+ install -Dm644 ChangeLog "$pkgdir/usr/share/$pkgname/ChangeLog"
+ install -Dm644 AUTHORS "$pkgdir/usr/share/$pkgname/AUTHORS"
+ install -Dm644 COMPLIANCE "$pkgdir/usr/share/$pkgname/COMPLIANCE"
+ install -Dm644 COPYING.images "$pkgdir/usr/share/licenses/$pkgname/COPYING.images"
+ sed -n '1,/details./p' COPYING > "$pkgdir/usr/share/licenses/$pkgname/COPYING"
+ ln -s "../licenses/$pkgname/COPYING" "$pkgdir/usr/share/$pkgname/COPYING"
+ ln -s "../licenses/$pkgname/COPYING.images" "$pkgdir/usr/share/$pkgname/COPYING.images"
+}
+
+package_eulogium_doc-git() {
+ pkgdesc="Documentation for Eulogium"
+ arch=('any')
+ unset depends optdepends
+
+ cd "../.."
+ mkdir -p "$pkgdir/usr/share/doc/$pkgname"
+ cp -a doc/html "$pkgdir/usr/share/doc/$pkgname/html"
+ cp -a doc/latex "$pkgdir/usr/share/doc/$pkgname/latex"
+}
diff --git a/packaging/slackware/Makefile.am b/packaging/slackware/Makefile.am
new file mode 100644
index 0000000..7f7a626
--- /dev/null
+++ b/packaging/slackware/Makefile.am
@@ -0,0 +1,4 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+EXTRA_DIST = doinst.sh eulogium.SlackBuild slack-desc slack-required
+
diff --git a/packaging/slackware/doinst.sh b/packaging/slackware/doinst.sh
new file mode 100644
index 0000000..6dfbe18
--- /dev/null
+++ b/packaging/slackware/doinst.sh
@@ -0,0 +1 @@
+# Stuff done after package installation
diff --git a/packaging/slackware/eulogium.SlackBuild b/packaging/slackware/eulogium.SlackBuild
new file mode 100755
index 0000000..664134e
--- /dev/null
+++ b/packaging/slackware/eulogium.SlackBuild
@@ -0,0 +1,106 @@
+#!/bin/bash
+#
+# Begin eulogium.SlackBuild
+#
+# Copyright (C) 2012-2013 Jerome Pinot <ngc891@gmail.com>
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+NAME=eulogium
+BUILD=${BUILD:-1jp}
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=${TMP}/package-${NAME}
+
+# First check if we are in the right folder
+if [ -f ./${NAME}.SlackBuild ]; then
+ echo 'Found SlackBuild'
+else
+ echo 'Error: You must run this script from the packaging/slackware sub-folder!'
+ exit 1
+fi
+
+# Get the version number from configure.ac
+if [ -f ../../configure.ac ];then
+ VERSION=`grep "AC_INIT" ../../configure.ac | cut -d' ' -f2 | sed -e 's/\[//' -e 's/\],//'`
+else
+ echo "Error: can't find configure.ac!"
+ exit 2
+fi
+
+# if ${ARCH} is unset, we have to guess it with uname
+if [ -z "${ARCH}" ]; then
+ case "$(uname -m)" in
+ i?86) export ARCH=i486 ;;
+ arm*) export ARCH=arm ;;
+ *) export ARCH=$(uname -m) ;;
+ esac
+fi
+
+# Set generic flags for gcc
+SCFLAGS='-O2'
+if [ "${ARCH}" = "i486" ]; then
+ SCFLAGS="${SCFLAGS} -march=i486 -mtune=i686"
+ LIBDIR="/usr/lib"
+elif [ "${ARCH}" = "x86_64" ]; then
+ SCFLAGS="${SCFLAGS} -fPIC"
+ LIBDIR="/usr/lib64"
+elif [ "${ARCH}" = "arm" ]; then
+ SCFLAGS="${SCFLAGS} -march=armv4 -mtune=xscale"
+ LIBDIR="/usr/lib"
+fi
+
+# Creating directories
+if [ ! -d ${TMP} ]; then
+ mkdir -p ${TMP}
+fi
+rm -rf ${PKG}
+mkdir -p ${PKG}
+
+# Configuring
+cd ../..
+CFLAGS="${SCFLAGS}" \
+ ./configure \
+ --prefix=/usr \
+ --libdir=${LIBDIR} \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/${NAME}-${VERSION}
+
+# Building
+make
+
+# Installing
+make DESTDIR=${PKG} install
+
+# Cleaning
+cd ${PKG}
+gzip -9 usr/man/man1/${NAME}.1
+
+find ${PKG} | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+find ${PKG} | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Building the package
+mkdir install
+install -m644 ${CWD}/doinst.sh install/
+install -m644 ${CWD}/slack-desc install/
+install -m644 ${CWD}/slack-required install/
+makepkg -l y -c n ${CWD}/${NAME}-${VERSION}-${ARCH}-${BUILD}.txz
+rm -rf ${PKG}
+
+# End eulogium.SlackBuild
diff --git a/packaging/slackware/slack-desc b/packaging/slackware/slack-desc
new file mode 100644
index 0000000..791c05a
--- /dev/null
+++ b/packaging/slackware/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+eulogium: eulogium
+eulogium:
+eulogium: Eulogium is an example of application written using the Enlightenment
+eulogium: Foundation Libraries.
+eulogium:
+eulogium: It requires elementary.
+eulogium:
+eulogium: eulogium was written by oliver <o.schinagl@ultimaker.com>
+eulogium: website: <http://www.ultimaker.com/eulogium/>
+eulogium:
+eulogium:
diff --git a/packaging/slackware/slack-required b/packaging/slackware/slack-required
new file mode 100644
index 0000000..29e9f10
--- /dev/null
+++ b/packaging/slackware/slack-required
@@ -0,0 +1,5 @@
+eina >= 1.8.0
+evas >= 1.8.0
+ecore >= 1.8.0
+edje >= 1.8.0
+elementary >= 1.8.0
diff --git a/po/Makevars b/po/Makevars
new file mode 100644
index 0000000..4dd2a0b
--- /dev/null
+++ b/po/Makevars
@@ -0,0 +1,41 @@
+# Makefile variables for PO directory in any package using GNU gettext.
+
+# Usually the message domain is the same as the package name.
+DOMAIN = $(PACKAGE)
+
+# These two variables depend on the location of this directory.
+subdir = po
+top_builddir = ..
+
+# These options get passed to xgettext.
+XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ --from-code=utf-8
+
+# This is the copyright holder that gets inserted into the header of the
+# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
+# package. (Note that the msgstr strings, extracted from the package's
+# sources, belong to the copyright holder of the package.) Translators are
+# expected to transfer the copyright for their translations to this person
+# or entity, or to disclaim their copyright. The empty string stands for
+# the public domain; in this case the translators are expected to disclaim
+# their copyright.
+COPYRIGHT_HOLDER =
+
+# This is the email address or URL to which the translators shall report
+# bugs in the untranslated strings:
+# - Strings which are not entire sentences, see the maintainer guidelines
+# in the GNU gettext documentation, section 'Preparing Strings'.
+# - Strings which use unclear terms or require additional context to be
+# understood.
+# - Strings which make invalid assumptions about notation of date, time or
+# money.
+# - Pluralisation problems.
+# - Incorrect English spelling.
+# - Incorrect formatting.
+# It can be your email address, or a mailing list address where translators
+# can write to without being subscribed, or the URL of a web page through
+# which the translators can contact you.
+MSGID_BUGS_ADDRESS =
+
+# This is the list of locale categories, beyond LC_MESSAGES, for which the
+# message catalogs shall be used. It is usually empty.
+EXTRA_LOCALE_CATEGORIES =
diff --git a/po/POTFILES.in b/po/POTFILES.in
new file mode 100644
index 0000000..ff2ad76
--- /dev/null
+++ b/po/POTFILES.in
@@ -0,0 +1,2 @@
+src/bin/eulogium_main.c
+src/bin/eulogium_private.h
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644
index 0000000..15871c9
--- /dev/null
+++ b/src/Makefile.am
@@ -0,0 +1,4 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+SUBDIRS = lib bin tests
+
diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am
new file mode 100644
index 0000000..589f68d
--- /dev/null
+++ b/src/bin/Makefile.am
@@ -0,0 +1,19 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+bin_PROGRAMS = eulogium
+
+AM_CPPFLAGS = -DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
+-I$(top_builddir)/src/bin/ \
+-I$(top_srcdir)/src/bin/ \
+-I$(top_builddir)/src/lib/ \
+-I$(top_srcdir)/src/lib/ \
+@EFL_CFLAGS@
+
+eulogium_SOURCES = eulogium_main.c
+eulogium_LDADD = @EFL_LIBS@ $(top_builddir)/src/lib/libeulogium.la
+
+localedir = $(datadir)/locale
+DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@
+
+EXTRA_DIST = eulogium_private.h
+
diff --git a/src/bin/eulogium_main.c b/src/bin/eulogium_main.c
new file mode 100644
index 0000000..b8a83e1
--- /dev/null
+++ b/src/bin/eulogium_main.c
@@ -0,0 +1,118 @@
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+/* NOTE: Respecting header order is important for portability.
+ * Always put system first, then EFL, then your public header,
+ * and finally your private one. */
+
+#include <Ecore_Getopt.h>
+#include <Elementary.h>
+
+#include "gettext.h"
+
+#include "Eulogium.h"
+
+#include "eulogium_private.h"
+
+#define COPYRIGHT "Copyright © 2013 oliver <o.schinagl@ultimaker.com> and various contributors (see AUTHORS)."
+
+static void
+_eulogium_win_del(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+ elm_exit();
+}
+
+static Evas_Object *
+eulogium_win_setup(void)
+{
+ Evas_Object *win;
+ Evas_Object *label;
+
+ win = elm_win_util_standard_add("main", "Eulogium");
+ if (!win) return NULL;
+
+ elm_win_focus_highlight_enabled_set(win, EINA_TRUE);
+ evas_object_smart_callback_add(win, "delete,request", _eulogium_win_del, NULL);
+
+ label = elm_label_add(win);
+ elm_object_text_set(label, " Hello World !");
+ evas_object_size_hint_weight_set(label, 0.0, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(label, 0.0, EVAS_HINT_FILL);
+ evas_object_show(label);
+
+ elm_win_resize_object_add(win, label);
+
+ evas_object_show(win);
+
+ return win;
+}
+
+static const Ecore_Getopt optdesc = {
+ "eulogium",
+ "%prog [options]",
+ PACKAGE_VERSION,
+ COPYRIGHT,
+ "BSD with advertisement clause",
+ "An EFL eulogium program",
+ 0,
+ {
+ ECORE_GETOPT_LICENSE('L', "license"),
+ ECORE_GETOPT_COPYRIGHT('C', "copyright"),
+ ECORE_GETOPT_VERSION('V', "version"),
+ ECORE_GETOPT_HELP('h', "help"),
+ ECORE_GETOPT_SENTINEL
+ }
+};
+
+EAPI_MAIN int
+elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
+{
+ Evas_Object *win;
+ int args;
+ Eina_Bool quit_option = EINA_FALSE;
+
+ Ecore_Getopt_Value values[] = {
+ ECORE_GETOPT_VALUE_BOOL(quit_option),
+ ECORE_GETOPT_VALUE_BOOL(quit_option),
+ ECORE_GETOPT_VALUE_BOOL(quit_option),
+ ECORE_GETOPT_VALUE_BOOL(quit_option),
+ ECORE_GETOPT_VALUE_NONE
+ };
+
+#if ENABLE_NLS
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ bind_textdomain_codeset(PACKAGE, "UTF-8");
+ textdomain(PACKAGE);
+#endif
+
+ eulogium_init();
+
+ args = ecore_getopt_parse(&optdesc, values, argc, argv);
+ if (args < 0)
+ {
+ EINA_LOG_CRIT("Could not parse arguments.");
+ goto end;
+ }
+ else if (quit_option)
+ {
+ goto end;
+ }
+
+ elm_app_info_set(elm_main, "eulogium", "images/eulogium.png");
+
+ if (!(win = eulogium_win_setup()))
+ goto end;
+
+ eulogium_library_call();
+
+ elm_run();
+
+ end:
+ eulogium_shutdown();
+ elm_shutdown();
+
+ return 0;
+}
+ELM_MAIN()
diff --git a/src/bin/eulogium_private.h b/src/bin/eulogium_private.h
new file mode 100644
index 0000000..aa968c6
--- /dev/null
+++ b/src/bin/eulogium_private.h
@@ -0,0 +1,6 @@
+#ifndef EULOGIUM_PRIVATE_H_
+# define EULOGIUM_PRIVATE_H_
+
+// FIXME: put some private stuff related to your binary
+
+#endif
diff --git a/src/bin/gettext.h b/src/bin/gettext.h
new file mode 100644
index 0000000..e76b592
--- /dev/null
+++ b/src/bin/gettext.h
@@ -0,0 +1,280 @@
+/* Convenience header for conditional use of GNU <libintl.h>.
+ Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009 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 3, 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
+ Library 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+ USA. */
+
+#ifndef _LIBGETTEXT_H
+#define _LIBGETTEXT_H 1
+
+/* NLS can be disabled through the configure --disable-nls option. */
+#if ENABLE_NLS
+
+/* Get declarations of GNU message catalog functions. */
+# include <libintl.h>
+
+/* You can set the DEFAULT_TEXT_DOMAIN macro to specify the domain used by
+ the gettext() and ngettext() macros. This is an alternative to calling
+ textdomain(), and is useful for libraries. */
+# ifdef DEFAULT_TEXT_DOMAIN
+# undef gettext
+# define gettext(Msgid) \
+ dgettext (DEFAULT_TEXT_DOMAIN, Msgid)
+# undef ngettext
+# define ngettext(Msgid1, Msgid2, N) \
+ dngettext (DEFAULT_TEXT_DOMAIN, Msgid1, Msgid2, N)
+# endif
+
+#else
+
+/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which
+ chokes if dcgettext is defined as a macro. So include it now, to make
+ later inclusions of <locale.h> a NOP. We don't include <libintl.h>
+ as well because people using "gettext.h" will not include <libintl.h>,
+ and also including <libintl.h> would fail on SunOS 4, whereas <locale.h>
+ is OK. */
+#if defined(__sun)
+# include <locale.h>
+#endif
+
+/* Many header files from the libstdc++ coming with g++ 3.3 or newer include
+ <libintl.h>, which chokes if dcgettext is defined as a macro. So include
+ it now, to make later inclusions of <libintl.h> a NOP. */
+#if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3)
+# include <cstdlib>
+# if (__GLIBC__ >= 2) || _GLIBCXX_HAVE_LIBINTL_H
+# include <libintl.h>
+# endif
+#endif
+
+/* Disabled NLS.
+ The casts to 'const char *' serve the purpose of producing warnings
+ for invalid uses of the value returned from these functions.
+ On pre-ANSI systems without 'const', the config.h file is supposed to
+ contain "#define const". */
+# undef gettext
+# define gettext(Msgid) ((const char *) (Msgid))
+# undef dgettext
+# define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid))
+# undef dcgettext
+# define dcgettext(Domainname, Msgid, Category) \
+ ((void) (Category), dgettext (Domainname, Msgid))
+# undef ngettext
+# define ngettext(Msgid1, Msgid2, N) \
+ ((N) == 1 \
+ ? ((void) (Msgid2), (const char *) (Msgid1)) \
+ : ((void) (Msgid1), (const char *) (Msgid2)))
+# undef dngettext
+# define dngettext(Domainname, Msgid1, Msgid2, N) \
+ ((void) (Domainname), ngettext (Msgid1, Msgid2, N))
+# undef dcngettext
+# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
+ ((void) (Category), dngettext(Domainname, Msgid1, Msgid2, N))
+# undef textdomain
+# define textdomain(Domainname) ((const char *) (Domainname))
+# undef bindtextdomain
+# define bindtextdomain(Domainname, Dirname) \
+ ((void) (Domainname), (const char *) (Dirname))
+# undef bind_textdomain_codeset
+# define bind_textdomain_codeset(Domainname, Codeset) \
+ ((void) (Domainname), (const char *) (Codeset))
+
+#endif
+
+/* A pseudo function call that serves as a marker for the automated
+ extraction of messages, but does not call gettext(). The run-time
+ translation is done at a different place in the code.
+ The argument, String, should be a literal string. Concatenated strings
+ and other string expressions won't work.
+ The macro's expansion is not parenthesized, so that it is suitable as
+ initializer for static 'char[]' or 'const char[]' variables. */
+#define gettext_noop(String) String
+
+/* The separator between msgctxt and msgid in a .mo file. */
+#define GETTEXT_CONTEXT_GLUE "\004"
+
+/* Pseudo function calls, taking a MSGCTXT and a MSGID instead of just a
+ MSGID. MSGCTXT and MSGID must be string literals. MSGCTXT should be
+ short and rarely need to change.
+ The letter 'p' stands for 'particular' or 'special'. */
+#ifdef DEFAULT_TEXT_DOMAIN
+# define pgettext(Msgctxt, Msgid) \
+ pgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
+#else
+# define pgettext(Msgctxt, Msgid) \
+ pgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
+#endif
+#define dpgettext(Domainname, Msgctxt, Msgid) \
+ pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
+#define dcpgettext(Domainname, Msgctxt, Msgid, Category) \
+ pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, Category)
+#ifdef DEFAULT_TEXT_DOMAIN
+# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \
+ npgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
+#else
+# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \
+ npgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
+#endif
+#define dnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N) \
+ npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
+#define dcnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N, Category) \
+ npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, Category)
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+pgettext_aux (const char *domain,
+ const char *msg_ctxt_id, const char *msgid,
+ int category)
+{
+ const char *translation = dcgettext (domain, msg_ctxt_id, category);
+ if (translation == msg_ctxt_id)
+ return msgid;
+ else
+ return translation;
+}
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+npgettext_aux (const char *domain,
+ const char *msg_ctxt_id, const char *msgid,
+ const char *msgid_plural, unsigned long int n,
+ int category)
+{
+ const char *translation =
+ dcngettext (domain, msg_ctxt_id, msgid_plural, n, category);
+ if (translation == msg_ctxt_id || translation == msgid_plural)
+ return (n == 1 ? msgid : msgid_plural);
+ else
+ return translation;
+}
+
+/* The same thing extended for non-constant arguments. Here MSGCTXT and MSGID
+ can be arbitrary expressions. But for string literals these macros are
+ less efficient than those above. */
+
+#include <string.h>
+
+#define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS \
+ (((__GNUC__ >= 3 || __GNUG__ >= 2) && !__STRICT_ANSI__) \
+ /* || __STDC_VERSION__ >= 199901L */ )
+
+#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+#include <stdlib.h>
+#endif
+
+#define pgettext_expr(Msgctxt, Msgid) \
+ dcpgettext_expr (NULL, Msgctxt, Msgid, LC_MESSAGES)
+#define dpgettext_expr(Domainname, Msgctxt, Msgid) \
+ dcpgettext_expr (Domainname, Msgctxt, Msgid, LC_MESSAGES)
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+dcpgettext_expr (const char *domain,
+ const char *msgctxt, const char *msgid,
+ int category)
+{
+ size_t msgctxt_len = strlen (msgctxt) + 1;
+ size_t msgid_len = strlen (msgid) + 1;
+ const char *translation;
+#if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+ char msg_ctxt_id[msgctxt_len + msgid_len];
+#else
+ char buf[1024];
+ char *msg_ctxt_id =
+ (msgctxt_len + msgid_len <= sizeof (buf)
+ ? buf
+ : (char *) malloc (msgctxt_len + msgid_len));
+ if (msg_ctxt_id != NULL)
+#endif
+ {
+ memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1);
+ msg_ctxt_id[msgctxt_len - 1] = '\004';
+ memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len);
+ translation = dcgettext (domain, msg_ctxt_id, category);
+#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+ if (msg_ctxt_id != buf)
+ free (msg_ctxt_id);
+#endif
+ if (translation != msg_ctxt_id)
+ return translation;
+ }
+ return msgid;
+}
+
+#define npgettext_expr(Msgctxt, Msgid, MsgidPlural, N) \
+ dcnpgettext_expr (NULL, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES)
+#define dnpgettext_expr(Domainname, Msgctxt, Msgid, MsgidPlural, N) \
+ dcnpgettext_expr (Domainname, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES)
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+dcnpgettext_expr (const char *domain,
+ const char *msgctxt, const char *msgid,
+ const char *msgid_plural, unsigned long int n,
+ int category)
+{
+ size_t msgctxt_len = strlen (msgctxt) + 1;
+ size_t msgid_len = strlen (msgid) + 1;
+ const char *translation;
+#if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+ char msg_ctxt_id[msgctxt_len + msgid_len];
+#else
+ char buf[1024];
+ char *msg_ctxt_id =
+ (msgctxt_len + msgid_len <= sizeof (buf)
+ ? buf
+ : (char *) malloc (msgctxt_len + msgid_len));
+ if (msg_ctxt_id != NULL)
+#endif
+ {
+ memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1);
+ msg_ctxt_id[msgctxt_len - 1] = '\004';
+ memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len);
+ translation = dcngettext (domain, msg_ctxt_id, msgid_plural, n, category);
+#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+ if (msg_ctxt_id != buf)
+ free (msg_ctxt_id);
+#endif
+ if (!(translation == msg_ctxt_id || translation == msgid_plural))
+ return translation;
+ }
+ return (n == 1 ? msgid : msgid_plural);
+}
+
+#endif /* _LIBGETTEXT_H */
diff --git a/src/lib/Eulogium.h b/src/lib/Eulogium.h
new file mode 100644
index 0000000..7ef7c0d
--- /dev/null
+++ b/src/lib/Eulogium.h
@@ -0,0 +1,111 @@
+#ifndef EULOGIUM_H_
+# define EULOGIUM_H_
+
+#include <Elementary.h>
+
+#ifdef EAPI
+# undef EAPI
+#endif
+
+#ifdef _WIN32
+# ifdef EFL_EULOGIUM_BUILD
+# ifdef DLL_EXPORT
+# define EAPI __declspec(dllexport)
+# else
+# define EAPI
+# endif /* ! DLL_EXPORT */
+# else
+# define EAPI __declspec(dllimport)
+# endif /* ! EFL_EULOGIUM_BUILD */
+#else
+# ifdef __GNUC__
+# if __GNUC__ >= 4
+# define EAPI __attribute__ ((visibility("default")))
+# else
+# define EAPI
+# endif
+# else
+# define EAPI
+# endif
+#endif /* ! _WIN32 */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @file
+ * @brief These routines are used for Eulogium library interaction.
+ */
+
+/**
+ * @brief Init / shutdown functions.
+ * @defgroup Init Init / Shutdown
+ *
+ * @{
+ *
+ * Functions of obligatory usage, handling proper initialization
+ * and shutdown routines.
+ *
+ * Before the usage of any other function, Eulogium should be properly
+ * initialized with @ref eulogium_init() and the last call to Eulogium's
+ * functions should be @ref eulogium_shutdown(), so everything will
+ * be correctly freed.
+ *
+ * Eulogium logs everything with Eina Log, using the "eulogium" log domain.
+ *
+ */
+
+/**
+ * Initialize Eulogium.
+ *
+ * Initializes Eulogium, its dependencies and modules. Should be the first
+ * function of Eulogium to be called.
+ *
+ * @return The init counter value.
+ *
+ * @see eulogium_shutdown().
+ *
+ * @ingroup Init
+ */
+EAPI int eulogium_init(void);
+
+/**
+ * Shutdown Eulogium
+ *
+ * Shutdown Eulogium. If init count reaches 0, all the internal structures will
+ * be freed. Any Eulogium library call after this point will leads to an error.
+ *
+ * @return Eulogium's init counter value.
+ *
+ * @see eulogium_init().
+ *
+ * @ingroup Init
+ */
+EAPI int eulogium_shutdown(void);
+
+/**
+ * @}
+ */
+
+/**
+ * @brief Main group API that wont do anything
+ * @defgroup Main Main
+ *
+ * @{
+ *
+ * @brief A function that doesn't do any good nor any bad
+ *
+ * @ingroup Main
+ */
+EAPI void eulogium_library_call(void);
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* EULOGIUM_H_ */
diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am
new file mode 100644
index 0000000..56d5c22
--- /dev/null
+++ b/src/lib/Makefile.am
@@ -0,0 +1,18 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I$(top_srcdir)/src/lib \
+-I$(top_builddir)/src/lib \
+-DPACKAGE_LIB_DIR=\"$(libdir)\" \
+-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
+@EFL_CFLAGS@ \
+-DEFL_EFL_BUILD
+
+lib_LTLIBRARIES = libeulogium.la
+
+includes_HEADERS = Eulogium.h
+includesdir = $(includedir)/eulogium-@VMAJ@
+
+libeulogium_la_SOURCES = eulogium.c
+libeulogium_la_LIBADD = @EFL_LIBS@ -lm
+libeulogium_la_LDFLAGS = @EFL_LTLIBRARY_FLAGS@
diff --git a/src/lib/eulogium.c b/src/lib/eulogium.c
new file mode 100644
index 0000000..8e19356
--- /dev/null
+++ b/src/lib/eulogium.c
@@ -0,0 +1,64 @@
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include "Eulogium.h"
+
+#include "eulogium_private.h"
+
+static int _eulogium_init = 0;
+int _eulogium_lib_log_dom = -1;
+
+EAPI int
+eulogium_init(void)
+{
+ _eulogium_init++;
+ if (_eulogium_init > 1) return _eulogium_init;
+
+ eina_init();
+
+ _eulogium_lib_log_dom = eina_log_domain_register("eulogium", EINA_COLOR_CYAN);
+ if (_eulogium_lib_log_dom < 0)
+ {
+ EINA_LOG_ERR("Eulogium can not create its log domain.");
+ goto shutdown_eina;
+ }
+
+ // Put here your initialization logic of your library
+
+ eina_log_timing(_eulogium_lib_log_dom, EINA_LOG_STATE_STOP, EINA_LOG_STATE_INIT);
+
+ return _eulogium_init;
+
+ shutdown_eina:
+ eina_shutdown();
+ _eulogium_init--;
+
+ return _eulogium_init;
+}
+
+EAPI int
+eulogium_shutdown(void)
+{
+ _eulogium_init--;
+ if (_eulogium_init != 0) return _eulogium_init;
+
+ eina_log_timing(_eulogium_lib_log_dom,
+ EINA_LOG_STATE_START,
+ EINA_LOG_STATE_SHUTDOWN);
+
+ // Put here your shutdown logic
+
+ eina_log_domain_unregister(_eulogium_lib_log_dom);
+ _eulogium_lib_log_dom = -1;
+
+ eina_shutdown();
+
+ return _eulogium_init;
+}
+
+EAPI void
+eulogium_library_call(void)
+{
+ INF("Not really doing anything useful.");
+}
diff --git a/src/lib/eulogium_private.h b/src/lib/eulogium_private.h
new file mode 100644
index 0000000..ff03439
--- /dev/null
+++ b/src/lib/eulogium_private.h
@@ -0,0 +1,27 @@
+#ifndef EULOGIUM_PRIVATE_H
+# define EULOGIUM_PRIVATE_H
+
+extern int _eulogium_lib_log_dom;
+
+#ifdef ERR
+# undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(_eulogium_lib_log_dom, __VA_ARGS__)
+#ifdef INF
+# undef INF
+#endif
+#define INF(...) EINA_LOG_DOM_INFO(_eulogium_lib_log_dom, __VA_ARGS__)
+#ifdef WRN
+# undef WRN
+#endif
+#define WRN(...) EINA_LOG_DOM_WARN(_eulogium_lib_log_dom, __VA_ARGS__)
+#ifdef CRIT
+# undef CRIT
+#endif
+#define CRIT(...) EINA_LOG_DOM_CRIT(_eulogium_lib_log_dom, __VA_ARGS__)
+#ifdef DBG
+# undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_eulogium_lib_log_dom, __VA_ARGS__)
+
+#endif
diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am
new file mode 100644
index 0000000..8ae8c20
--- /dev/null
+++ b/src/tests/Makefile.am
@@ -0,0 +1,17 @@
+
+if EFL_HAVE_TESTS
+
+check_PROGRAMS = eulogium_tests
+
+eulogium_tests_SOURCES = test_eulogium.c
+eulogium_tests_CPPFLAGS = -I$(top_builddir)/src/lib/ \
+-DPACKAGE_TESTS_DIR=\"$(top_srcdir)/src/tests/\" \
+-DPACKAGE_BUILD_DIR=\"`pwd`/$(top_builddir)/src/tests/\" \
+@EFL_CFLAGS@ \
+@CHECK_CFLAGS@
+eulogium_tests_LDADD = @CHECK_LIBS@ $(top_builddir)/src/lib/libeulogium.la
+eulogium_tests_DEPENDENCIES = $(top_builddir)/src/lib/libeulogium.la
+
+endif
+
+EXTRA_DIST = test_eulogium.c
diff --git a/src/tests/test_eulogium.c b/src/tests/test_eulogium.c
new file mode 100644
index 0000000..2fce00c
--- /dev/null
+++ b/src/tests/test_eulogium.c
@@ -0,0 +1,124 @@
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <Ecore_Getopt.h>
+#include <check.h>
+
+#include "Eulogium.h"
+
+#define COPYRIGHT "Copyright © 2013 oliver <o.schinagl@ultimaker.com> and various contributors (see AUTHORS)."
+
+static void eulogium_test_basic(TCase *tc);
+
+static const struct {
+ const char *name;
+ void (*build)(TCase *tc);
+} tests[] = {
+ { "basic", eulogium_test_basic }
+};
+
+START_TEST(eulogium_initialization)
+{
+ fail_if(eulogium_init() != 1);
+
+ eulogium_library_call();
+
+ fail_if(eulogium_shutdown() != 0);
+}
+END_TEST
+
+static void
+eulogium_test_basic(TCase *tc)
+{
+ tcase_add_test(tc, eulogium_initialization);
+}
+
+static const Ecore_Getopt optdesc = {
+ "eulogium",
+ "%prog [options]",
+ PACKAGE_VERSION,
+ COPYRIGHT,
+ "BSD with advertisement clause",
+ "An EFL eulogium program",
+ 0,
+ {
+ ECORE_GETOPT_STORE_TRUE('l', "list", "list available tests"),
+ ECORE_GETOPT_STORE_STR('t', "test", "test to run"),
+ ECORE_GETOPT_LICENSE('L', "license"),
+ ECORE_GETOPT_COPYRIGHT('C', "copyright"),
+ ECORE_GETOPT_VERSION('V', "version"),
+ ECORE_GETOPT_HELP('h', "help"),
+ ECORE_GETOPT_SENTINEL
+ }
+};
+
+int
+main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
+{
+ Suite *s;
+ SRunner *sr;
+ TCase *tc = NULL;
+ char *test = NULL;
+ unsigned int i;
+ int failed_count = -1;
+ int args;
+ Eina_Bool quit_option = EINA_FALSE;
+ Eina_Bool list_option = EINA_FALSE;
+
+ Ecore_Getopt_Value values[] = {
+ ECORE_GETOPT_VALUE_BOOL(list_option),
+ ECORE_GETOPT_VALUE_STR(test),
+ ECORE_GETOPT_VALUE_BOOL(quit_option),
+ ECORE_GETOPT_VALUE_BOOL(quit_option),
+ ECORE_GETOPT_VALUE_BOOL(quit_option),
+ ECORE_GETOPT_VALUE_BOOL(quit_option),
+ ECORE_GETOPT_VALUE_NONE
+ };
+
+ eina_init();
+
+ args = ecore_getopt_parse(&optdesc, values, argc, argv);
+ if (args < 0)
+ {
+ EINA_LOG_CRIT("Could not parse arguments.");
+ goto end;
+ }
+ else if (quit_option)
+ {
+ goto end;
+ }
+ else if (list_option)
+ {
+ fprintf(stdout, "Available tests :\n");
+ for (i = 0; i < sizeof (tests) / sizeof (tests[0]); i++)
+ fprintf(stdout, "\t%s\n", tests[i].name);
+ goto end;
+ }
+
+ s = suite_create("Eulogium");
+
+ for (i = 0; i < sizeof (tests) / sizeof (tests[0]); i++)
+ {
+ if (test && strcmp(tests[i].name, test))
+ continue ;
+
+ tc = tcase_create(tests[i].name);
+ tcase_set_timeout(tc, 0);
+
+ tests[i].build(tc);
+ suite_add_tcase(s, tc);
+ }
+
+ sr = srunner_create(s);
+ srunner_set_xml(sr, PACKAGE_BUILD_DIR "/check-results.xml");
+
+ srunner_run_all(sr, CK_ENV);
+ failed_count = srunner_ntests_failed(sr);
+ srunner_free(sr);
+
+ end:
+ eina_shutdown();
+
+ return (failed_count == 0) ? 0 : 255;
+}