On 01/25/2017 08:40 PM, Andrii Kroitor wrote: > Hello > > I'm very excited to see steps towards CMake :) > Is there any reason to limit minimum version to 3.7? Current unbuntu > release has cmake version 3.5.1 included. > Looks like with 3.5 cmake step passes ok, but build fails on eo files > generation. I'm wondering if it is because of some missing cmake > features or simply because work is in progress. >
It would be good to target something that most distro's have, from memory there arn't many new features after 3.1 so maybe thats a version worth targeting. > > On 20.01.17 01:17, Gustavo Sverzut Barbieri wrote: >> Hi all, >> >> Marcel Hollerbach did a nice work and started a branch >> devs/bu5hm4n/cmake-port >> >> After some review, I shared my experience with CMake and did a >> complement trying to simplify it: devs/barbieri/cmake >> (https://git.enlightenment.org/core/efl.git/log/?h=devs/barbieri/cmake) >> >> As you can see, complexities are hidden from the user using some >> macros/functions defined in cmake/helper/EflMacros.cmake >> >> At the toplevel directory you simply say: EFL_LIB(eina) >> >> Then the macro will include whenever appropriate >> src/{lib,bin,modules,tests}/eina and do the right action. You can see >> from sub-CMakeLists.txt how simple they become, basically define some >> variables (which makes it simpler for us to change to a new build >> system next time). >> >> There are some restrictions in that, which I'd like to keep and >> instead of work-around in the build system, change the code to reflect >> that: >> >> - one library per directory, offenders are efreet_mime/efreet_thrash >> and possibly others; >> >> - modules should install >> ${libdir}/${libname}/modules/${scope}/${modname}/v-${VMAJ}.${VMIN}/module.so, >> currently some libs miss "/modules", like ecore/system >> >> If you want to try it out, be aware that binaries are still not >> handled and eina_suite still doesn't work. And I'm forcing out-of-tree >> builds, so we fix that for once and for all: >> >> mkdir -p build && cmake -H. -Bbuild && cd build && make >> >> To address raster's complains about hard targets and so on: >> >> make eina >> >> builds eina checking dependencies, while: >> >> make eina/fast >> >> doesn't check dependencies, this is in GNU Make. Ninja doesn't offer such >> rule. >> >> I'm also offering targets for modules and tests: >> >> make eina-tests >> make eina-modules >> >> Everything should be placed in build/lib, build/bin and so on, so it >> will mimic the system installation and eina_prefix should be able to >> work (we're still missing the 'checkme' files). >> >> Although I know cmake from my years-ago usage, I'm not an expert that >> works with it every day, thus review of the CMake, particularly the >> macros is very helpful. >> >> >From an user (EFL developer that doesn't mess with build system) point of >> >view: >> >> - library configuration checks and options (cmake/config/eina.cmake): >> https://git.enlightenment.org/core/efl.git/tree/cmake/config/eina.cmake?h=devs/barbieri/cmake&id=c15eca03344e9bc1e602769c4af6e3c2ae2cc405 >> The idea is to isolate these complexities from source/headers as very >> few people will need to look at configure, but most developers need to >> touch file list. >> >> - library sources, headers (src/lib/eina/CMakeLists.txt): >> https://git.enlightenment.org/core/efl.git/tree/src/lib/eina/CMakeLists.txt?h=devs/barbieri/cmake&id=c15eca03344e9bc1e602769c4af6e3c2ae2cc405 >> >> - library module (src/modules/eina/mp/pass_through/CMakeLists.txt): >> https://git.enlightenment.org/core/efl.git/tree/src/modules/eina/mp/pass_through/CMakeLists.txt?h=devs/barbieri/cmake&id=c15eca03344e9bc1e602769c4af6e3c2ae2cc405 >> >> - library unit tests (src/tests/eina/CMakeLists.txt): >> https://git.enlightenment.org/core/efl.git/tree/src/tests/eina/CMakeLists.txt?h=devs/barbieri/cmake&id=c15eca03344e9bc1e602769c4af6e3c2ae2cc405 >> >> As you can see these files are very small, they basically define >> SOURCES, HEADERS, DEPENDENCIES, LIBRARIES... variables and these are >> used to execute CMake specific targets, set properties, etc. >> >> If we can settle on one-lib-per-dir, then we can even simplify those >> and remove ${libname}_ prefix, as done by modules we could specify >> SOURCES instead of eina_SOURCES. >> >> > -- Simon Lees (Simotek) http://simotek.net Emergency Update Team keybase.io/simotek SUSE Linux Adelaide Australia, UTC+10:30 GPG Fingerprint: 5B87 DB9D 88DC F606 E489 CEC5 0922 C246 02F0 014B
signature.asc
Description: OpenPGP digital signature
------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel