This adds a native_add_cmake_flags function for tools to add flags they want to pass to the native build. The flags are collected during the cmake execution process and _gen_native_cmake_target is run at the very end so that all the flags are used by watching when CMAKE_CURRENT_LIST_DIR is set to empty.
Details
- Reviewers
Fabien - Group Reviewers
Restricted Project - Commits
- rSTAGING25dd8a720622: [cmake] Refactor native build cmake generation
rABC25dd8a720622: [cmake] Refactor native build cmake generation
Run cmake build from scratch.
Delete the native folder. Check that it is regenrated when rebuilding.
Run the build a second time to ensure that dependecies for native target are tracked properly.
Diff Detail
- Repository
- rABC Bitcoin ABC
- Branch
- cmakenativecustomargs
- Lint
Lint Passed - Unit
No Test Coverage - Build Status
Buildable 9069 Build 16100: Default Diff Build & Tests Build 16099: arc lint + arc unit
Event Timeline
cmake/modules/NativeExecutable.cmake | ||
---|---|---|
14 | The if is not necessary. Only INTERNAL cache variables are overridden unless FORCE is specified. | |
26 | Nit: symlink to because => symlink because | |
27 | Nit: ecutble => executable | |
34 | You need to add ${ARGN} to the dependencies, otherwise the native target won't rebuild if there source files are changed. | |
76 | Can you point to some documentation regarding this behavior ? I couldn't find anything. | |
cmake/templates/NativeCmakeRunner.cmake.in | ||
3 | The bin dir is not used. |
cmake/modules/NativeExecutable.cmake | ||
---|---|---|
14 | Obviously... | |
34 | Good catch. This isn't exact, but probably good enough. | |
76 | From https://cmake.org/cmake/help/v3.10/variable/CMAKE_CURRENT_LIST_DIR.html
Which ends up being nothing for the last one. Let's be clear, this is an horrible hack, but it doesn't looks like there is a better way to do this. |
cmake/modules/NativeExecutable.cmake | ||
---|---|---|
14 | Yes it's weird... | |
76 | Indeed, that's hacky ! But I can't this at any good solution: PRE-BUILD custom command attached to target will only work with VS, and calling the generation at the end of the top level file will break secp256k1 build... | |
cmake/templates/NativeCmakeRunner.cmake.in | ||
3 | The bin dir is still unused. |