-
Notifications
You must be signed in to change notification settings - Fork 33
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
67 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
Help Cmake build system come true by helping with the following | ||
tasks. Most of them can be done on top of autotools only, then we'll | ||
catch-up with the cmake parts. | ||
|
||
General (non-CMake specific) Tasks: | ||
|
||
- move each target (binary, lib, test) to its own directory, example: | ||
src/lib/efreet contains efreet_mime and efreet_trash in addition to | ||
efreet. Create src/lib/efreet_mime and src/lib/efreet_trash. | ||
|
||
It also applies to tests (ie: src/tests/ector which contains both | ||
ector_suite and cxx_compile_test), in the case of binaries and | ||
tests make sure to contain them in the library folder: | ||
src/tests/ector should then contain 2 folders, one for each | ||
test. Another one is src/tests/eo, which contains lots of | ||
stand-alone tests in addition to eo_suite. | ||
|
||
- uniform installation (and lookup!) of modules, like | ||
lib/evas/modules/engines/NAME/v-1.18/module.so versus | ||
lib/ecore/system/NAME/v-1.18/module.so (missing 'modules/') | ||
lib/ecore_evas/engines/NAME/v-1.18/module.so (missing 'modules/') | ||
|
||
- uniform module enable variables: | ||
{LIB}_MODULE_TYPE_{SCOPE}_{MODNAME}_STATIC (static/built-in, with scope) | ||
{LIB}_MODULE_TYPE_{SCOPE}_{MODNAME}_DYNAMIC (dynamic, with scope) | ||
{LIB}_MODULE_TYPE_{MODNAME}_STATIC (static/built-in, no scope) | ||
{LIB}_MODULE_TYPE_{MODNAME}_DYNAMIC (dynamic, no scope) | ||
Example: | ||
EINA_MODULE_TYPE_MP_PASS_THROUGH_STATIC | ||
instead of EINA_STATIC_BUILD_PASS_THROUGH | ||
EVAS_MODULE_TYPE_ENGINE_FB | ||
instead of EVAS_STATIC_BUILD_FB | ||
As this will make clear we're dealing with modules and their scope | ||
(if any, things like Ecore_IMF have no module scope). | ||
|
||
|
||
CMake Tasks: | ||
|
||
- add src/lib/NAME/CMakeLists.txt defining SOURCES, PUBLIC_HEADERS, | ||
PKG_CONFIG_REQUIRES, PKG_CONFIG_REQUIRES_PRIVATE, LIBRARIES, | ||
PUBLIC_LIBRARIES and so on. See src/lib/eina/CMakeLists.txt as an | ||
example. | ||
|
||
- add options and dependency detection to cmake/config/NAME.cmake, | ||
see cmake/config/eina.cmake and cmake/config/common.cmake | ||
|
||
- add src/modules/NAME/SCOPE/MODNAME/CMakeLists.txt or | ||
src/modules/NAME/MODNAME/CMakeLists.txt (if no module scope). If | ||
single source and no special requiresments (libs, etc), then it | ||
should require no CMakeLists.txt and will be built automatically. | ||
|
||
- add src/bin/NAME/CMakeLists.txt (single binary of a lib) or | ||
src/bin/NAME/EXE_NAME/CMakeLists.txt (multiple binaries for a lib). | ||
If single source (one .c), then no CMakeLists.txt should be needed, | ||
see if it's already being built. | ||
|
||
- add src/tests/NAME/CMakeLists.txt (single test of a lib) or | ||
src/tests/NAME/EXE_NAME/CMakeLists.txt (multiple tests for a lib). | ||
If single source (one .c), then no CMakeLists.txt should be needed, | ||
see if it's already being built. | ||
|
||
Since it's under development, check the code in cmake/helpers/*.cmake, | ||
in particular cmake/helpers/EflMacros.cmake and check the comments and | ||
also fix bugs :-) | ||
|
||
Feedback on repetitive tasks and if you spot some | ||
unification/simplification/automatization. |