Commit Graph

18 Commits

Author SHA1 Message Date
Felipe Magno de Almeida ccc1849263 eina: Rename EAPI macro to EINA_API in Eina library
Summary:
Patch from a series of patches to rename EAPI symbols to specific
library DSOs.

EAPI was designed to be able to pass
`__attribute__ ((visibility ("default")))` for symbols with
GCC, which would mean that even if -fvisibility=hidden was used
when compiling the library, the needed symbols would get exported.

MSVC __almost__ works like GCC (or mingw) in which you can
declare everything as export and it will just work (slower, but
it will work). But there's a caveat: global variables will not
work the same way for MSVC, but works for mingw and GCC.

For global variables (as opposed to functions), MSVC requires
correct DSO visibility for MSVC: instead of declaring a symbol as
export for everything, you need to declare it as import when
importing from another DSO and export when defining it locally.

With current EAPI definitions, we get the following example
working in mingw and MSVC (observe it doesn't define any global
variables as exported symbols).

Example 1:
dll1:
```
EAPI void foo(void);

EAPI void bar()
{
  foo();
}
```
dll2:
```
EAPI void foo()
{
  printf ("foo\n");
}
```

This works fine with API defined as __declspec(dllexport) in both
cases and for gcc defining as
`__atttribute__((visibility("default")))`

However, the following:
Example 2:

dll1:

```
EAPI extern int foo;
EAPI void foobar(void);

EAPI void bar()
{
  foo = 5;
  foobar();
}
```

dll2:

```
EAPI int foo = 0;
EAPI void foobar()
{
  printf ("foo %d\n", foo);
}
```

This will work on mingw but will not work for MSVC. And that's why
EAPI is the only solution that worked for MSVC.

Co-authored-by: João Paulo Taylor Ienczak Zanette <jpaulotiz@gmail.com>
Co-authored-by: Ricardo Campos <ricardo.campos@expertise.dev>
Co-authored-by: Lucas Cavalcante de Sousa <lucks.sousa@gmail.com>

Reviewers: jptiz, lucas, woohyun, vtorri, raster

Reviewed By: jptiz, lucas, vtorri

Subscribers: ProhtMeyhet, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D12188
2020-11-25 09:42:47 -03:00
Vincent Torri cfbdcdc9c8 Use extern after EAPI
Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D11961
2020-06-10 10:07:57 +02:00
Xavi Artigas 78aa7a7467 doxygen docs: Complete docs for Eina Module
And fix yet another doxygen grouping mess
2020-05-08 12:32:09 +02:00
Bryce Harrington 185f2f55fd eina: Add doxygen in/out tags for mmap and module
Reviewers: devilhorns

Reviewed By: devilhorns

Subscribers: cedric, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6691
2018-07-28 11:50:49 -04:00
Bryce Harrington bdb9a41750 eina: Spelling fixes
Reviewers: devilhorns, Hermet

Reviewed By: Hermet

Subscribers: cedric, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6570
2018-07-12 16:27:15 +09:00
Cedric BAIL 9dce56687b eina: path get actually allocate memory and can't be pure. 2018-05-23 21:33:04 -07:00
Bryce Harrington 70f7f88eab eina: Fix spelling errors in documentation (matrixsparse..module)
Reviewers: cedric, ajwillia.ms

Subscribers: segfaultxavi, jpeg

Differential Revision: https://phab.enlightenment.org/D5425
2017-11-07 09:03:57 +00:00
Jaehyun Cho cb3eb09451 eina_module: Add description of parameter to resolve doxygen warning
Change-Id: I545b68e86976d4e2479fbf87ff5a8b38b9905c13
2017-10-26 13:20:54 +09:00
Myoungwoon Roy, Kim ec71f6607a docs: Fix typos and some wrong expressions in Eina API reference doxygen.
Summary: I had fixed some typos and some wrong expressions, such as capital letters, singular, and orders of groups in Eina API reference doxygen.

Test Plan: Doxygen Revision

Reviewers: stefan, cedric, raster, Jaehyun_Cho, jpeg

Reviewed By: jpeg

Subscribers: conr2d

Differential Revision: https://phab.enlightenment.org/D4674
2017-02-21 10:46:28 +09:00
Amitesh Singh d88f08f7e9 eina: module - Add macros for adding module informations
Summary:
These macros allow you to define module informations like
author/description/version/license

e.g.
// Use "Name <email id>" or just "Name"
EINA_MODULE_AUTHOR("Enlightenment Community");
// Mention license
EINA_MODULE_LICENSE("GPL v2");
// What your module does
EINA_MODULE_DESCRIPTION("This is what this module does");
// Module version
EINA_MODULE_VERSION("0.1");

Now eina_modinfo can show these informations to users

$ eina_modinfo module.so
 version: 0.1
 description:   Entry test
 license: GPLv2
 author:  Enlightenment Community

@feature

Reviewers: cedric, tasn, raster, jpeg

Subscribers: seoz

Differential Revision: https://phab.enlightenment.org/D4257
2016-08-31 16:17:53 +05:30
Cedric BAIL 0dfb263a28 eina: remove the need to order the header correctly for Windows. 2015-05-07 09:53:10 +02:00
Shinwoo Kim 448cd69ab7 eina : check whether the file exists or not, before memory allocation of Eina_Module
Summary:
Please refer to https://phab.enlightenment.org/D1200

Reviewers: raster, jpeg, zmike, cedric

Subscribers: cedric, seoz

Differential Revision: https://phab.enlightenment.org/D1334
2014-09-30 16:46:52 +02:00
Cedric BAIL 3fbe90ae53 eina: rename to eina_module_symbol_global_set
As discussed on the ML, eina_module_global_set should become eina_module_symbol_global_set.
2014-08-11 14:52:51 +02:00
Mike Blumenkrantz 6817717ee4 Revert "eina: Eina_Module - check whether the file exists or not, before memory allocation of Eina_Module"
This reverts commit 971589bf56.

this completely breaks existing eina_module usage. elm_test->image remote
2014-07-27 18:53:20 -04:00
Shinwoo Kim 971589bf56 eina: Eina_Module - check whether the file exists or not, before memory allocation of Eina_Module
Summary:
I got an issue from emotion_basic_example, because my machine has following directories.

/usr/local/lib/emotion/modules/
├── gstreamer
│   ├── linux-gnu-i686-1.7.99
│   ├── linux-gnu-i686-1.8.0
│   └── linux-gnu-i686-1.8.99
└── gstreamer1
    ├── linux-gnu-i686-1.8.99
    └── v-1.10

The defined MODULE_ARCH is v-1.10, and the _emotion_modules which is returned by eina_module_arch_list_get(); has two items.
Because eina_module_new(); creates Eina_Module, even though the "/usr/local/lib/emotion/modules/gstreamer/v-1.10/module.so"
does not exist.

Test Plan: Create directory without MODULE_ARCH, run emotion_basic_example, and check whether it works properly or not.

Reviewers: raster, seoz, Hermet, woohyun, jpeg, cedric

Subscribers: cedric, seoz

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

Signed-off-by: Cedric BAIL <c.bail@partner.samsung.com>
2014-07-21 19:33:27 +02:00
Cedric BAIL 8062d5d7e9 eina: make it possible to load module symbol into the global namespace. 2014-07-11 15:32:51 +02:00
Carsten Haitzler 69e27abdc3 eina - and e3fl in general - stop using eina_error_get/set - useless really 2013-10-11 16:50:40 +09:00
Carsten Haitzler 0a5ba96837 move eina headers into lib/eina like the rest of efl - at least be
consistent with the majority.



SVN revision: 77119
2012-09-27 04:02:37 +00:00