nasa/fprime

Invalid CMake warning message

Opened this issue · 0 comments

F´ Version v3.4.3
Affected Component fprime-util generate

Problem Description

When I create my own cmake toolchain and specify set(CMAKE_SYSTEM_NAME Linux) at the top and I run fprime-util generate <custom_arch> , things work correctly, but I get this warning:

.
.
.
-- [fpp-tools] fpp-locate-defs found at: /workspace/MyProject/fprime-venv/bin/fpp-locate-defs
-- [FPRIME] Module locations: /workspace/MyProject/fprime;/workspace/MyProject
CMake Warning at fprime/cmake/platform/platform.cmake:25 (message):
  Toolchain '<custom_arch>' should set CMAKE_SYSTEM_NAME to 'Generic' and set
  FPRIME_PLATFORM
Call Stack (most recent call first):
-- [FPRIME] Configuration module: /workspace/MyProject/fprime/config
  fprime/cmake/FPrime.cmake:29 (include)
-- [FPRIME] Installation directory: /workspace/MyProject/build-artifacts
  CMakeLists.txt:13 (include)
-- Target build toolchain/platform: <custom_arch>/Linux


-- Including /workspace/MyProject/fprime/cmake/platform/Linux.cmake
-- Requiring thread library
-- Looking for pthread.h
-- Looking for pthread.h - found
.
.
.

However, when I do what the warning asks me to do (i.e. specify CMAKE_SYSTEM_NAME as Generic and set FPRIME_PLATFORM to Linux), it throws an error doesn't generate the cache.

When running fprime-util generate <custom_arch>

# In ./cmake/toolchain/<custom_arch>.cmake file

.
.
.
-- Adding Library: Drv_ByteStreamDriverModel
-- Adding Library: Drv_LinuxUartDriver
-- Adding Library: Drv_StreamCrossover
-- Cannot use IP sockets with platform Generic. Skipping.
-- Adding Library: CFDP_Checksum
-- Adding Library: Utils
-- Adding Library: Utils_Hash
-- Adding Library: Utils_Types
-- [LIBRARY] Adding modules from F´ framework - DONE
-- Adding Library: Components_HelloWorld
-- Adding Library: HelloWorldDeployment_Top
-- Adding Deployment: HelloWorldDeployment
-- Configuring done
CMake Error at fprime/cmake/target/build.cmake:83 (add_dependencies):
  The dependency target "Drv_TcpClient" of target "HelloWorldDeployment_Top"
  does not exist.
Call Stack (most recent call first):
  fprime/cmake/target/build.cmake:141 (build_setup_build_module)
  fprime/cmake/target/target.cmake:116 (build_add_module_target)
  fprime/cmake/target/target.cmake:116 (cmake_language)
  fprime/cmake/target/target.cmake:155 (setup_single_target)
  fprime/cmake/module.cmake:48 (setup_module_targets)
  fprime/cmake/module.cmake:88 (generate_base_module_properties)
  fprime/cmake/API.cmake:228 (generate_library)
  HelloWorldDeployment/Top/CMakeLists.txt:22 (register_fprime_module)


CMake Error at fprime/cmake/target/build.cmake:83 (add_dependencies):
  The dependency target "Drv_Udp" of target "HelloWorldDeployment_Top" does
  not exist.
Call Stack (most recent call first):
  fprime/cmake/target/build.cmake:141 (build_setup_build_module)
  fprime/cmake/target/target.cmake:116 (build_add_module_target)
  fprime/cmake/target/target.cmake:116 (cmake_language)
  fprime/cmake/target/target.cmake:155 (setup_single_target)
  fprime/cmake/module.cmake:48 (setup_module_targets)
  fprime/cmake/module.cmake:88 (generate_base_module_properties)
  fprime/cmake/API.cmake:228 (generate_library)
  HelloWorldDeployment/Top/CMakeLists.txt:22 (register_fprime_module)


CMake Error at fprime/cmake/target/build.cmake:83 (add_dependencies):
  The dependency target "Svc_PosixTime" of target "HelloWorldDeployment_Top"
  does not exist.
Call Stack (most recent call first):
  fprime/cmake/target/build.cmake:141 (build_setup_build_module)
  fprime/cmake/target/target.cmake:116 (build_add_module_target)
-- Generating done
  fprime/cmake/target/target.cmake:116 (cmake_language)
  fprime/cmake/target/target.cmake:155 (setup_single_target)
  fprime/cmake/module.cmake:48 (setup_module_targets)
  fprime/cmake/module.cmake:88 (generate_base_module_properties)
  fprime/cmake/API.cmake:228 (generate_library)
  HelloWorldDeployment/Top/CMakeLists.txt:22 (register_fprime_module)


CMake Generate step failed.  Build files cannot be regenerated correctly.
[ERROR] CMake erred with return code 1. Partial build cache remains. Run purge to clean-up.

Should I not be using Linux as the FPRIME_PLATFORM?

Context / Environment

Execute fprime-util version-check and share the output.

# fprime-util version-check
Operating System: Linux
CPU Architecture: riscv64
Platform: Linux-6.2.2-riscv64-with-glibc2.37
Python version: 3.11.8
CMake version: 3.28.3
Pip version: 24.0
Pip packages:
    fprime-tools==3.4.4
    fprime-gds==3.4.3
    fprime-fpp-*==2.1.0a3

How to Reproduce

  1. Define a ./cmake/toolchain/<custom_arch>.cmake file and place the following at the top:
set(CMAKE_SYSTEM_NAME Generic)
set(FPRIME_PLATFORM Linux)
  1. fprime-util generate <custom_arch>

Expected Behavior

fprime-util generate <custom_arch> should complete successfully.