Commit Graph

14 Commits

Author SHA1 Message Date
Mike Blumenkrantz 54907b1995 build: disable eolian implicit rules in subdir builds
the ../ rules override the global rules to block actions which would
force eolian to generate files which should be managed by a higher
level makefile

this cuts a substantial amount of time out of distcheck from example
builds

Differential Revision: https://phab.enlightenment.org/D6660
2018-07-30 18:16:20 +02:00
Mike Blumenkrantz d17bbc2a78 build: use $(@D) for eolian directory name
this is cosmetic; $(@D) is the standard automatic variable set to the directory
part of the target

https://www.gnu.org/software/make/manual/html_node/Automatic-Variables.html

Differential Revision: https://phab.enlightenment.org/D6659
2018-07-30 18:16:20 +02:00
Mike Blumenkrantz c87dd2214c build: use $() for automake variables, not ${}
this is not a functional change, just increasing consistency
https://www.gnu.org/software/make/manual/html_node/Reference.html#Reference

Differential Revision: https://phab.enlightenment.org/D6634
2018-07-30 17:40:57 +02:00
Stefan Schmidt 0a03e63350 build: keep our CLEANFILES tidy to avoid argument list too long during clean
We have been putting the generated eo files and BUILT_SOURCES into CLEANFILES
several times. So far this have not been a real problem but with the elm merge
and more and more eo files showing up this did explode recently.

During make distcheck a lot of files kept being around and make complained about
them. It took some digging to find the arguments list to long error. If you want
details on this great limitation have a look here:
http://www.linuxjournal.com/article/6060

In our case we have been lucky enough that we just appened many files over and
over again. Not doing that solves the issue for now. My testing showed no
problems but if I missed something let me know.

Fixes T3386
2016-03-31 16:29:32 +02:00
Daniel Kolesa 97443242c2 autotools: provide smaller EOLIAN_FLAGS for customization 2015-06-01 17:35:39 +01:00
Daniel Kolesa ce65929422 autotools: remove EOLIAN_FLAGS
We don't need to specify each dir separately as Eolian
has been searching recursively for quite a while.
2015-06-01 17:28:45 +01:00
Daniel Kolesa b8d1447e4d autotools: fix non-verbose build output
D2431 added some mkdirs that were printed even when not in verbose mode.
This commit fixes that; those mkdirs will stay hidden (unless verbose).

Bad cedric! @fix
2015-04-28 13:30:59 +01:00
Guilherme Lepsch e8525256e7 eolian: fix build of generated Eolian files.
Summary: Fix build with properly creation of output dir for eolian_gen on out of source build when passing the option --disable-dependency-tracking.

Reviewers: cedric

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2431

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-04-28 11:37:11 +02:00
Vitor Sousa ce36f0be93 eolain_cxx: Fix C++ support for new Eolian features
Added optional constructor methods for C++ Eolian wrappers.
Changed the interface of wrappers' main constructors.
If there are optional constructor methods they should be passed as variadic
template argument at the end of the constructor.
To support variadic template arguments, the optional "parent" parameter is
now the first parameter and there is another constructor without the
"parent" parameter.

Checking for @optinal and @nullable attributes instead of @nonull.
Now @nonull is the default, and eina::optional is only used when @optional
or @nullable attribute is specified.

The names of constructor methods no longer have the class name prefixed.

Added unit tests for checking the binding of optional constructors.
Added new .eo file to be used in the test.

Changed the generated documentation of constructors.

Changed the efl::eo::inherit accordingly, to address these new features.
Now the constructor methods should be explicit called in the
efl::eo::inherit constructor, which will receive them via variadic
template arguments.

Added another constructor to efl::eo::inherit for passing the parent
object.

Updated some tests and examples to follow the new interface.

Removed some code that is no longer necessary.

Also, fix Eolian C++ support for constructing properties. fix
assertion when parsing constructing properties.

Now if a property is a constructing property eolian_cxx will generate a
constructor method that have the property name (without the "_set" suffix).
2015-04-14 01:06:57 -03:00
Vitor Sousa d530389898 eolian_cxx: Add protected methods and events to C++ wrappers and fixes
Using eina::string_view in eolian generated interfaces (instead of
std::string) to allow lightweight passing of both C strings and C++
std::string.

Also, No longer using eina::optional in generated headers for types
that already implements the concept of null state (like Eo wrappers
and eina_accessor).

Also fix allocating callback objects require by class methods
(i.e. static) in static vectors so the memory will be freed when the
programs exit.

Added a new test case for testing callbacks on class methods.

Moved method definitions and supplementary code from generated C++
wrappers to auxiliary header file (.eo.impl.hh) generated together
with the main ".eo.hh" file. Updated Makefiles to list such files in
the compilation and cleanup processes. Updated .gitignore to include
these new generated files.

Made general adjustments on the documentation of generated C++ wrappers

Added "PREDEFINED" preprocessor macro definition in the Doxyfile.in in
order to make some adjustments for better documentation in the C++
generated headers.  Excluding generation of documentation for classes
in the "eo_cxx" namespace (the namespace for "abstract" eolian C++
wrappers).  Now generating the documentation for the events too.
Hiding some auxiliary code from being documented. Some aesthetic
adjustments for generated white space. Generate documentation for the
main constructor of C++ wrappers and added auxiliary grammars to list
parameters names.
2015-04-14 01:06:57 -03:00
Daniel Kolesa c05493b480 eolian-cxx: Added namespaces and more (see below)
Implemented namespaces
Added eolian_wrappers.hh with C++ code wrapping Eolain API
Changed eolian_cxx program options. Now they're eolian_gen's
Added functions to safe_str.hh (safe_lower, safe_upper, normalize_spaces, path_base)
Added a mocked version of type_lookup.hh in advance. The full
version will come as soon as complex-types are added.

Made apply again by Daniel Kolesa, original implementation by Savio Sena.
2014-06-30 19:35:06 +01:00
Guillaume Friloux 9bee17a0aa Dont install c++ headers of bindings when --disable-c++11 is used. 2014-06-02 15:54:06 +02:00
Lucas De Marchi 39e5919dae eolian_cxx: Fix out of tree build
Passing a relative path prepending "./" is generally the wrong thing to
do in autotools because the auto vars may be absolute. Fix build:

...
ERR<17525>:eo_toknz lib/eolian/eo_lexer.rl:1325 eo_tokenizer_database_fill() unable to read in .//home/lucas/p/e//efl/src/lib/ecore/ecore_poll.eo
Couldn't load input file: .//home/lucas/p/e//efl/src/lib/ecore/ecore_poll.eo
2014-05-07 06:49:46 -03:00
Savio Sena 46b6e8a563 eolian_cxx: initial version of the EFL C++ Bindings Generator.
Summary:
This patch adds 'eolian_cxx' -- a C++ bindings generator --
to the EFL tree. Eolian Cxx uses Eolian API to read .eo files and generate
.eo.hh. It relies/depends on Eo Cxx and Eina Cxx (both non-generated
bindings).

src/bin/eolian_cxx: The eolian_cxx program.
src/lib/eolian_cxx: A header-only library that implements the C++ code
generation that binds the .eo classes.

=Examples=

src/examples/eolian_cxx/eolian_cxx_simple_01.cc: The simplest example,
it just uses some "dummy" generated C++ classes.

src/examples/eolian_cxx/eolian_cxx_inherit_01.cc: Illustrates how
pure C++ classes inherit from .eo generated classes.

src/examples/evas/evas_cxx_rectangle.cc: More realistic example using
the generated bindings Evas Cxx. Still a bit shallow because we don't
have full fledged .eo descriptions yet, but will be improved.

=Important=

The generated code is not supported and not a stable API/ABI. It is
here to gather people interest and get review before we set things in
stone for release 1.11.

@feature

Reviewers: cedric, smohanty, raster, stefan_schmidt

CC: felipealmeida, JackDanielZ, cedric, stefan

Differential Revision: https://phab.enlightenment.org/D805

Signed-off-by: Cedric Bail <cedric.bail@free.fr>
2014-05-03 00:56:32 +02:00