summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--TODO-cmake.txt67
1 files changed, 67 insertions, 0 deletions
diff --git a/TODO-cmake.txt b/TODO-cmake.txt
new file mode 100644
index 0000000..2cb522f
--- /dev/null
+++ b/TODO-cmake.txt
@@ -0,0 +1,67 @@
1Help Cmake build system come true by helping with the following
2tasks. Most of them can be done on top of autotools only, then we'll
3catch-up with the cmake parts.
4
5General (non-CMake specific) Tasks:
6
7 - move each target (binary, lib, test) to its own directory, example:
8 src/lib/efreet contains efreet_mime and efreet_trash in addition to
9 efreet. Create src/lib/efreet_mime and src/lib/efreet_trash.
10
11 It also applies to tests (ie: src/tests/ector which contains both
12 ector_suite and cxx_compile_test), in the case of binaries and
13 tests make sure to contain them in the library folder:
14 src/tests/ector should then contain 2 folders, one for each
15 test. Another one is src/tests/eo, which contains lots of
16 stand-alone tests in addition to eo_suite.
17
18 - uniform installation (and lookup!) of modules, like
19 lib/evas/modules/engines/NAME/v-1.18/module.so versus
20 lib/ecore/system/NAME/v-1.18/module.so (missing 'modules/')
21 lib/ecore_evas/engines/NAME/v-1.18/module.so (missing 'modules/')
22
23 - uniform module enable variables:
24 {LIB}_MODULE_TYPE_{SCOPE}_{MODNAME}_STATIC (static/built-in, with scope)
25 {LIB}_MODULE_TYPE_{SCOPE}_{MODNAME}_DYNAMIC (dynamic, with scope)
26 {LIB}_MODULE_TYPE_{MODNAME}_STATIC (static/built-in, no scope)
27 {LIB}_MODULE_TYPE_{MODNAME}_DYNAMIC (dynamic, no scope)
28 Example:
29 EINA_MODULE_TYPE_MP_PASS_THROUGH_STATIC
30 instead of EINA_STATIC_BUILD_PASS_THROUGH
31 EVAS_MODULE_TYPE_ENGINE_FB
32 instead of EVAS_STATIC_BUILD_FB
33 As this will make clear we're dealing with modules and their scope
34 (if any, things like Ecore_IMF have no module scope).
35
36
37CMake Tasks:
38
39 - add src/lib/NAME/CMakeLists.txt defining SOURCES, PUBLIC_HEADERS,
40 PKG_CONFIG_REQUIRES, PKG_CONFIG_REQUIRES_PRIVATE, LIBRARIES,
41 PUBLIC_LIBRARIES and so on. See src/lib/eina/CMakeLists.txt as an
42 example.
43
44 - add options and dependency detection to cmake/config/NAME.cmake,
45 see cmake/config/eina.cmake and cmake/config/common.cmake
46
47 - add src/modules/NAME/SCOPE/MODNAME/CMakeLists.txt or
48 src/modules/NAME/MODNAME/CMakeLists.txt (if no module scope). If
49 single source and no special requiresments (libs, etc), then it
50 should require no CMakeLists.txt and will be built automatically.
51
52 - add src/bin/NAME/CMakeLists.txt (single binary of a lib) or
53 src/bin/NAME/EXE_NAME/CMakeLists.txt (multiple binaries for a lib).
54 If single source (one .c), then no CMakeLists.txt should be needed,
55 see if it's already being built.
56
57 - add src/tests/NAME/CMakeLists.txt (single test of a lib) or
58 src/tests/NAME/EXE_NAME/CMakeLists.txt (multiple tests for a lib).
59 If single source (one .c), then no CMakeLists.txt should be needed,
60 see if it's already being built.
61
62Since it's under development, check the code in cmake/helpers/*.cmake,
63in particular cmake/helpers/EflMacros.cmake and check the comments and
64also fix bugs :-)
65
66Feedback on repetitive tasks and if you spot some
67unification/simplification/automatization.