Hello,

I have a project, where binaries are build for an embedded platform and for a 
PC platform. To build software update packages for the embedded platforms 
(files that can be used to make in the field firmware updates), tools that have 
to run during the build have to be build from source first. For example 
firmware.tfp have to be build by running create_package with firmware.bin. 
firmware.bin have to build with settings for the embedded platform and 
create_package have to be build with setting of the build host.

I’ve asked this question already a year or so ago and got the response, that 
using super builds will help me. Now I try to convert the project to a super 
build structure. Fortunately, there was very little content inside my main 
CMakeLists.txt, mainly `add_subdirectory( source )`. Mainly, I want to build 
different sets of artifacts from the same source tree, but with different

Now I’m stuck with a number of issues. First, I want to build all firmware 
binaries for the NRF52 embedded platform:

    ExternalProject_Add(firmware_binaries
        SOURCE_DIR  ${CMAKE_CURRENT_LIST_DIR}/source
        INSTALL_DIR ${installDir}
        CMAKE_ARGS
            -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
            -DBOOTLOADER_AES_KEY=${BOOTLOADER_AES_KEY}
            -DBOOTLOADER_VERSION=${BOOTLOADER_VERSION}
            -DBUILD_DEBUG=1
            -DBUILD_NRF52=1
        BUILD_COMMAND ${CMAKE_COMMAND} --build ${CMAKE_CURRENT_BINARY_DIR} 
--target firmware_binaries
    )

I don’t want to build any EOL test firmware, test-tools etc. just the stuff 
that will be shipped, thus the explicit target. I can build the 
firmware_binaries, from the source directly, without problems. But when I try 
to build with the top-level cmake file, that contains the 
ExternalProject_Add(), I get the usual configure output and then:

-- Configuring done
-- Generating done
-- Build files have been written to: 
/Users/todi/blueswd_firmware/build/firmware_binaries-prefix/src/firmware_binaries-build
[ 75%] Performing build step for 'firmware_binaries'
[ 12%] Performing build step for 'firmware_binaries'
[ 12%] Performing build step for 'firmware_binaries'
[ 12%] Performing build step for ‚firmware_binaries‘
…

This line repeats until make reports:

make[776]: /usr/local/Cellar/cmake/3.14.3/bin/cmake: Resource temporarily 
unavailable
make[776]: *** wait: No child processes.  Stop.
make[776]: *** Waiting for unfinished jobs....
make[776]: *** wait: No child processes.  Stop.

Any idea, what might be wrong here? Some kind of recursion?

An other issue: I want to forward targets to the super build, so that I can 
build them there. For example I have ~30 unit test programs and when I’m 
working in a certain area, I usually want to build exactly one of this 
programs. Is it possible to export them as targets of the super build?

A third issue that I have is, that changes to the CMakeLists.txt files in the 
Project are not reflected by the super build. If I make a change to one of the 
CMake files under ${CMAKE_CURRENT_LIST_DIR}/source, I usually have to delete 
the whole build folder and start from scratch with the build. Is there an other 
way to force the super build to recognize the changes? (Note: 
${CMAKE_CURRENT_LIST_DIR}/source is not added as subdirectory to the top level 
(super build) CMakeLists.txt).

best regards,

Torsten

P.S.:
$ cmake --version
cmake version 3.14.3

Attachment: signature.asc
Description: Message signed with OpenPGP

-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake

Reply via email to