Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Generate not working for RP2040 #27

Open
csmith608 opened this issue Mar 31, 2024 · 43 comments
Open

Generate not working for RP2040 #27

csmith608 opened this issue Mar 31, 2024 · 43 comments

Comments

@csmith608
Copy link

csmith608 commented Mar 31, 2024

Hello,

I've been trying to run the arduino led blinker tutorial on the RP2040. https://fprime-community.github.io/fprime-tutorial-arduino-blinker/

I'm getting stuck on the first fprime-util generate. I'm getting the error shown below

[INFO] Generating build directory at: /Users/your-user/led-blinker/build-fprime-automatic-rpipicow
[INFO] Using toolchain file /Users/your-user/led-blinker/fprime-arduino/cmake/toolchain/rpipicow.cmake for platform default
Traceback (most recent call last):
  File "/Users/your-user/fprime-venv/bin/arduino-cli-wrapper", line 5, in <module>
    from arduino_cli_cmake_wrapper.cli import main
  File "/Users/your-user/fprime-venv/lib/python3.8/site-packages/arduino_cli_cmake_wrapper/cli.py", line 193, in <module>
    def assemble_output_data(test_files: dict[Source, Path], stages: Dict[Stage, List[str]], detect: bool, include: bool, post_link: bool) -> Tuple[Dict, Path]:
TypeError: 'type' object is not subscriptable
CMake Error at fprime-arduino/cmake/toolchain/support/arduino-wrapper.cmake:72 (message):
  Could not run 'arduino-cli' please install 'arduino-cli' and board
  'rp2040:rp2040:rpipicow'.
Call Stack (most recent call first):
  fprime-arduino/cmake/toolchain/support/arduino-support.cmake:43 (run_arduino_wrapper)
  fprime-arduino/cmake/toolchain/support/arduino-support.cmake:201 (set_arduino_build_settings)
  fprime-arduino/cmake/toolchain/rpipicow.cmake:19 (include)
  /usr/local/Cellar/cmake/3.29.0/share/cmake/Modules/CMakeDetermineSystem.cmake:146 (include)
  CMakeLists.txt:7 (project)


CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool.
-- Configuring incomplete, errors occurred!
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage

Here's my settings.ini file

[fprime]
project_root: .
framework_path: ./fprime

default_cmake_options:  FPRIME_ENABLE_FRAMEWORK_UTS=OFF
                        FPRIME_ENABLE_AUTOCODER_UTS=OFF
library_locations: ./fprime-arduino
default_toolchain: rpipicow
deployment_cookiecutter: https://github.com/fprime-community/fprime-arduino-deployment-cookiecutter.git

Some observations:

  • I can build Ref in fprime, so I don't think it's my build system
  • I've tried updating the fprime build tools pip install -U fprime-tools

Any ideas? Let me know if you need any more information

@LeStarch
Copy link
Contributor

LeStarch commented Apr 1, 2024

This builds on-top of arduino-cli. You should install that, and make sure you have the board packages installed.

@LeStarch
Copy link
Contributor

LeStarch commented Apr 1, 2024

This repo will work you through the setup: https://github.com/fprime-community/fprime-baremetal-reference

@csmith608
Copy link
Author

@LeStarch I have the arduino-cli installed and working as well as the rp2040 board package.

@LeStarch
Copy link
Contributor

LeStarch commented Apr 1, 2024

@csmith608 is arduino-cli on your PATH?

@csmith608
Copy link
Author

csmith608 commented Apr 1, 2024

(fprime-venv) your-user@cs-mbp-2022 led-blinker % arduino-cli version
arduino-cli  Version: 0.35.3 Commit: 95cfd654 Date: 2024-02-19T13:24:24Z
(fprime-venv) your-user@cs-mbp-2022 led-blinker % ls /Users/your-user/led-blinker/fprime-arduino/cmake/toolchain 
ATmega128.cmake		featherrp2040rfm.cmake	support			teensy41.cmake
esp32.cmake		rpipico.cmake		teensy32.cmake		thingplusrp2040.cmake
featherM0.cmake		rpipicow.cmake		teensy40.cmake

@LeStarch
Copy link
Contributor

LeStarch commented Apr 1, 2024

There is a bug in the arduino-cli-wrapper package TypeError: 'type' object is not subscriptable caused by assemble_output_data(test_files: dict[Source, Path] that should read assemble_output_data(test_files: Dict[Source, Path].

I also notice you are in Python3.8. This may have worked in newer versions of Python.

@LeStarch
Copy link
Contributor

LeStarch commented Apr 1, 2024

I'd recommend:

  1. Edit /Users/your-user/fprime-venv/lib/python3.8/site-packages/arduino_cli_cmake_wrapper/cli.py on line 193 to capitalize the word dict from the text above
  2. Run purge and generate.

If this fixes the problem, then we can patch that script. If more problems abound, run fprime-util version-check so we can try to reproduce.

@csmith608
Copy link
Author

csmith608 commented Apr 2, 2024

The fixed that, then it complained about the TcpClient send port, so I changed it from

@ Takes data to transmit out the UART device
        guarded input port send: Drv.ByteStreamSend

To

@ Takes data to transmit out the UART device
        guarded input port $send: Drv.ByteStreamSend

I don't think I can make the PR for the arduino-cli-cmake-wrapper, but I could for the TcpClient
It has now successfully built

@ethancheez
Copy link
Collaborator

I fixed the $send port in TcpClient with this commit

The fprime-arduino devel branch should build for the RP2040 now.

@Gonta01
Copy link

Gonta01 commented Jul 9, 2024

fprime-util generate fails with logs:

(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker$ fprime-util generate
[INFO] Generating build directory at: /home/user/Desktop/led-blinker/build-fprime-automatic-rpipicow
[INFO] Using toolchain file /home/user/Desktop/led-blinker/fprime-arduino/cmake/toolchain/rpipicow.cmake for platform default
-- The C compiler identification is GNU 12.3.0
-- The CXX compiler identification is GNU 12.3.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/arm-none-eabi-gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/arm-none-eabi-g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- [python3] python3 found at: /home/user/Desktop/led-blinker/fprime-venv/bin/python3
-- [fpp-tools] fpp-depend found at: /home/user/Desktop/led-blinker/fprime-venv/bin/fpp-depend
-- [fpp-tools] fpp-to-xml found at: /home/user/Desktop/led-blinker/fprime-venv/bin/fpp-to-xml
-- [fpp-tools] fpp-to-cpp found at: /home/user/Desktop/led-blinker/fprime-venv/bin/fpp-to-cpp
-- [fpp-tools] fpp-locate-defs found at: /home/user/Desktop/led-blinker/fprime-venv/bin/fpp-locate-defs
-- [FPRIME] Module locations: /home/user/Desktop/led-blinker/fprime;/home/user/Desktop/led-blinker/fprime-arduino;/home/user/Desktop/led-blinker
-- [FPRIME] Configuration module: /home/user/Desktop/led-blinker/fprime/config
-- [FPRIME] Installation directory: /home/user/Desktop/led-blinker/build-artifacts
-- Target build toolchain/platform: rpipicow/ArduinoFw
-- Including /home/user/Desktop/led-blinker/fprime-arduino/cmake/platform/ArduinoFw.cmake
-- [fprime-arduino] Including Types Directory: /home/user/Desktop/led-blinker/fprime-arduino/cmake/platform/types/arm
-- [LIBRARY] Including library fprime-arduino at /home/user/Desktop/led-blinker/fprime-arduino
-- [sub-build] Performing sub-build: info-cache
-- [sub-build] Generating: info-cache with target/fpp_locs;target/fpp_depend
CMake Error at fprime/cmake/utilities.cmake:586 (message):
-- Configuring incomplete, errors occurred!
  [sub-build] Failed to generate: info-cache:
See also "/home/user/Desktop/led-blinker/build-fprime-automatic-rpipicow/CMakeFiles/CMakeOutput.log".

See also "/home/user/Desktop/led-blinker/build-fprime-automatic-rpipicow/CMakeFiles/CMakeError.log".
  [ERROR] FauxBuildException occurred.  arduino-cli failed with return code:
  1

  

        /tmp/tmpe33adt3t/tmpe33adt3t.ino:1:10: fatal error: TimeLib.h: No such
  file or directory

         1 | #include <TimeLib.h>

         | ^~~~~~~~~~~

        compilation terminated.

        Error during build: exit status 1

  

  Traceback (most recent call last):

    File "/home/user/Desktop/led-blinker/fprime-venv/bin/arduino-cli-wrapper", line 8, in <module>
      sys.exit(main())
    File "/home/user/Desktop/led-blinker/fprime-venv/lib/python3.10/site-packages/arduino_cli_cmake_wrapper/cli.py", line 235, in main
      test_file_map, stdout, stderr = build(arguments.board, arguments.libraries, [])
    File "/home/user/Desktop/led-blinker/fprime-venv/lib/python3.10/site-packages/arduino_cli_cmake_wrapper/builder.py", line 103, in build
      stdout, stderr = compile_sketch(board, temporary_path, args)
    File "/home/user/Desktop/led-blinker/fprime-venv/lib/python3.10/site-packages/arduino_cli_cmake_wrapper/builder.py", line 83, in compile_sketch
      raise FauxBuildException(f"arduino-cli failed with return code: {process.returncode}", process.stderr)

  arduino_cli_cmake_wrapper.types.FauxBuildException: arduino-cli failed with
  return code: 1

  

        /tmp/tmpe33adt3t/tmpe33adt3t.ino:1:10: fatal error: TimeLib.h: No such
  file or directory

         1 | #include <TimeLib.h>

         | ^~~~~~~~~~~

        compilation terminated.

        Error during build: exit status 1

  

  CMake Error at
  fprime-arduino/cmake/toolchain/support/arduino-wrapper.cmake:72 (message):

    Could not run 'arduino-cli' please install 'arduino-cli' and board
    'rp2040:rp2040:rpipicow'.

  Call Stack (most recent call first):

    fprime-arduino/cmake/toolchain/support/arduino-support.cmake:117 (run_arduino_wrapper)
    fprime-arduino/cmake/toolchain/support/arduino-support.cmake:178 (setup_arduino_libraries)
    LedBlinker/CMakeLists.txt:27 (finalize_arduino_executable)
Call Stack (most recent call first):
  fprime/cmake/sub-build/sub-build.cmake:39 (execute_process_or_fail)
  fprime/cmake/FPrime.cmake:152 (run_sub_build)
  fprime/cmake/FPrime.cmake:221 (fprime_initialize_build_system)
  CMakeLists.txt:13 (include)


[ERROR] CMake erred with return code 1. Partial build cache remains. Run purge to clean-up.

fprime-util version-check:

(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker$ fprime-util version-check
Operating System: Linux
CPU Architecture: x86_64
Platform: Linux-6.5.0-41-generic-x86_64-with-glibc2.35
Python version: 3.10.12
CMake version: 3.22.1
Pip version: 24.1.2
Pip packages:
    fprime-tools==3.4.4
    fprime-gds==3.4.3
    fprime-fpp-*==2.1.0a3

arduino-cli version:

(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker$ arduino-cli version
arduino-cli  Version: 1.0.2 Commit: 33dfa8e8 Date: 2024-07-02T12:53:01Z

Does anyone knows how to fix it or what could be the reason?

@ethancheez
Copy link
Collaborator

fprime-util generate fails with logs:


(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker$ fprime-util generate

[INFO] Generating build directory at: /home/user/Desktop/led-blinker/build-fprime-automatic-rpipicow

[INFO] Using toolchain file /home/user/Desktop/led-blinker/fprime-arduino/cmake/toolchain/rpipicow.cmake for platform default

-- The C compiler identification is GNU 12.3.0

-- The CXX compiler identification is GNU 12.3.0

-- Detecting C compiler ABI info

-- Detecting C compiler ABI info - done

-- Check for working C compiler: /home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/arm-none-eabi-gcc - skipped

-- Detecting C compile features

-- Detecting C compile features - done

-- Detecting CXX compiler ABI info

-- Detecting CXX compiler ABI info - done

-- Check for working CXX compiler: /home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/arm-none-eabi-g++ - skipped

-- Detecting CXX compile features

-- Detecting CXX compile features - done

-- [python3] python3 found at: /home/user/Desktop/led-blinker/fprime-venv/bin/python3

-- [fpp-tools] fpp-depend found at: /home/user/Desktop/led-blinker/fprime-venv/bin/fpp-depend

-- [fpp-tools] fpp-to-xml found at: /home/user/Desktop/led-blinker/fprime-venv/bin/fpp-to-xml

-- [fpp-tools] fpp-to-cpp found at: /home/user/Desktop/led-blinker/fprime-venv/bin/fpp-to-cpp

-- [fpp-tools] fpp-locate-defs found at: /home/user/Desktop/led-blinker/fprime-venv/bin/fpp-locate-defs

-- [FPRIME] Module locations: /home/user/Desktop/led-blinker/fprime;/home/user/Desktop/led-blinker/fprime-arduino;/home/user/Desktop/led-blinker

-- [FPRIME] Configuration module: /home/user/Desktop/led-blinker/fprime/config

-- [FPRIME] Installation directory: /home/user/Desktop/led-blinker/build-artifacts

-- Target build toolchain/platform: rpipicow/ArduinoFw

-- Including /home/user/Desktop/led-blinker/fprime-arduino/cmake/platform/ArduinoFw.cmake

-- [fprime-arduino] Including Types Directory: /home/user/Desktop/led-blinker/fprime-arduino/cmake/platform/types/arm

-- [LIBRARY] Including library fprime-arduino at /home/user/Desktop/led-blinker/fprime-arduino

-- [sub-build] Performing sub-build: info-cache

-- [sub-build] Generating: info-cache with target/fpp_locs;target/fpp_depend

CMake Error at fprime/cmake/utilities.cmake:586 (message):

-- Configuring incomplete, errors occurred!

  [sub-build] Failed to generate: info-cache:

See also "/home/user/Desktop/led-blinker/build-fprime-automatic-rpipicow/CMakeFiles/CMakeOutput.log".



See also "/home/user/Desktop/led-blinker/build-fprime-automatic-rpipicow/CMakeFiles/CMakeError.log".

  [ERROR] FauxBuildException occurred.  arduino-cli failed with return code:

  1



  



        /tmp/tmpe33adt3t/tmpe33adt3t.ino:1:10: fatal error: TimeLib.h: No such

  file or directory



         1 | #include <TimeLib.h>



         | ^~~~~~~~~~~



        compilation terminated.



        Error during build: exit status 1



  



  Traceback (most recent call last):



    File "/home/user/Desktop/led-blinker/fprime-venv/bin/arduino-cli-wrapper", line 8, in <module>

      sys.exit(main())

    File "/home/user/Desktop/led-blinker/fprime-venv/lib/python3.10/site-packages/arduino_cli_cmake_wrapper/cli.py", line 235, in main

      test_file_map, stdout, stderr = build(arguments.board, arguments.libraries, [])

    File "/home/user/Desktop/led-blinker/fprime-venv/lib/python3.10/site-packages/arduino_cli_cmake_wrapper/builder.py", line 103, in build

      stdout, stderr = compile_sketch(board, temporary_path, args)

    File "/home/user/Desktop/led-blinker/fprime-venv/lib/python3.10/site-packages/arduino_cli_cmake_wrapper/builder.py", line 83, in compile_sketch

      raise FauxBuildException(f"arduino-cli failed with return code: {process.returncode}", process.stderr)



  arduino_cli_cmake_wrapper.types.FauxBuildException: arduino-cli failed with

  return code: 1



  



        /tmp/tmpe33adt3t/tmpe33adt3t.ino:1:10: fatal error: TimeLib.h: No such

  file or directory



         1 | #include <TimeLib.h>



         | ^~~~~~~~~~~



        compilation terminated.



        Error during build: exit status 1



  



  CMake Error at

  fprime-arduino/cmake/toolchain/support/arduino-wrapper.cmake:72 (message):



    Could not run 'arduino-cli' please install 'arduino-cli' and board

    'rp2040:rp2040:rpipicow'.



  Call Stack (most recent call first):



    fprime-arduino/cmake/toolchain/support/arduino-support.cmake:117 (run_arduino_wrapper)

    fprime-arduino/cmake/toolchain/support/arduino-support.cmake:178 (setup_arduino_libraries)

    LedBlinker/CMakeLists.txt:27 (finalize_arduino_executable)

Call Stack (most recent call first):

  fprime/cmake/sub-build/sub-build.cmake:39 (execute_process_or_fail)

  fprime/cmake/FPrime.cmake:152 (run_sub_build)

  fprime/cmake/FPrime.cmake:221 (fprime_initialize_build_system)

  CMakeLists.txt:13 (include)





[ERROR] CMake erred with return code 1. Partial build cache remains. Run purge to clean-up.

fprime-util version-check:


(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker$ fprime-util version-check

Operating System: Linux

CPU Architecture: x86_64

Platform: Linux-6.5.0-41-generic-x86_64-with-glibc2.35

Python version: 3.10.12

CMake version: 3.22.1

Pip version: 24.1.2

Pip packages:

    fprime-tools==3.4.4

    fprime-gds==3.4.3

    fprime-fpp-*==2.1.0a3

arduino-cli version:


(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker$ arduino-cli version

arduino-cli  Version: 1.0.2 Commit: 33dfa8e8 Date: 2024-07-02T12:53:01Z

Does anyone knows how to fix it or what could be the reason?

Did you run:

arduino-cli lib install Time

@Gonta01
Copy link

Gonta01 commented Jul 10, 2024

Did you run:

arduino-cli lib install Time

@ethancheez thank you, it helped. Generate was successfully finished, but the next step (build) fails:

(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker$ fprime-util build
[  0%] Built target version
[  0%] Building CXX object LedBlinker/CMakeFiles/fprime_arduino_patcher.dir/__/fprime-arduino/cmake/toolchain/support/sources/extras.cpp.obj
[  1%] Linking CXX static library ../lib/rpipicow/libfprime_arduino_patcher.a
[  1%] Built target fprime_arduino_patcher
[  1%] Generating ProcTypeEnumAi.xml
[  2%] Generating FppConstantsAc.cpp, FppConstantsAc.hpp, ProcTypeEnumAc.cpp, ProcTypeEnumAc.hpp
[  2%] Building CXX object config/CMakeFiles/config.dir/FppConstantsAc.cpp.obj
[  2%] Building CXX object config/CMakeFiles/config.dir/ProcTypeEnumAc.cpp.obj
[  2%] Linking CXX static library ../lib/rpipicow/libconfig.a
[  2%] Built target config
[  2%] Building CXX object F-Prime/Fw/Cfg/CMakeFiles/Fw_Cfg.dir/ConfigCheck.cpp.obj
[  2%] Linking CXX static library ../../../lib/rpipicow/libFw_Cfg.a
[  2%] Built target Fw_Cfg
[  2%] Generating ActiveEnumAi.xml, DeserialStatusEnumAi.xml, DirectionEnumAi.xml, EnabledEnumAi.xml, HealthEnumAi.xml, LogicEnumAi.xml, OnEnumAi.xml, OpenEnumAi.xml, SerialStatusEnumAi.xml, SuccessEnumAi.xml
[  2%] Generating ActiveEnumAc.cpp, ActiveEnumAc.hpp, DeserialStatusEnumAc.cpp, DeserialStatusEnumAc.hpp, DirectionEnumAc.cpp, DirectionEnumAc.hpp, EnabledEnumAc.cpp, EnabledEnumAc.hpp, HealthEnumAc.cpp, HealthEnumAc.hpp, LogicEnumAc.cpp, LogicEnumAc.hpp, OnEnumAc.cpp, OnEnumAc.hpp, OpenEnumAc.cpp, OpenEnumAc.hpp, SerialStatusEnumAc.cpp, SerialStatusEnumAc.hpp, SuccessEnumAc.cpp, SuccessEnumAc.hpp
[  2%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/Assert.cpp.obj
[  3%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/String.cpp.obj
[  3%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/InternalInterfaceString.cpp.obj
[  3%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/MallocAllocator.cpp.obj
[  3%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/MemAllocator.cpp.obj
[  3%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/PolyType.cpp.obj
[  4%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/SerialBuffer.cpp.obj
[  4%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/Serializable.cpp.obj
[  4%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/StringType.cpp.obj
[  4%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/StringUtils.cpp.obj
[  4%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/ActiveEnumAc.cpp.obj
[  5%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/DeserialStatusEnumAc.cpp.obj
[  5%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/DirectionEnumAc.cpp.obj
[  5%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/EnabledEnumAc.cpp.obj
[  5%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/HealthEnumAc.cpp.obj
[  5%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/LogicEnumAc.cpp.obj
[  6%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/OnEnumAc.cpp.obj
[  6%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/OpenEnumAc.cpp.obj
[  6%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/SerialStatusEnumAc.cpp.obj
[  6%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/SuccessEnumAc.cpp.obj
[  6%] Linking CXX static library ../../../lib/rpipicow/libFw_Types.a
[  6%] Built target Fw_Types
[  6%] Building CXX object F-Prime/Fw/Logger/CMakeFiles/Fw_Logger.dir/Logger.cpp.obj
[  6%] Building CXX object F-Prime/Fw/Logger/CMakeFiles/Fw_Logger.dir/LogAssert.cpp.obj
[  6%] Linking CXX static library ../../../lib/rpipicow/libFw_Logger.a
[  6%] Built target Fw_Logger
[  7%] Building CXX object F-Prime/Fw/Obj/CMakeFiles/Fw_Obj.dir/ObjBase.cpp.obj
[  7%] Building CXX object F-Prime/Fw/Obj/CMakeFiles/Fw_Obj.dir/SimpleObjRegistry.cpp.obj
[  7%] Linking CXX static library ../../../lib/rpipicow/libFw_Obj.a
[  7%] Built target Fw_Obj
[  7%] Building CXX object F-Prime/Fw/Port/CMakeFiles/Fw_Port.dir/InputPortBase.cpp.obj
[  7%] Building CXX object F-Prime/Fw/Port/CMakeFiles/Fw_Port.dir/InputSerializePort.cpp.obj
[  7%] Building CXX object F-Prime/Fw/Port/CMakeFiles/Fw_Port.dir/OutputPortBase.cpp.obj
[  8%] Building CXX object F-Prime/Fw/Port/CMakeFiles/Fw_Port.dir/OutputSerializePort.cpp.obj
[  8%] Building CXX object F-Prime/Fw/Port/CMakeFiles/Fw_Port.dir/PortBase.cpp.obj
[  8%] Linking CXX static library ../../../lib/rpipicow/libFw_Port.a
[  8%] Built target Fw_Port
[  9%] Generating TimePortAi.xml
[  9%] Generating TimePortAc.cpp, TimePortAc.hpp
[  9%] Building CXX object F-Prime/Fw/Time/CMakeFiles/Fw_Time.dir/Time.cpp.obj
[  9%] Building CXX object F-Prime/Fw/Time/CMakeFiles/Fw_Time.dir/TimePortAc.cpp.obj
[  9%] Linking CXX static library ../../../lib/rpipicow/libFw_Time.a
[  9%] Built target Fw_Time
[ 10%] Generating ComPortAi.xml
[ 10%] Generating ComPortAc.cpp, ComPortAc.hpp
[ 10%] Building CXX object F-Prime/Fw/Com/CMakeFiles/Fw_Com.dir/ComPacket.cpp.obj
[ 10%] Building CXX object F-Prime/Fw/Com/CMakeFiles/Fw_Com.dir/ComBuffer.cpp.obj
[ 10%] Building CXX object F-Prime/Fw/Com/CMakeFiles/Fw_Com.dir/ComPortAc.cpp.obj
[ 11%] Linking CXX static library ../../../lib/rpipicow/libFw_Com.a
[ 11%] Built target Fw_Com
[ 12%] Generating TlmGetPortAi.xml, TlmPortAi.xml
[ 12%] Generating TlmGetPortAc.cpp, TlmGetPortAc.hpp, TlmPortAc.cpp, TlmPortAc.hpp
[ 12%] Building CXX object F-Prime/Fw/Tlm/CMakeFiles/Fw_Tlm.dir/TlmBuffer.cpp.obj
[ 12%] Building CXX object F-Prime/Fw/Tlm/CMakeFiles/Fw_Tlm.dir/TlmPacket.cpp.obj
[ 12%] Building CXX object F-Prime/Fw/Tlm/CMakeFiles/Fw_Tlm.dir/TlmString.cpp.obj
[ 13%] Building CXX object F-Prime/Fw/Tlm/CMakeFiles/Fw_Tlm.dir/TlmGetPortAc.cpp.obj
[ 13%] Building CXX object F-Prime/Fw/Tlm/CMakeFiles/Fw_Tlm.dir/TlmPortAc.cpp.obj
[ 13%] Linking CXX static library ../../../lib/rpipicow/libFw_Tlm.a
[ 13%] Built target Fw_Tlm
[ 13%] Generating LogPortAi.xml, LogSeverityEnumAi.xml, LogTextPortAi.xml
[ 13%] Generating LogPortAc.cpp, LogPortAc.hpp, LogSeverityEnumAc.cpp, LogSeverityEnumAc.hpp, LogTextPortAc.cpp, LogTextPortAc.hpp
[ 13%] Building CXX object F-Prime/Fw/Log/CMakeFiles/Fw_Log.dir/LogBuffer.cpp.obj
[ 14%] Building CXX object F-Prime/Fw/Log/CMakeFiles/Fw_Log.dir/LogPacket.cpp.obj
[ 14%] Building CXX object F-Prime/Fw/Log/CMakeFiles/Fw_Log.dir/LogString.cpp.obj
[ 14%] Building CXX object F-Prime/Fw/Log/CMakeFiles/Fw_Log.dir/TextLogString.cpp.obj
[ 14%] Building CXX object F-Prime/Fw/Log/CMakeFiles/Fw_Log.dir/LogPortAc.cpp.obj
[ 14%] Building CXX object F-Prime/Fw/Log/CMakeFiles/Fw_Log.dir/LogSeverityEnumAc.cpp.obj
[ 15%] Building CXX object F-Prime/Fw/Log/CMakeFiles/Fw_Log.dir/LogTextPortAc.cpp.obj
[ 15%] Linking CXX static library ../../../lib/rpipicow/libFw_Log.a
[ 15%] Built target Fw_Log
[ 16%] Generating CmdPortAi.xml, CmdRegPortAi.xml, CmdResponseEnumAi.xml, CmdResponsePortAi.xml
[ 16%] Generating CmdPortAc.cpp, CmdPortAc.hpp, CmdRegPortAc.cpp, CmdRegPortAc.hpp, CmdResponseEnumAc.cpp, CmdResponseEnumAc.hpp, CmdResponsePortAc.cpp, CmdResponsePortAc.hpp
[ 16%] Building CXX object F-Prime/Fw/Cmd/CMakeFiles/Fw_Cmd.dir/CmdArgBuffer.cpp.obj
[ 16%] Building CXX object F-Prime/Fw/Cmd/CMakeFiles/Fw_Cmd.dir/CmdPacket.cpp.obj
[ 16%] Building CXX object F-Prime/Fw/Cmd/CMakeFiles/Fw_Cmd.dir/CmdString.cpp.obj
[ 17%] Building CXX object F-Prime/Fw/Cmd/CMakeFiles/Fw_Cmd.dir/CmdPortAc.cpp.obj
[ 17%] Building CXX object F-Prime/Fw/Cmd/CMakeFiles/Fw_Cmd.dir/CmdRegPortAc.cpp.obj
[ 17%] Building CXX object F-Prime/Fw/Cmd/CMakeFiles/Fw_Cmd.dir/CmdResponseEnumAc.cpp.obj
[ 17%] Building CXX object F-Prime/Fw/Cmd/CMakeFiles/Fw_Cmd.dir/CmdResponsePortAc.cpp.obj
[ 17%] Linking CXX static library ../../../lib/rpipicow/libFw_Cmd.a
[ 17%] Built target Fw_Cmd
[ 17%] Generating ParamValidEnumAi.xml, PrmGetPortAi.xml, PrmSetPortAi.xml
[ 17%] Generating ParamValidEnumAc.cpp, ParamValidEnumAc.hpp, PrmGetPortAc.cpp, PrmGetPortAc.hpp, PrmSetPortAc.cpp, PrmSetPortAc.hpp
[ 17%] Building CXX object F-Prime/Fw/Prm/CMakeFiles/Fw_Prm.dir/PrmBuffer.cpp.obj
[ 18%] Building CXX object F-Prime/Fw/Prm/CMakeFiles/Fw_Prm.dir/PrmString.cpp.obj
[ 18%] Building CXX object F-Prime/Fw/Prm/CMakeFiles/Fw_Prm.dir/ParamValidEnumAc.cpp.obj
[ 18%] Building CXX object F-Prime/Fw/Prm/CMakeFiles/Fw_Prm.dir/PrmGetPortAc.cpp.obj
[ 18%] Building CXX object F-Prime/Fw/Prm/CMakeFiles/Fw_Prm.dir/PrmSetPortAc.cpp.obj
[ 18%] Linking CXX static library ../../../lib/rpipicow/libFw_Prm.a
[ 18%] Built target Fw_Prm
[ 18%] Generating BufferGetPortAi.xml, BufferSendPortAi.xml
[ 18%] Generating BufferGetPortAc.cpp, BufferGetPortAc.hpp, BufferSendPortAc.cpp, BufferSendPortAc.hpp
[ 18%] Building CXX object F-Prime/Fw/Buffer/CMakeFiles/Fw_Buffer.dir/Buffer.cpp.obj
[ 19%] Building CXX object F-Prime/Fw/Buffer/CMakeFiles/Fw_Buffer.dir/BufferGetPortAc.cpp.obj
[ 19%] Building CXX object F-Prime/Fw/Buffer/CMakeFiles/Fw_Buffer.dir/BufferSendPortAc.cpp.obj
[ 19%] Linking CXX static library ../../../lib/rpipicow/libFw_Buffer.a
[ 19%] Built target Fw_Buffer
[ 19%] Building CXX object F-Prime/Utils/Hash/CMakeFiles/Utils_Hash.dir/libcrc/CRC32.cpp.obj
[ 19%] Building C object F-Prime/Utils/Hash/CMakeFiles/Utils_Hash.dir/libcrc/lib_crc.c.obj
cc1: warning: command-line option '-std=c++17' is valid for C++/ObjC++ but not for C
[ 19%] Building CXX object F-Prime/Utils/Hash/CMakeFiles/Utils_Hash.dir/HashBufferCommon.cpp.obj
[ 19%] Building CXX object F-Prime/Utils/Hash/CMakeFiles/Utils_Hash.dir/HashCommon.cpp.obj
[ 20%] Linking CXX static library ../../../lib/rpipicow/libUtils_Hash.a
[ 20%] Built target Utils_Hash
[ 21%] Generating DpGetPortAi.xml, DpRequestPortAi.xml, DpResponsePortAi.xml, DpSendPortAi.xml, DpStateEnumAi.xml
[ 21%] Generating DpGetPortAc.cpp, DpGetPortAc.hpp, DpRequestPortAc.cpp, DpRequestPortAc.hpp, DpResponsePortAc.cpp, DpResponsePortAc.hpp, DpSendPortAc.cpp, DpSendPortAc.hpp, DpStateEnumAc.cpp, DpStateEnumAc.hpp
[ 21%] Building CXX object F-Prime/Fw/Dp/CMakeFiles/Fw_Dp.dir/DpContainer.cpp.obj
[ 21%] Building CXX object F-Prime/Fw/Dp/CMakeFiles/Fw_Dp.dir/DpGetPortAc.cpp.obj
[ 21%] Building CXX object F-Prime/Fw/Dp/CMakeFiles/Fw_Dp.dir/DpRequestPortAc.cpp.obj
[ 22%] Building CXX object F-Prime/Fw/Dp/CMakeFiles/Fw_Dp.dir/DpResponsePortAc.cpp.obj
[ 22%] Building CXX object F-Prime/Fw/Dp/CMakeFiles/Fw_Dp.dir/DpSendPortAc.cpp.obj
[ 22%] Building CXX object F-Prime/Fw/Dp/CMakeFiles/Fw_Dp.dir/DpStateEnumAc.cpp.obj
[ 22%] Linking CXX static library ../../../lib/rpipicow/libFw_Dp.a
[ 22%] Built target Fw_Dp
[ 22%] Building CXX object F-Prime/Fw/Comp/CMakeFiles/Fw_Comp.dir/PassiveComponentBase.cpp.obj
[ 22%] Linking CXX static library ../../../lib/rpipicow/libFw_Comp.a
[ 22%] Built target Fw_Comp
[ 22%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/TaskCommon.cpp.obj
[ 22%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/TaskString.cpp.obj
[ 22%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/QueueCommon.cpp.obj
[ 23%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/QueueString.cpp.obj
[ 23%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Baremetal/Queue.cpp.obj
[ 23%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Baremetal/Task.cpp.obj
[ 23%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Baremetal/File.cpp.obj
[ 23%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Baremetal/FileSystem.cpp.obj
[ 24%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Baremetal/IntervalTimer.cpp.obj
[ 24%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Baremetal/Mutex.cpp.obj
[ 24%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Pthreads/BufferQueueCommon.cpp.obj
[ 24%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Pthreads/FIFOBufferQueue.cpp.obj
[ 24%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/IntervalTimer.cpp.obj
cc1: warning: command-line option '-std=gnu++17' is valid for C++/ObjC++ but not for C
In file included from /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/Arduino.h:121,
                 from /home/user/Desktop/led-blinker/fprime-arduino/cmake/platform/FprimeArduino.hpp:9,
                 from /home/user/Desktop/led-blinker/fprime-arduino/Arduino/Os/IntervalTimer.cpp:7:
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/RP2040Support.h:189:48: warning: multi-character character constant [-Wmultichar]
  189 |         return (us * (clock_get_hz(clk_sys) / 1'000'000));
      |                                                ^~~~~
In file included from /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/api/../../../ArduinoCore-API/api/ArduinoAPI.h:39,
                 from /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/api/ArduinoAPI.h:2,
                 from /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/Arduino.h:28:
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/api/../../../ArduinoCore-API/api/WCharacter.h: In function 'bool arduino::isAscii(int)':
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/api/../../../ArduinoCore-API/api/WCharacter.h:66:12: error: 'isascii' was not declared in this scope; did you mean 'isAscii'?
   66 |   return ( isascii (c) == 0 ? false : true);
      |            ^~~~~~~
      |            isAscii
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/api/../../../ArduinoCore-API/api/WCharacter.h: In function 'int arduino::toAscii(int)':
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/api/../../../ArduinoCore-API/api/WCharacter.h:148:10: error: 'toascii' was not declared in this scope; did you mean 'toAscii'?
  148 |   return toascii (c);
      |          ^~~~~~~
      |          toAscii
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/RP2040Support.h: In static member function 'static int RP2040::usToPIOCycles(int)':
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/RP2040Support.h:189:48: error: expected ')' before '\x303030'
  189 |         return (us * (clock_get_hz(clk_sys) / 1'000'000));
      |                                                ^~~~~
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/RP2040Support.h:189:22: note: to match this '('
  189 |         return (us * (clock_get_hz(clk_sys) / 1'000'000));
      |                      ^
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/RP2040Support.h:189:58: error: expected ')' before ';' token
  189 |         return (us * (clock_get_hz(clk_sys) / 1'000'000));
      |                                                          ^
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/RP2040Support.h:189:16: note: to match this '('
  189 |         return (us * (clock_get_hz(clk_sys) / 1'000'000));
      |                ^
gmake[2]: *** [Arduino/Os/CMakeFiles/Arduino_Os.dir/build.make:244: Arduino/Os/CMakeFiles/Arduino_Os.dir/IntervalTimer.cpp.obj] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:4852: Arduino/Os/CMakeFiles/Arduino_Os.dir/all] Error 2
gmake: *** [Makefile:136: all] Error 2
[ERROR] CMake erred with return code 2

What am I missing now? And, by the way, there weren't in instruction this command "arduino-cli lib install Time" or I have missed something?

@ethancheez
Copy link
Collaborator

And, by the way, there weren't in instruction this command "arduino-cli lib install Time" or I have missed something?

The instructions for that are here.

As for the build error, it is caused by 1'000'000 which is a syntax error in the RP2040 package itself when using the standard lower than C++17 (I believe fprime uses C++11 by default). I should have forced the compiler to use C++17 standard here, but it looks like it may still be using an older standard.

When you run fprime-util generate rpipicow, there should be something at the beginning that looks like this:

-- The C compiler identification is GNU 12.3.0
-- The CXX compiler identification is GNU 12.3.0

What version is yours reporting?

@Gonta01
Copy link

Gonta01 commented Jul 10, 2024

The instructions for that are here.

Thank you. I have used this one and it seems to be deprecated.

What version is yours reporting?

(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker$ fprime-util generate
[INFO] Generating build directory at: /home/user/Desktop/led-blinker/build-fprime-automatic-rpipicow
[INFO] Using toolchain file /home/user/Desktop/led-blinker/fprime-arduino/cmake/toolchain/rpipicow.cmake for platform default
-- The C compiler identification is GNU 12.3.0
-- The CXX compiler identification is GNU 12.3.0

@Gonta01
Copy link

Gonta01 commented Jul 10, 2024

The suspicious is the following warning during build:
cc1: warning: command-line option '-std=gnu++17' is valid for C++/ObjC++ but not for C

@ethancheez
Copy link
Collaborator

What version is yours reporting?

Mine is also reporting GNU 12.3.0.

The suspicious is the following warning during build:
cc1: warning: command-line option '-std=gnu++17' is valid for C++/ObjC++ but not for C

I am also getting this, but mine successfully builds. I will try some tests to see if I can reproduce your error.

@Gonta01
Copy link

Gonta01 commented Jul 10, 2024

I will try some tests to see if I can reproduce your error.

Okay. I will be waiting for your feedback. I'm ready to give necessary information for you to reproduce the problem.

@ethancheez
Copy link
Collaborator

ethancheez commented Jul 10, 2024

Can you show me your output of pip list | grep fprime, cmake --version, and g++ --version? And also which branches are you on for both fprime and fprime-arduino?

@Gonta01
Copy link

Gonta01 commented Jul 10, 2024

(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker$ pip list | grep fprime
fprime-fpl-convert-xml    1.0.3
fprime-fpl-extract-xml    1.0.3
fprime-fpl-layout         1.0.3
fprime-fpl-write-pic      1.0.3
fprime-fpp-check          2.1.0a3
fprime-fpp-depend         2.1.0a3
fprime-fpp-filenames      2.1.0a3
fprime-fpp-format         2.1.0a3
fprime-fpp-from-xml       2.1.0a3
fprime-fpp-locate-defs    2.1.0a3
fprime-fpp-locate-uses    2.1.0a3
fprime-fpp-syntax         2.1.0a3
fprime-fpp-to-cpp         2.1.0a3
fprime-fpp-to-json        2.1.0a3
fprime-fpp-to-xml         2.1.0a3
fprime-gds                3.4.3
fprime-tools              3.4.4
fprime-visual             1.0.2
(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker$ cmake --version
cmake version 3.22.1

CMake suite maintained and supported by Kitware (kitware.com/cmake).
(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker$ g++ --version
g++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker/fprime-arduino$ git show-branch
* [devel] Fix $send escape for TcpClient
 ! [main] fprime v3.4.3 support
--
*  [devel] Fix $send escape for TcpClient
*  [devel^] Teensyduino 1.59 now uses C++17 standard
*  [devel~2] Ensure data is available in the stream before attempting to allocate/read
 - [main] fprime v3.4.3 support
-- [devel~3] bump to fprime v3.4.3
(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker/fprime$ git show-branch
[devel] Rename EventsInterface to EventInterface (#2792)

@ethancheez
Copy link
Collaborator

ethancheez commented Jul 10, 2024

Try out fprime release v3.4.3. In the fprime directory, run git checkout v3.4.3.

Edit: If that doesn't work, try edit fprime/cmake/settings.cmake line 16 to:

set(CMAKE_CXX_STANDARD 17)

This is only temporary, trying to see if the rpipicow.cmake is successfully setting the C++17 standard or not.

Edit 2: You can also try running sudo apt update && sudo apt upgrade -y. I have a slightly newer version of cmake. The others seem to match.

@Gonta01
Copy link

Gonta01 commented Jul 10, 2024

It seems that amount of errors decreased:

(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker$ fprime-util build
[  0%] Built target version
[  0%] Building CXX object LedBlinker/CMakeFiles/fprime_arduino_patcher.dir/__/fprime-arduino/cmake/toolchain/support/sources/extras.cpp.obj
[  1%] Linking CXX static library ../lib/rpipicow/libfprime_arduino_patcher.a
[  1%] Built target fprime_arduino_patcher
[  1%] Generating ProcTypeEnumAi.xml
[  2%] Generating FppConstantsAc.cpp, FppConstantsAc.hpp, ProcTypeEnumAc.cpp, ProcTypeEnumAc.hpp
[  2%] Building CXX object config/CMakeFiles/config.dir/FppConstantsAc.cpp.obj
[  2%] Building CXX object config/CMakeFiles/config.dir/ProcTypeEnumAc.cpp.obj
[  2%] Linking CXX static library ../lib/rpipicow/libconfig.a
[  2%] Built target config
[  2%] Building CXX object F-Prime/Fw/Cfg/CMakeFiles/Fw_Cfg.dir/ConfigCheck.cpp.obj
[  2%] Linking CXX static library ../../../lib/rpipicow/libFw_Cfg.a
[  2%] Built target Fw_Cfg
[  2%] Generating ActiveEnumAi.xml, DeserialStatusEnumAi.xml, DirectionEnumAi.xml, EnabledEnumAi.xml, HealthEnumAi.xml, LogicEnumAi.xml, OnEnumAi.xml, OpenEnumAi.xml, SerialStatusEnumAi.xml, SuccessEnumAi.xml
[  2%] Generating ActiveEnumAc.cpp, ActiveEnumAc.hpp, DeserialStatusEnumAc.cpp, DeserialStatusEnumAc.hpp, DirectionEnumAc.cpp, DirectionEnumAc.hpp, EnabledEnumAc.cpp, EnabledEnumAc.hpp, HealthEnumAc.cpp, HealthEnumAc.hpp, LogicEnumAc.cpp, LogicEnumAc.hpp, OnEnumAc.cpp, OnEnumAc.hpp, OpenEnumAc.cpp, OpenEnumAc.hpp, SerialStatusEnumAc.cpp, SerialStatusEnumAc.hpp, SuccessEnumAc.cpp, SuccessEnumAc.hpp
[  2%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/Assert.cpp.obj
[  3%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/String.cpp.obj
[  3%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/InternalInterfaceString.cpp.obj
[  3%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/MallocAllocator.cpp.obj
[  3%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/MemAllocator.cpp.obj
[  3%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/PolyType.cpp.obj
[  4%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/SerialBuffer.cpp.obj
[  4%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/Serializable.cpp.obj
[  4%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/StringType.cpp.obj
[  4%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/StringUtils.cpp.obj
[  4%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/ActiveEnumAc.cpp.obj
[  5%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/DeserialStatusEnumAc.cpp.obj
[  5%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/DirectionEnumAc.cpp.obj
[  5%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/EnabledEnumAc.cpp.obj
[  5%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/HealthEnumAc.cpp.obj
[  5%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/LogicEnumAc.cpp.obj
[  6%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/OnEnumAc.cpp.obj
[  6%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/OpenEnumAc.cpp.obj
[  6%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/SerialStatusEnumAc.cpp.obj
[  6%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/SuccessEnumAc.cpp.obj
[  6%] Linking CXX static library ../../../lib/rpipicow/libFw_Types.a
[  6%] Built target Fw_Types
[  6%] Building CXX object F-Prime/Fw/Logger/CMakeFiles/Fw_Logger.dir/Logger.cpp.obj
[  6%] Building CXX object F-Prime/Fw/Logger/CMakeFiles/Fw_Logger.dir/LogAssert.cpp.obj
[  6%] Linking CXX static library ../../../lib/rpipicow/libFw_Logger.a
[  6%] Built target Fw_Logger
[  7%] Building CXX object F-Prime/Fw/Obj/CMakeFiles/Fw_Obj.dir/ObjBase.cpp.obj
[  7%] Building CXX object F-Prime/Fw/Obj/CMakeFiles/Fw_Obj.dir/SimpleObjRegistry.cpp.obj
[  7%] Linking CXX static library ../../../lib/rpipicow/libFw_Obj.a
[  7%] Built target Fw_Obj
[  7%] Building CXX object F-Prime/Fw/Port/CMakeFiles/Fw_Port.dir/InputPortBase.cpp.obj
[  7%] Building CXX object F-Prime/Fw/Port/CMakeFiles/Fw_Port.dir/InputSerializePort.cpp.obj
[  7%] Building CXX object F-Prime/Fw/Port/CMakeFiles/Fw_Port.dir/OutputPortBase.cpp.obj
[  8%] Building CXX object F-Prime/Fw/Port/CMakeFiles/Fw_Port.dir/OutputSerializePort.cpp.obj
[  8%] Building CXX object F-Prime/Fw/Port/CMakeFiles/Fw_Port.dir/PortBase.cpp.obj
[  8%] Linking CXX static library ../../../lib/rpipicow/libFw_Port.a
[  8%] Built target Fw_Port
[  9%] Generating TimePortAi.xml
[  9%] Generating TimePortAc.cpp, TimePortAc.hpp
[  9%] Building CXX object F-Prime/Fw/Time/CMakeFiles/Fw_Time.dir/Time.cpp.obj
[  9%] Building CXX object F-Prime/Fw/Time/CMakeFiles/Fw_Time.dir/TimePortAc.cpp.obj
[  9%] Linking CXX static library ../../../lib/rpipicow/libFw_Time.a
[  9%] Built target Fw_Time
[ 10%] Generating ComPortAi.xml
[ 10%] Generating ComPortAc.cpp, ComPortAc.hpp
[ 10%] Building CXX object F-Prime/Fw/Com/CMakeFiles/Fw_Com.dir/ComPacket.cpp.obj
[ 10%] Building CXX object F-Prime/Fw/Com/CMakeFiles/Fw_Com.dir/ComBuffer.cpp.obj
[ 10%] Building CXX object F-Prime/Fw/Com/CMakeFiles/Fw_Com.dir/ComPortAc.cpp.obj
[ 11%] Linking CXX static library ../../../lib/rpipicow/libFw_Com.a
[ 11%] Built target Fw_Com
[ 12%] Generating TlmGetPortAi.xml, TlmPortAi.xml
[ 12%] Generating TlmGetPortAc.cpp, TlmGetPortAc.hpp, TlmPortAc.cpp, TlmPortAc.hpp
[ 12%] Building CXX object F-Prime/Fw/Tlm/CMakeFiles/Fw_Tlm.dir/TlmBuffer.cpp.obj
[ 12%] Building CXX object F-Prime/Fw/Tlm/CMakeFiles/Fw_Tlm.dir/TlmPacket.cpp.obj
[ 12%] Building CXX object F-Prime/Fw/Tlm/CMakeFiles/Fw_Tlm.dir/TlmString.cpp.obj
[ 13%] Building CXX object F-Prime/Fw/Tlm/CMakeFiles/Fw_Tlm.dir/TlmGetPortAc.cpp.obj
[ 13%] Building CXX object F-Prime/Fw/Tlm/CMakeFiles/Fw_Tlm.dir/TlmPortAc.cpp.obj
[ 13%] Linking CXX static library ../../../lib/rpipicow/libFw_Tlm.a
[ 13%] Built target Fw_Tlm
[ 13%] Generating LogPortAi.xml, LogSeverityEnumAi.xml, LogTextPortAi.xml
[ 13%] Generating LogPortAc.cpp, LogPortAc.hpp, LogSeverityEnumAc.cpp, LogSeverityEnumAc.hpp, LogTextPortAc.cpp, LogTextPortAc.hpp
[ 13%] Building CXX object F-Prime/Fw/Log/CMakeFiles/Fw_Log.dir/LogBuffer.cpp.obj
[ 14%] Building CXX object F-Prime/Fw/Log/CMakeFiles/Fw_Log.dir/LogPacket.cpp.obj
[ 14%] Building CXX object F-Prime/Fw/Log/CMakeFiles/Fw_Log.dir/LogString.cpp.obj
[ 14%] Building CXX object F-Prime/Fw/Log/CMakeFiles/Fw_Log.dir/TextLogString.cpp.obj
[ 14%] Building CXX object F-Prime/Fw/Log/CMakeFiles/Fw_Log.dir/LogPortAc.cpp.obj
[ 14%] Building CXX object F-Prime/Fw/Log/CMakeFiles/Fw_Log.dir/LogSeverityEnumAc.cpp.obj
[ 15%] Building CXX object F-Prime/Fw/Log/CMakeFiles/Fw_Log.dir/LogTextPortAc.cpp.obj
[ 15%] Linking CXX static library ../../../lib/rpipicow/libFw_Log.a
[ 15%] Built target Fw_Log
[ 16%] Generating CmdPortAi.xml, CmdRegPortAi.xml, CmdResponseEnumAi.xml, CmdResponsePortAi.xml
[ 16%] Generating CmdPortAc.cpp, CmdPortAc.hpp, CmdRegPortAc.cpp, CmdRegPortAc.hpp, CmdResponseEnumAc.cpp, CmdResponseEnumAc.hpp, CmdResponsePortAc.cpp, CmdResponsePortAc.hpp
[ 16%] Building CXX object F-Prime/Fw/Cmd/CMakeFiles/Fw_Cmd.dir/CmdArgBuffer.cpp.obj
[ 16%] Building CXX object F-Prime/Fw/Cmd/CMakeFiles/Fw_Cmd.dir/CmdPacket.cpp.obj
[ 16%] Building CXX object F-Prime/Fw/Cmd/CMakeFiles/Fw_Cmd.dir/CmdString.cpp.obj
[ 17%] Building CXX object F-Prime/Fw/Cmd/CMakeFiles/Fw_Cmd.dir/CmdPortAc.cpp.obj
[ 17%] Building CXX object F-Prime/Fw/Cmd/CMakeFiles/Fw_Cmd.dir/CmdRegPortAc.cpp.obj
[ 17%] Building CXX object F-Prime/Fw/Cmd/CMakeFiles/Fw_Cmd.dir/CmdResponseEnumAc.cpp.obj
[ 17%] Building CXX object F-Prime/Fw/Cmd/CMakeFiles/Fw_Cmd.dir/CmdResponsePortAc.cpp.obj
[ 17%] Linking CXX static library ../../../lib/rpipicow/libFw_Cmd.a
[ 17%] Built target Fw_Cmd
[ 17%] Generating ParamValidEnumAi.xml, PrmGetPortAi.xml, PrmSetPortAi.xml
[ 17%] Generating ParamValidEnumAc.cpp, ParamValidEnumAc.hpp, PrmGetPortAc.cpp, PrmGetPortAc.hpp, PrmSetPortAc.cpp, PrmSetPortAc.hpp
[ 17%] Building CXX object F-Prime/Fw/Prm/CMakeFiles/Fw_Prm.dir/PrmBuffer.cpp.obj
[ 18%] Building CXX object F-Prime/Fw/Prm/CMakeFiles/Fw_Prm.dir/PrmString.cpp.obj
[ 18%] Building CXX object F-Prime/Fw/Prm/CMakeFiles/Fw_Prm.dir/ParamValidEnumAc.cpp.obj
[ 18%] Building CXX object F-Prime/Fw/Prm/CMakeFiles/Fw_Prm.dir/PrmGetPortAc.cpp.obj
[ 18%] Building CXX object F-Prime/Fw/Prm/CMakeFiles/Fw_Prm.dir/PrmSetPortAc.cpp.obj
[ 18%] Linking CXX static library ../../../lib/rpipicow/libFw_Prm.a
[ 18%] Built target Fw_Prm
[ 18%] Generating BufferGetPortAi.xml, BufferSendPortAi.xml
[ 18%] Generating BufferGetPortAc.cpp, BufferGetPortAc.hpp, BufferSendPortAc.cpp, BufferSendPortAc.hpp
[ 18%] Building CXX object F-Prime/Fw/Buffer/CMakeFiles/Fw_Buffer.dir/Buffer.cpp.obj
[ 19%] Building CXX object F-Prime/Fw/Buffer/CMakeFiles/Fw_Buffer.dir/BufferGetPortAc.cpp.obj
[ 19%] Building CXX object F-Prime/Fw/Buffer/CMakeFiles/Fw_Buffer.dir/BufferSendPortAc.cpp.obj
[ 19%] Linking CXX static library ../../../lib/rpipicow/libFw_Buffer.a
[ 19%] Built target Fw_Buffer
[ 19%] Building CXX object F-Prime/Utils/Hash/CMakeFiles/Utils_Hash.dir/libcrc/CRC32.cpp.obj
[ 19%] Building C object F-Prime/Utils/Hash/CMakeFiles/Utils_Hash.dir/libcrc/lib_crc.c.obj
cc1: warning: command-line option '-std=c++17' is valid for C++/ObjC++ but not for C
[ 19%] Building CXX object F-Prime/Utils/Hash/CMakeFiles/Utils_Hash.dir/HashBufferCommon.cpp.obj
[ 19%] Building CXX object F-Prime/Utils/Hash/CMakeFiles/Utils_Hash.dir/HashCommon.cpp.obj
[ 20%] Linking CXX static library ../../../lib/rpipicow/libUtils_Hash.a
[ 20%] Built target Utils_Hash
[ 21%] Generating DpGetPortAi.xml, DpRequestPortAi.xml, DpResponsePortAi.xml, DpSendPortAi.xml, DpStateEnumAi.xml
[ 21%] Generating DpGetPortAc.cpp, DpGetPortAc.hpp, DpRequestPortAc.cpp, DpRequestPortAc.hpp, DpResponsePortAc.cpp, DpResponsePortAc.hpp, DpSendPortAc.cpp, DpSendPortAc.hpp, DpStateEnumAc.cpp, DpStateEnumAc.hpp
[ 21%] Building CXX object F-Prime/Fw/Dp/CMakeFiles/Fw_Dp.dir/DpContainer.cpp.obj
[ 21%] Building CXX object F-Prime/Fw/Dp/CMakeFiles/Fw_Dp.dir/DpGetPortAc.cpp.obj
[ 21%] Building CXX object F-Prime/Fw/Dp/CMakeFiles/Fw_Dp.dir/DpRequestPortAc.cpp.obj
[ 22%] Building CXX object F-Prime/Fw/Dp/CMakeFiles/Fw_Dp.dir/DpResponsePortAc.cpp.obj
[ 22%] Building CXX object F-Prime/Fw/Dp/CMakeFiles/Fw_Dp.dir/DpSendPortAc.cpp.obj
[ 22%] Building CXX object F-Prime/Fw/Dp/CMakeFiles/Fw_Dp.dir/DpStateEnumAc.cpp.obj
[ 22%] Linking CXX static library ../../../lib/rpipicow/libFw_Dp.a
[ 22%] Built target Fw_Dp
[ 22%] Building CXX object F-Prime/Fw/Comp/CMakeFiles/Fw_Comp.dir/PassiveComponentBase.cpp.obj
[ 22%] Linking CXX static library ../../../lib/rpipicow/libFw_Comp.a
[ 22%] Built target Fw_Comp
[ 22%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/TaskCommon.cpp.obj
[ 22%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/TaskString.cpp.obj
[ 22%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/QueueCommon.cpp.obj
[ 23%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/QueueString.cpp.obj
[ 23%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Baremetal/Queue.cpp.obj
[ 23%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Baremetal/Task.cpp.obj
[ 23%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Baremetal/File.cpp.obj
[ 23%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Baremetal/FileSystem.cpp.obj
[ 24%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Baremetal/IntervalTimer.cpp.obj
[ 24%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Baremetal/Mutex.cpp.obj
[ 24%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Pthreads/BufferQueueCommon.cpp.obj
[ 24%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Pthreads/FIFOBufferQueue.cpp.obj
[ 24%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/IntervalTimer.cpp.obj
cc1: warning: command-line option '-std=gnu++17' is valid for C++/ObjC++ but not for C
In file included from /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/api/../../../ArduinoCore-API/api/ArduinoAPI.h:39,
                 from /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/api/ArduinoAPI.h:2,
                 from /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/Arduino.h:28,
                 from /home/user/Desktop/led-blinker/fprime-arduino/cmake/platform/FprimeArduino.hpp:9,
                 from /home/user/Desktop/led-blinker/fprime-arduino/Arduino/Os/IntervalTimer.cpp:7:
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/api/../../../ArduinoCore-API/api/WCharacter.h: In function 'bool arduino::isAscii(int)':
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/api/../../../ArduinoCore-API/api/WCharacter.h:66:12: error: 'isascii' was not declared in this scope; did you mean 'isAscii'?
   66 |   return ( isascii (c) == 0 ? false : true);
      |            ^~~~~~~
      |            isAscii
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/api/../../../ArduinoCore-API/api/WCharacter.h: In function 'int arduino::toAscii(int)':
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/api/../../../ArduinoCore-API/api/WCharacter.h:148:10: error: 'toascii' was not declared in this scope; did you mean 'toAscii'?
  148 |   return toascii (c);
      |          ^~~~~~~
      |          toAscii
gmake[2]: *** [Arduino/Os/CMakeFiles/Arduino_Os.dir/build.make:244: Arduino/Os/CMakeFiles/Arduino_Os.dir/IntervalTimer.cpp.obj] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:4852: Arduino/Os/CMakeFiles/Arduino_Os.dir/all] Error 2
gmake: *** [Makefile:136: all] Error 2
[ERROR] CMake erred with return code 2

@Gonta01
Copy link

Gonta01 commented Jul 10, 2024

It seems to me that errors related to "1'000'000" disappeared after I modified settings.cmake. But it doesn't recognize toascii function

@Gonta01
Copy link

Gonta01 commented Jul 10, 2024

I have made brute force fix of the problem by replacing isascii (c) == 0 with ((c) & ~0x7f) != 0 and toascii(c) with ((c) & 0x7f).
I have decided to do it based on discussion WCharacter.h - isascii not declared in this scope on arm-none-eabi . The discussion ended with the following fix

@Gonta01
Copy link

Gonta01 commented Jul 10, 2024

@ethancheez what is you fprime-util version-check and arduino-cli version?

fprime-util version-check:

(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker$ fprime-util version-check
Operating System: Linux
CPU Architecture: x86_64
Platform: Linux-6.5.0-41-generic-x86_64-with-glibc2.35
Python version: 3.10.12
CMake version: 3.22.1
Pip version: 24.1.2
Pip packages:
    fprime-tools==3.4.4
    fprime-gds==3.4.3
    fprime-fpp-*==2.1.0a3

arduino-cli version:

(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker$ arduino-cli version
arduino-cli  Version: 1.0.2 Commit: 33dfa8e8 Date: 2024-07-02T12:53:01Z

@ethancheez
Copy link
Collaborator

@ethancheez what is you fprime-util version-check and arduino-cli version?

Operating System: Linux
CPU Architecture: x86_64
Platform: Linux-4.4.0-22621-Microsoft-x86_64-with-glibc2.35
Python version: 3.10.12
CMake version: 3.29.6
Pip version: 24.1.2
Pip packages:
    fprime-tools==3.4.4
    fprime-gds==3.4.3
    fprime-fpp-*==2.1.0a3
arduino-cli  Version: 1.0.2 Commit: 33dfa8e8 Date: 2024-07-02T12:53:01Z

Let's try some things to avoid having to edit the RP2040 package files and fprime core files. In fprime-arduino/cmake/toolchain/rpipicow.cmake line 17, change it to:

add_compile_options(-D_BOARD_RPIPICOW -DUSE_BASIC_TIMER -D_GNU_SOURCE)

@Gonta01
Copy link

Gonta01 commented Jul 11, 2024

Let's try some things to avoid having to edit the RP2040 package files and fprime core files. In fprime-arduino/cmake/toolchain/rpipicow.cmake line 17, change it to:

add_compile_options(-D_BOARD_RPIPICOW -DUSE_BASIC_TIMER -D_GNU_SOURCE)

It seems to fix problem with isascii and toascii functions, but the problem with c++ standards remains(I have returned original value in fprime/cmake/settings.cmake ):

cc1: warning: command-line option '-std=gnu++17' is valid for C++/ObjC++ but not for C
In file included from /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/Arduino.h:121,
                 from /home/user/Desktop/TestingLed/fprime-arduino/cmake/platform/FprimeArduino.hpp:9,
                 from /home/user/Desktop/TestingLed/fprime-arduino/Arduino/Os/IntervalTimer.cpp:7:
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/RP2040Support.h:189:48: warning: multi-character character constant [-Wmultichar]
  189 |         return (us * (clock_get_hz(clk_sys) / 1'000'000));
      |                                                ^~~~~
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/RP2040Support.h: In static member function 'static int RP2040::usToPIOCycles(int)':
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/RP2040Support.h:189:48: error: expected ')' before '\x303030'
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/RP2040Support.h:189:22: note: to match this '('
  189 |         return (us * (clock_get_hz(clk_sys) / 1'000'000));
      |                      ^
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/RP2040Support.h:189:58: error: expected ')' before ';' token
  189 |         return (us * (clock_get_hz(clk_sys) / 1'000'000));
      |                                                          ^
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/RP2040Support.h:189:16: note: to match this '('
  189 |         return (us * (clock_get_hz(clk_sys) / 1'000'000));
      |                ^
gmake[2]: *** [Arduino/Os/CMakeFiles/Arduino_Os.dir/build.make:244: Arduino/Os/CMakeFiles/Arduino_Os.dir/IntervalTimer.cpp.obj] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:4852: Arduino/Os/CMakeFiles/Arduino_Os.dir/all] Error 2
gmake: *** [Makefile:136: all] Error 2
[ERROR] CMake erred with return code 2

@ethancheez
Copy link
Collaborator

ethancheez commented Jul 11, 2024

Can you try changing to this in the rpipicow.cmake file:

add_compile_options(-std=c++17 -std=gnu++17 -std=gnu17) # Force C++17 standard

This will add a bunch of warnings saying something like command-line option '-std=gnu17' is valid for C/ObjC but not for C++, you can ignore it since the -std=gnu++17 should handle C++

Edit: Also try to remove all the flags except the -std=c++17 flag

add_compile_options(-std=c++17) # Force C++17 standard

@Gonta01
Copy link

Gonta01 commented Jul 12, 2024

@ethancheez, neither the first approach, nor the second one helped. By the way, was you able to reproduce this issue on your side? Is this only on my side?

@ethancheez
Copy link
Collaborator

ethancheez commented Jul 12, 2024

@ethancheez, neither the first approach, nor the second one helped. By the way, was you able to reproduce this issue on your side? Is this only on my side?

I was not able to reproduce it. I tried a completely new Ubuntu VM and reinstalled everything and successfully builds. Do you mind listing the steps you took to create your project?

These were my steps (the important parts). If you followed the tutorial step by step, you would run fprime-bootstrap project instead of fprime-bootstrap clone

python -m venv ~/venv/fprime
. ~/venv/fprime/bin/activate
pip install fprime-bootstrap
fprime-bootstrap clone https://github.com/fprime-community/fprime-tutorial-arduino-blinker.git
cd fprime-tutorial-arduino-blinker
. ~/fprime-venv/bin/activate

curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | BINDIR=$VIRTUAL_ENV/bin sh
pip install arduino-cli-cmake-wrapper

arduino-cli config init
arduino-cli config add board_manager.additional_urls https://www.pjrc.com/teensy/package_teensy_index.json
arduino-cli config add board_manager.additional_urls https://adafruit.github.io/arduino-board-index/package_adafruit_index.json
arduino-cli config add board_manager.additional_urls https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
arduino-cli config add board_manager.additional_urls https://mcudude.github.io/MegaCore/package_MCUdude_MegaCore_index.json
arduino-cli config add board_manager.additional_urls https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

arduino-cli core update-index
arduino-cli core install teensy:avr
arduino-cli core install adafruit:samd
arduino-cli core install esp32:esp32
arduino-cli core install MegaCore:avr
arduino-cli core install rp2040:rp2040

arduino-cli lib install Time

fprime-util generate rpipicow
fprime-util build rpipicow -j8

@Gonta01
Copy link

Gonta01 commented Jul 23, 2024

@ethancheez, neither the first approach, nor the second one helped. By the way, was you able to reproduce this issue on your side? Is this only on my side?

I was not able to reproduce it. I tried a completely new Ubuntu VM and reinstalled everything and successfully builds. Do you mind listing the steps you took to create your project?

These were my steps (the important parts). If you followed the tutorial step by step, you would run fprime-bootstrap project instead of fprime-bootstrap clone

python -m venv ~/venv/fprime
. ~/venv/fprime/bin/activate
pip install fprime-bootstrap
fprime-bootstrap clone https://github.com/fprime-community/fprime-tutorial-arduino-blinker.git
cd fprime-tutorial-arduino-blinker
. ~/fprime-venv/bin/activate

curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | BINDIR=$VIRTUAL_ENV/bin sh
pip install arduino-cli-cmake-wrapper

arduino-cli config init
arduino-cli config add board_manager.additional_urls https://www.pjrc.com/teensy/package_teensy_index.json
arduino-cli config add board_manager.additional_urls https://adafruit.github.io/arduino-board-index/package_adafruit_index.json
arduino-cli config add board_manager.additional_urls https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
arduino-cli config add board_manager.additional_urls https://mcudude.github.io/MegaCore/package_MCUdude_MegaCore_index.json
arduino-cli config add board_manager.additional_urls https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

arduino-cli core update-index
arduino-cli core install teensy:avr
arduino-cli core install adafruit:samd
arduino-cli core install esp32:esp32
arduino-cli core install MegaCore:avr
arduino-cli core install rp2040:rp2040

arduino-cli lib install Time

fprime-util generate rpipicow
fprime-util build rpipicow -j8

Followed through your steps and faced with the same problem:

(fprime-venv) user@user-VirtualBox:~/Desktop/fprime-tutorial-arduino-blinker$ fprime-util generate rpipicow

[INFO] Generating build directory at: /home/user/Desktop/fprime-tutorial-arduino-blinker/build-fprime-automatic-rpipicow

[INFO] Using toolchain file /home/user/Desktop/fprime-tutorial-arduino-blinker/fprime-arduino/cmake/toolchain/rpipicow.cmake for platform rpipicow

-- The C compiler identification is GNU 12.3.0

-- The CXX compiler identification is GNU 12.3.0

-- Detecting C compiler ABI info

-- Detecting C compiler ABI info - done

-- Check for working C compiler: /home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/arm-none-eabi-gcc - skipped

-- Detecting C compile features

-- Detecting C compile features - done

-- Detecting CXX compiler ABI info

-- Detecting CXX compiler ABI info - done

-- Check for working CXX compiler: /home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/arm-none-eabi-g++ - skipped

-- Detecting CXX compile features

-- Detecting CXX compile features - done

-- [python3] python3 found at: /home/user/Desktop/fprime-tutorial-arduino-blinker/fprime-venv/bin/python3

-- [fpp-tools] fpp-depend found at: /home/user/Desktop/fprime-tutorial-arduino-blinker/fprime-venv/bin/fpp-depend

-- [fpp-tools] fpp-to-xml found at: /home/user/Desktop/fprime-tutorial-arduino-blinker/fprime-venv/bin/fpp-to-xml

-- [fpp-tools] fpp-to-cpp found at: /home/user/Desktop/fprime-tutorial-arduino-blinker/fprime-venv/bin/fpp-to-cpp

-- [fpp-tools] fpp-locate-defs found at: /home/user/Desktop/fprime-tutorial-arduino-blinker/fprime-venv/bin/fpp-locate-defs

-- [FPRIME] Module locations: /home/user/Desktop/fprime-tutorial-arduino-blinker/fprime;/home/user/Desktop/fprime-tutorial-arduino-blinker/fprime-arduino;/home/user/Desktop/fprime-tutorial-arduino-blinker

-- [FPRIME] Configuration module: /home/user/Desktop/fprime-tutorial-arduino-blinker/config

-- [FPRIME] Installation directory: /home/user/Desktop/fprime-tutorial-arduino-blinker/build-artifacts

-- Target build toolchain/platform: rpipicow/ArduinoFw

-- Including /home/user/Desktop/fprime-tutorial-arduino-blinker/fprime-arduino/cmake/platform/ArduinoFw.cmake

-- [fprime-arduino] Including Types Directory: /home/user/Desktop/fprime-tutorial-arduino-blinker/fprime-arduino/cmake/platform/types/arm

-- [LIBRARY] Including library fprime-arduino at /home/user/Desktop/fprime-tutorial-arduino-blinker/fprime-arduino

-- [sub-build] Performing sub-build: info-cache

-- [sub-build] Generating: info-cache with target/fpp_locs;target/fpp_depend

-- [sub-build] Executing: info-cache with fpp_locs

-- [sub-build] Executing: info-cache with fpp_depend

-- [sub-build] Performing sub-build: info-cache - DONE

-- [LIBRARY] Adding modules from F´ framework

-- Adding Library: config

-- Adding Library: Fw_Buffer

-- Adding Library: Fw_Cmd

-- Adding Library: Fw_Com

-- Adding Library: Fw_Dp

-- Adding Library: Fw_Log

-- Adding Library: Fw_Logger

-- Adding Library: Fw_Prm

-- Adding Library: Fw_Time

-- Adding Library: Fw_Tlm

-- Adding Library: Fw_Cfg

-- Adding Library: Fw_Comp

-- Adding Library: Fw_CompQueued

-- Adding Library: Fw_FilePacket

-- Adding Library: Fw_Obj

-- Adding Library: Fw_Port

-- Adding Library: Fw_Ports_SuccessCondition

-- Adding Library: Fw_SerializableFile

-- Adding Library: Fw_Test

-- Adding Library: Fw_Types

-- Adding Library: Svc_Cycle

-- Adding Library: Svc_Fatal

-- Adding Library: Svc_Ping

-- Adding Library: Svc_PolyIf

-- Adding Library: Svc_Sched

-- Adding Library: Svc_Seq

-- Adding Library: Svc_WatchDog

-- Adding Library: Svc_ActiveLogger

-- Adding Library: Svc_ActiveRateGroup

-- Adding Library: Svc_AssertFatalAdapter

-- Neither toolchain rpipicow nor platform ArduinoFw supported for module Svc_BufferAccumulator

-- Adding Library: Svc_BufferManager

-- Adding Library: Svc_BufferLogger

-- Adding Library: Svc_BufferRepeater

-- Adding Library: Svc_ComLogger

-- Adding Library: Svc_ComQueue

-- Adding Library: Svc_ComSplitter

-- Adding Library: Svc_ComStub

-- Adding Library: Svc_CmdDispatcher

-- Adding Library: Svc_CmdSequencer

-- Adding Library: Svc_CmdSplitter

-- Adding Library: Svc_Deframer

-- Adding Library: Svc_FatalHandler

-- Adding Library: Svc_FileDownlinkPorts

-- Adding Library: Svc_FileDownlink

-- Adding Library: Svc_FileManager

-- Adding Library: Svc_FileUplink

-- Adding Library: Svc_GenericHub

-- Adding Library: Svc_GroundInterface

-- Adding Library: Svc_Framer

-- Adding Library: Svc_FramingProtocol

-- Adding Library: Svc_Health

-- Adding Library: Svc_PassiveRateGroup

-- Adding Library: Svc_PolyDb

-- Adding Library: Svc_PrmDb

-- Adding Library: Svc_RateGroupDriver

-- Adding Library: Svc_StaticMemory

-- Adding Library: Svc_TlmChan

-- Adding Library: Svc_TlmPacketizer

-- Adding Library: Svc_SystemResources

-- Adding Library: Svc_PassiveConsoleTextLogger

-- Adding Library: Svc_ActiveTextLogger

-- Adding Library: Os_Baremetal_TaskRunner

-- Adding Library: Os

-- Adding Library: Drv_DataTypes

-- Adding Library: Drv_GpioDriverPorts

-- Adding Library: Drv_SpiDriverPorts

-- Adding Library: Drv_I2cDriverPorts

-- Adding Library: Drv_BlockDriver

-- Adding Library: Drv_ByteStreamDriverModel

-- Neither toolchain rpipicow nor platform ArduinoFw supported for module Drv_LinuxGpioDriver

-- Neither toolchain rpipicow nor platform ArduinoFw supported for module Drv_LinuxUartDriver

-- Neither toolchain rpipicow nor platform ArduinoFw supported for module Drv_LinuxSpiDriver

-- Neither toolchain rpipicow nor platform ArduinoFw supported for module Drv_LinuxI2cDriver

-- 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

-- [LIBRARY] Adding modules from fprime-arduino

-- Adding Library: Arduino_Os

-- Adding Library: Arduino_ArduinoTime

-- Adding Library: Arduino_Drv_GpioDriver

-- Adding Library: Arduino_Drv_StreamDriver

-- Adding Library: Arduino_Drv_I2cDriver

-- Adding Library: Arduino_Drv_SpiDriver

-- Adding Library: Arduino_Drv_PwmDriver

-- Adding Library: Arduino_Drv_TcpClient

-- Adding Library: Arduino_Drv_HardwareRateDriver

-- Adding Library: Arduino_Drv_AnalogDriver

-- [LIBRARY] Adding modules from fprime-arduino - DONE

-- Adding Library: Components_Led

-- Adding Library: LedBlinker_Top

-- Adding Deployment: LedBlinker

-- Adding Arduino Library Flag: -Wl,--start-group

-- Adding Arduino Library: Wire

-- Adding Arduino Library: SPI

-- Adding Arduino Library: WiFi

-- Adding Arduino Library: lwIP_CYW43

-- Adding Arduino Library: lwIP_Ethernet

-- Adding Arduino Library: Updater

-- Adding Arduino Library: MD5Builder

-- Adding Arduino Library: LittleFS

-- Adding Arduino Library: PicoOTA

-- Adding Arduino Library: core

-- Adding Arduino Library: libpico

-- Adding Arduino Library: libpicow-noipv6-nobtc-noble

-- Adding Arduino Library: libbearssl

-- Adding Arduino Library Flag: -lm

-- Adding Arduino Library Flag: -lc

-- Adding Arduino Library Flag: -lstdc++

-- Adding Arduino Library Flag: -lc

-- Adding Arduino Library Flag: -Wl,--end-group

-- Configuring done

-- Generating done

-- Build files have been written to: /home/user/Desktop/fprime-tutorial-arduino-blinker/build-fprime-automatic-rpipicow

(fprime-venv) user@user-VirtualBox:~/Desktop/fprime-tutorial-arduino-blinker$ fprime-util build rpipicow -j8

[  0%] Building CXX object LedBlinker/CMakeFiles/fprime_arduino_patcher.dir/__/fprime-arduino/cmake/toolchain/support/sources/extras.cpp.obj

[  3%] Built target codegen

[  4%] Linking CXX static library ../lib/rpipicow/libfprime_arduino_patcher.a

[  4%] Built target version

[  4%] Built target fprime_arduino_patcher

[  5%] Generating FppConstantsAc.cpp, FppConstantsAc.hpp, ProcTypeEnumAc.cpp, ProcTypeEnumAc.hpp

[  5%] Generating ProcTypeEnumAi.xml

[  5%] Building CXX object config/CMakeFiles/config.dir/ProcTypeEnumAc.cpp.obj

[  5%] Building CXX object config/CMakeFiles/config.dir/FppConstantsAc.cpp.obj

[  5%] Linking CXX static library ../lib/rpipicow/libconfig.a

[  5%] Built target config

[  5%] Building CXX object F-Prime/Fw/Cfg/CMakeFiles/Fw_Cfg.dir/ConfigCheck.cpp.obj

[  5%] Linking CXX static library ../../../lib/rpipicow/libFw_Cfg.a

[  5%] Built target Fw_Cfg

[  6%] Generating ActiveEnumAc.cpp, ActiveEnumAc.hpp, DeserialStatusEnumAc.cpp, DeserialStatusEnumAc.hpp, DirectionEnumAc.cpp, DirectionEnumAc.hpp, EnabledEnumAc.cpp, EnabledEnumAc.hpp, HealthEnumAc.cpp, HealthEnumAc.hpp, LogicEnumAc.cpp, LogicEnumAc.hpp, OnEnumAc.cpp, OnEnumAc.hpp, OpenEnumAc.cpp, OpenEnumAc.hpp, SerialStatusEnumAc.cpp, SerialStatusEnumAc.hpp, SuccessEnumAc.cpp, SuccessEnumAc.hpp

[  6%] Generating ActiveEnumAi.xml, DeserialStatusEnumAi.xml, DirectionEnumAi.xml, EnabledEnumAi.xml, HealthEnumAi.xml, LogicEnumAi.xml, OnEnumAi.xml, OpenEnumAi.xml, SerialStatusEnumAi.xml, SuccessEnumAi.xml

[  6%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/String.cpp.obj

[  6%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/Assert.cpp.obj

[  6%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/InternalInterfaceString.cpp.obj

[  7%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/MallocAllocator.cpp.obj

[  7%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/MemAllocator.cpp.obj

[  7%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/PolyType.cpp.obj

/home/user/Desktop/fprime-tutorial-arduino-blinker/fprime/Fw/Types/Assert.cpp:6: warning: "FW_ASSERT_DFL_MSG_LEN" redefined

    6 | #define FW_ASSERT_DFL_MSG_LEN 256

      | 

In file included from /home/user/Desktop/fprime-tutorial-arduino-blinker/config/FpConfig.hpp:13,

                 from /home/user/Desktop/fprime-tutorial-arduino-blinker/fprime/Fw/Types/Assert.cpp:1:

/home/user/Desktop/fprime-tutorial-arduino-blinker/config/FpConfig.h:167: note: this is the location of the previous definition

  167 | #define FW_ASSERT_DFL_MSG_LEN 128  //!< Maximum assert message length when using the default assert handler

      | 

[  7%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/SerialBuffer.cpp.obj

[  7%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/Serializable.cpp.obj

[  8%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/StringType.cpp.obj

[  8%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/StringUtils.cpp.obj

[  8%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/ActiveEnumAc.cpp.obj

[  8%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/DeserialStatusEnumAc.cpp.obj

[  8%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/DirectionEnumAc.cpp.obj

[  9%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/EnabledEnumAc.cpp.obj

[  9%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/HealthEnumAc.cpp.obj

[  9%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/LogicEnumAc.cpp.obj

[  9%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/OnEnumAc.cpp.obj

[  9%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/OpenEnumAc.cpp.obj

[  9%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/SuccessEnumAc.cpp.obj

[ 10%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/SerialStatusEnumAc.cpp.obj

[ 10%] Linking CXX static library ../../../lib/rpipicow/libFw_Types.a

[ 10%] Built target Fw_Types

[ 11%] Building CXX object F-Prime/Fw/Logger/CMakeFiles/Fw_Logger.dir/Logger.cpp.obj

[ 11%] Building CXX object F-Prime/Fw/SerializableFile/CMakeFiles/Fw_SerializableFile.dir/SerializableFile.cpp.obj

[ 11%] Building CXX object F-Prime/CFDP/Checksum/CMakeFiles/CFDP_Checksum.dir/Checksum.cpp.obj

[ 11%] Building CXX object F-Prime/Fw/Logger/CMakeFiles/Fw_Logger.dir/LogAssert.cpp.obj

[ 12%] Building CXX object F-Prime/Fw/Test/CMakeFiles/Fw_Test.dir/UnitTestAssert.cpp.obj

[ 12%] Building CXX object F-Prime/Fw/Test/CMakeFiles/Fw_Test.dir/String.cpp.obj

[ 12%] Building CXX object F-Prime/Utils/Types/CMakeFiles/Utils_Types.dir/CircularBuffer.cpp.obj

[ 12%] Building CXX object F-Prime/Utils/Hash/CMakeFiles/Utils_Hash.dir/libcrc/CRC32.cpp.obj

[ 12%] Building CXX object F-Prime/Utils/Types/CMakeFiles/Utils_Types.dir/Queue.cpp.obj

[ 12%] Linking CXX static library ../../../lib/rpipicow/libFw_Logger.a

[ 12%] Linking CXX static library ../../../lib/rpipicow/libFw_SerializableFile.a

[ 12%] Building C object F-Prime/Utils/Hash/CMakeFiles/Utils_Hash.dir/libcrc/lib_crc.c.obj

[ 12%] Built target Fw_SerializableFile

[ 12%] Linking CXX static library ../../../lib/rpipicow/libCFDP_Checksum.a

[ 12%] Built target Fw_Logger

cc1: warning: command-line option '-std=c++17' is valid for C++/ObjC++ but not for C

[ 12%] Building CXX object F-Prime/Utils/Hash/CMakeFiles/Utils_Hash.dir/HashBufferCommon.cpp.obj

[ 13%] Building CXX object F-Prime/Utils/Hash/CMakeFiles/Utils_Hash.dir/HashCommon.cpp.obj

[ 13%] Linking CXX static library ../../../lib/rpipicow/libFw_Test.a

[ 13%] Linking CXX static library ../../../lib/rpipicow/libUtils_Types.a

[ 13%] Building CXX object F-Prime/Fw/Obj/CMakeFiles/Fw_Obj.dir/ObjBase.cpp.obj

[ 13%] Building CXX object F-Prime/Fw/Obj/CMakeFiles/Fw_Obj.dir/SimpleObjRegistry.cpp.obj

[ 13%] Built target CFDP_Checksum

[ 13%] Built target Fw_Test

[ 13%] Linking CXX static library ../../../lib/rpipicow/libUtils_Hash.a

[ 13%] Built target Utils_Types

[ 14%] Linking CXX static library ../../../lib/rpipicow/libFw_Obj.a

[ 14%] Built target Utils_Hash

[ 14%] Built target Fw_Obj

[ 14%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/TaskString.cpp.obj

[ 14%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/TaskCommon.cpp.obj

[ 14%] Building CXX object F-Prime/Os/Baremetal/TaskRunner/CMakeFiles/Os_Baremetal_TaskRunner.dir/TaskRunner.cpp.obj

[ 14%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/QueueString.cpp.obj

[ 14%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Baremetal/Task.cpp.obj

[ 14%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/QueueCommon.cpp.obj

[ 15%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Baremetal/Queue.cpp.obj

[ 15%] Building CXX object F-Prime/Fw/Port/CMakeFiles/Fw_Port.dir/InputPortBase.cpp.obj

[ 15%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Baremetal/File.cpp.obj

[ 15%] Linking CXX static library ../../../../lib/rpipicow/libOs_Baremetal_TaskRunner.a

[ 15%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Baremetal/FileSystem.cpp.obj

[ 15%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Baremetal/IntervalTimer.cpp.obj

[ 16%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Baremetal/Mutex.cpp.obj

[ 16%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Pthreads/BufferQueueCommon.cpp.obj

[ 16%] Building CXX object F-Prime/Fw/Port/CMakeFiles/Fw_Port.dir/InputSerializePort.cpp.obj

[ 16%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Pthreads/FIFOBufferQueue.cpp.obj

[ 16%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/StreamLog.cpp.obj

[ 16%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/IntervalTimer.cpp.obj

[ 16%] Built target Os_Baremetal_TaskRunner

[ 16%] Building CXX object F-Prime/Fw/Port/CMakeFiles/Fw_Port.dir/OutputPortBase.cpp.obj

[ 16%] Building CXX object F-Prime/Fw/Port/CMakeFiles/Fw_Port.dir/OutputSerializePort.cpp.obj

[ 17%] Building CXX object F-Prime/Fw/Port/CMakeFiles/Fw_Port.dir/PortBase.cpp.obj

cc1: warning: command-line option '-std=gnu++17' is valid for C++/ObjC++ but not for C

In file included from /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/Arduino.h:121,

                 from /home/user/Desktop/fprime-tutorial-arduino-blinker/fprime-arduino/cmake/platform/FprimeArduino.hpp:9,

                 from /home/user/Desktop/fprime-tutorial-arduino-blinker/fprime-arduino/Arduino/Os/StreamLog.hpp:10,

                 from /home/user/Desktop/fprime-tutorial-arduino-blinker/fprime-arduino/Arduino/Os/StreamLog.cpp:13:

/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/RP2040Support.h:189:48: warning: multi-character character constant [-Wmultichar]

  189 |         return (us * (clock_get_hz(clk_sys) / 1'000'000));

      |                                                ^~~~~

In file included from /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/api/../../../ArduinoCore-API/api/ArduinoAPI.h:39,

                 from /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/api/ArduinoAPI.h:2,

                 from /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/Arduino.h:28:

/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/api/../../../ArduinoCore-API/api/WCharacter.h: In function 'bool arduino::isAscii(int)':

/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/api/../../../ArduinoCore-API/api/WCharacter.h:66:12: error: 'isascii' was not declared in this scope; did you mean 'isAscii'?

   66 |   return ( isascii (c) == 0 ? false : true);

      |            ^~~~~~~

      |            isAscii

/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/api/../../../ArduinoCore-API/api/WCharacter.h: In function 'int arduino::toAscii(int)':

/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/api/../../../ArduinoCore-API/api/WCharacter.h:148:10: error: 'toascii' was not declared in this scope; did you mean 'toAscii'?

  148 |   return toascii (c);

      |          ^~~~~~~

      |          toAscii

In file included from /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/Arduino.h:121,

[ 17%] Linking CXX static library ../../../lib/rpipicow/libFw_Port.a

                 from /home/user/Desktop/fprime-tutorial-arduino-blinker/fprime-arduino/cmake/platform/FprimeArduino.hpp:9,

                 from /home/user/Desktop/fprime-tutorial-arduino-blinker/fprime-arduino/Arduino/Os/IntervalTimer.cpp:7:

/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/RP2040Support.h:189:48: warning: multi-character character constant [-Wmultichar]

  189 |         return (us * (clock_get_hz(clk_sys) / 1'000'000));

      |                                                ^~~~~

In file included from /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/api/../../../ArduinoCore-API/api/ArduinoAPI.h:39,

                 from /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/api/ArduinoAPI.h:2,

                 from /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/Arduino.h:28:

/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/api/../../../ArduinoCore-API/api/WCharacter.h: In function 'bool arduino::isAscii(int)':

/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/api/../../../ArduinoCore-API/api/WCharacter.h:66:12: error: 'isascii' was not declared in this scope; did you mean 'isAscii'?

   66 |   return ( isascii (c) == 0 ? false : true);

      |            ^~~~~~~

      |            isAscii

/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/api/../../../ArduinoCore-API/api/WCharacter.h: In function 'int arduino::toAscii(int)':

[ 17%] Built target Fw_Port

[ 17%] Generating TimePortAi.xml

[ 17%] Generating TimePortAc.cpp, TimePortAc.hpp

/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/api/../../../ArduinoCore-API/api/WCharacter.h:148:10: error: 'toascii' was not declared in this scope; did you mean 'toAscii'?

  148 |   return toascii (c);

      |          ^~~~~~~

      |          toAscii

/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/RP2040Support.h: In static member function 'static int RP2040::usToPIOCycles(int)':

/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/RP2040Support.h:189:48: error: expected ')' before '\x303030'

  189 |         return (us * (clock_get_hz(clk_sys) / 1'000'000));

      |                                                ^~~~~

/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/RP2040Support.h:189:22: note: to match this '('

  189 |         return (us * (clock_get_hz(clk_sys) / 1'000'000));

      |                      ^

/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/RP2040Support.h:189:58: error: expected ')' before ';' token

  189 |         return (us * (clock_get_hz(clk_sys) / 1'000'000));

      |                                                          ^

/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/RP2040Support.h:189:16: note: to match this '('

  189 |         return (us * (clock_get_hz(clk_sys) / 1'000'000));

      |                ^

gmake[2]: *** [Arduino/Os/CMakeFiles/Arduino_Os.dir/build.make:258: Arduino/Os/CMakeFiles/Arduino_Os.dir/StreamLog.cpp.obj] Error 1

[ 17%] Building CXX object F-Prime/Fw/Comp/CMakeFiles/Fw_Comp.dir/PassiveComponentBase.cpp.obj

gmake[2]: *** Waiting for unfinished jobs....

/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/RP2040Support.h: In static member function 'static int RP2040::usToPIOCycles(int)':

/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/RP2040Support.h:189:48: error: expected ')' before '\x303030'

  189 |         return (us * (clock_get_hz(clk_sys) / 1'000'000));

      |                                                ^~~~~

/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/RP2040Support.h:189:22: note: to match this '('

  189 |         return (us * (clock_get_hz(clk_sys) / 1'000'000));

      |                      ^

/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/RP2040Support.h:189:58: error: expected ')' before ';' token

  189 |         return (us * (clock_get_hz(clk_sys) / 1'000'000));

      |                                                          ^

/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/RP2040Support.h:189:16: note: to match this '('

  189 |         return (us * (clock_get_hz(clk_sys) / 1'000'000));

      |                ^

gmake[2]: *** [Arduino/Os/CMakeFiles/Arduino_Os.dir/build.make:244: Arduino/Os/CMakeFiles/Arduino_Os.dir/IntervalTimer.cpp.obj] Error 1

[ 17%] Building CXX object F-Prime/Fw/Time/CMakeFiles/Fw_Time.dir/TimePortAc.cpp.obj

[ 18%] Building CXX object F-Prime/Fw/Time/CMakeFiles/Fw_Time.dir/Time.cpp.obj

[ 19%] Linking CXX static library ../../../lib/rpipicow/libFw_Comp.a

[ 19%] Built target Fw_Comp

[ 19%] Linking CXX static library ../../../lib/rpipicow/libFw_Time.a

[ 19%] Built target Fw_Time

gmake[1]: *** [CMakeFiles/Makefile2:4852: Arduino/Os/CMakeFiles/Arduino_Os.dir/all] Error 2

gmake[1]: *** Waiting for unfinished jobs....

gmake: *** [Makefile:136: all] Error 2

[ERROR] CMake erred with return code 2

Note:
Some nuances during following your steps:

user@user-VirtualBox:~/Desktop$ python -m venv ~/venv/fprime
Command 'python' not found, did you mean:
  command 'python3' from deb python3
  command 'python' from deb python-is-python3
user@user-VirtualBox:~/Desktop$ python3 -m venv ~/venv/fprime
(fprime) user@user-VirtualBox:~/Desktop/fprime-tutorial-arduino-blinker$ . ~/fprime-venv/bin/activate
bash: /home/user/fprime-venv/bin/activate: No such file or directory
(fprime) user@user-VirtualBox:~/Desktop/fprime-tutorial-arduino-blinker$ . fprime-venv/bin/activate
(fprime-venv) user@user-VirtualBox:~/Desktop/fprime-tutorial-arduino-blinker$ arduino-cli config init
Config file already exists, use --overwrite to discard the existing one.
(fprime-venv) user@user-VirtualBox:~/Desktop/fprime-tutorial-arduino-blinker$ arduino-cli config init --overwrite
Config file written to: /home/user/.arduino15/arduino-cli.yaml

Here is my version of Python and Ubuntu:

(fprime-venv) user@user-VirtualBox:~/Desktop/fprime-tutorial-arduino-blinker$ python -V
Python 3.10.12
(fprime-venv) user@user-VirtualBox:~/Desktop/fprime-tutorial-arduino-blinker$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 22.04.4 LTS
Release:	22.04
Codename:	jammy

@ethancheez what is your version of Ubuntu and Python?

@ethancheez
Copy link
Collaborator

@ethancheez what is your version of Ubuntu and Python?

ethan@ethancheez:~$ python --version
Python 3.10.12
ethan@ethancheez:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.4 LTS
Release:        22.04
Codename:       jammy

@Gonta01
Copy link

Gonta01 commented Jul 25, 2024

@ethancheez hi! Could you please add the following lines to your rpipicow.cmake:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -v")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -v")

image

Show me your logs for build of some object (let it be Fw_Logger.dir/Logger.cpp.obj) :

[  8%] Building CXX object F-Prime/Fw/Logger/CMakeFiles/Fw_Logger.dir/Logger.cpp.obj
Using built-in specs.
COLLECT_GCC=/home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/arm-none-eabi-g++
Target: arm-none-eabi
Configured with: /workdir/repo/gcc-gnu/configure --prefix=/workdir/arena.x86_64/arm-none-eabi --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=arm-none-eabi --disable-shared --with-newlib --enable-threads=no --disable-__cxa_atexit --disable-libgomp --disable-libmudflap --disable-nls --without-python --disable-bootstrap --enable-languages=c,c++ --disable-lto --enable-static=yes --disable-libstdcxx-verbose --disable-decimal-float --with-cpu=cortex-m0plus --with-no-thumb-interwork --disable-tui --disable-pie-tools --disable-libquadmath
Thread model: single
Supported LTO compression algorithms: zlib
gcc version 12.3.0 (GCC) 
COLLECT_GCC_OPTIONS='-D' 'FW_BAREMETAL_SCHEDULER=1' '-I' '/home/user/Desktop/led-blinker/build-fprime-automatic-rpipicow/arduino-cli-sketch/core' '-I' '/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/include' '-I' '/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040' '-I' '/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/variants/rpipicow' '-I' '/home/user/Desktop/led-blinker/fprime-arduino/cmake/platform/types/arm' '-I' '/home/user/Desktop/led-blinker/fprime-arduino/cmake/platform' '-I' '/home/user/Desktop/led-blinker/fprime' '-I' '/home/user/Desktop/led-blinker/fprime/config' '-I' '/home/user/Desktop/led-blinker' '-I' '/home/user/Desktop/led-blinker/build-fprime-automatic-rpipicow' '-I' '/home/user/Desktop/led-blinker/build-fprime-automatic-rpipicow/F-Prime' '-I' '/home/user/Desktop/led-blinker/build-fprime-automatic-rpipicow/config' '-I' '/home/user/Desktop/led-blinker/fprime-arduino' '-I' '/home/user/Arduino/libraries/Time' '-I' '/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/Wire/src' '-I' '/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/SPI/src' '-I' '/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/WiFi/src' '-I' '/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/lwIP_CYW43/src' '-I' '/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/lwIP_Ethernet/src' '-I' '/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/Updater/src' '-I' '/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/MD5Builder/src' '-I' '/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/LittleFS/src' '-I' '/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/PicoOTA/src' '-v' '-v' '-std=c++17' '-std=gnu++17' '-D' '_BOARD_RPIPICOW' '-D' 'USE_BASIC_TIMER' '-D' '_GNU_SOURCE' '-std=c++11' '-D' 'ASSERT_FILE_ID=0x2c35dd08' '-D' 'ASSERT_RELATIVE_PATH="Fw/Logger/Logger.cpp"' '-MD' '-MT' 'F-Prime/Fw/Logger/CMakeFiles/Fw_Logger.dir/Logger.cpp.obj' '-MF' 'CMakeFiles/Fw_Logger.dir/Logger.cpp.obj.d' '-o' 'CMakeFiles/Fw_Logger.dir/Logger.cpp.obj' '-c' '-mcpu=cortex-m0plus' '-mthumb' '-mlibarch=armv6s-m' '-march=armv6s-m' '-dumpdir' 'CMakeFiles/Fw_Logger.dir/'
 /home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/../libexec/gcc/arm-none-eabi/12.3.0/cc1plus -quiet -v -v -I /home/user/Desktop/led-blinker/build-fprime-automatic-rpipicow/arduino-cli-sketch/core -I /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/include -I /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040 -I /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/variants/rpipicow -I /home/user/Desktop/led-blinker/fprime-arduino/cmake/platform/types/arm -I /home/user/Desktop/led-blinker/fprime-arduino/cmake/platform -I /home/user/Desktop/led-blinker/fprime -I /home/user/Desktop/led-blinker/fprime/config -I /home/user/Desktop/led-blinker -I /home/user/Desktop/led-blinker/build-fprime-automatic-rpipicow -I /home/user/Desktop/led-blinker/build-fprime-automatic-rpipicow/F-Prime -I /home/user/Desktop/led-blinker/build-fprime-automatic-rpipicow/config -I /home/user/Desktop/led-blinker/fprime-arduino -I /home/user/Arduino/libraries/Time -I /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/Wire/src -I /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/SPI/src -I /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/WiFi/src -I /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/lwIP_CYW43/src -I /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/lwIP_Ethernet/src -I /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/Updater/src -I /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/MD5Builder/src -I /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/LittleFS/src -I /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/PicoOTA/src -imultilib thumb -iprefix /home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/../lib/gcc/arm-none-eabi/12.3.0/ -MD CMakeFiles/Fw_Logger.dir/Logger.cpp.d -MF CMakeFiles/Fw_Logger.dir/Logger.cpp.obj.d -MT F-Prime/Fw/Logger/CMakeFiles/Fw_Logger.dir/Logger.cpp.obj -D__USES_INITFINI__ -D FW_BAREMETAL_SCHEDULER=1 -D _BOARD_RPIPICOW -D USE_BASIC_TIMER -D _GNU_SOURCE -D ASSERT_FILE_ID=0x2c35dd08 -D ASSERT_RELATIVE_PATH="Fw/Logger/Logger.cpp" /home/user/Desktop/led-blinker/fprime/Fw/Logger/Logger.cpp -quiet -dumpdir CMakeFiles/Fw_Logger.dir/ -dumpbase Logger.cpp.cpp -dumpbase-ext .cpp -mcpu=cortex-m0plus -mthumb -mlibarch=armv6s-m -march=armv6s-m -std=c++17 -std=gnu++17 -std=c++11 -version -o /tmp/ccvh3frK.s
GNU C++11 (GCC) version 12.3.0 (arm-none-eabi)
        compiled by GNU C version 9.4.0, GMP version 6.1.2, MPFR version 3.1.4, MPC version 1.0.3, isl version isl-0.18-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring nonexistent directory "/home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/../lib/gcc/arm-none-eabi/12.3.0/../../../../arm-none-eabi/sys-include"
ignoring duplicate directory "/home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/../lib/gcc/../../lib/gcc/arm-none-eabi/12.3.0/../../../../arm-none-eabi/include/c++/12.3.0"
ignoring duplicate directory "/home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/../lib/gcc/../../lib/gcc/arm-none-eabi/12.3.0/../../../../arm-none-eabi/include/c++/12.3.0/arm-none-eabi/thumb"
ignoring duplicate directory "/home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/../lib/gcc/../../lib/gcc/arm-none-eabi/12.3.0/../../../../arm-none-eabi/include/c++/12.3.0/backward"
ignoring duplicate directory "/home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/../lib/gcc/../../lib/gcc/arm-none-eabi/12.3.0/include"
ignoring duplicate directory "/home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/../lib/gcc/../../lib/gcc/arm-none-eabi/12.3.0/include-fixed"
ignoring nonexistent directory "/home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/../lib/gcc/../../lib/gcc/arm-none-eabi/12.3.0/../../../../arm-none-eabi/sys-include"
ignoring duplicate directory "/home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/../lib/gcc/../../lib/gcc/arm-none-eabi/12.3.0/../../../../arm-none-eabi/include"
#include "..." search starts here:
#include <...> search starts here:
 /home/user/Desktop/led-blinker/build-fprime-automatic-rpipicow/arduino-cli-sketch/core
 /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/include
 /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040
 /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/variants/rpipicow
 /home/user/Desktop/led-blinker/fprime-arduino/cmake/platform/types/arm
 /home/user/Desktop/led-blinker/fprime-arduino/cmake/platform
 /home/user/Desktop/led-blinker/fprime
 /home/user/Desktop/led-blinker/fprime/config
 /home/user/Desktop/led-blinker
 /home/user/Desktop/led-blinker/build-fprime-automatic-rpipicow
 /home/user/Desktop/led-blinker/build-fprime-automatic-rpipicow/F-Prime
 /home/user/Desktop/led-blinker/build-fprime-automatic-rpipicow/config
 /home/user/Desktop/led-blinker/fprime-arduino
 /home/user/Arduino/libraries/Time
 /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/Wire/src
 /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/SPI/src
 /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/WiFi/src
 /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/lwIP_CYW43/src
 /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/lwIP_Ethernet/src
 /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/Updater/src
 /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/MD5Builder/src
 /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/LittleFS/src
 /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/PicoOTA/src
 /home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/../lib/gcc/arm-none-eabi/12.3.0/../../../../arm-none-eabi/include/c++/12.3.0
 /home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/../lib/gcc/arm-none-eabi/12.3.0/../../../../arm-none-eabi/include/c++/12.3.0/arm-none-eabi/thumb
 /home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/../lib/gcc/arm-none-eabi/12.3.0/../../../../arm-none-eabi/include/c++/12.3.0/backward
 /home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/../lib/gcc/arm-none-eabi/12.3.0/include
 /home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/../lib/gcc/arm-none-eabi/12.3.0/include-fixed
 /home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/../lib/gcc/arm-none-eabi/12.3.0/../../../../arm-none-eabi/include
End of search list.
GNU C++11 (GCC) version 12.3.0 (arm-none-eabi)
        compiled by GNU C version 9.4.0, GMP version 6.1.2, MPFR version 3.1.4, MPC version 1.0.3, isl version isl-0.18-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: b823279c9f30b182291ea5ae4cb6e0b8
COLLECT_GCC_OPTIONS='-D' 'FW_BAREMETAL_SCHEDULER=1' '-I' '/home/user/Desktop/led-blinker/build-fprime-automatic-rpipicow/arduino-cli-sketch/core' '-I' '/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/include' '-I' '/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040' '-I' '/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/variants/rpipicow' '-I' '/home/user/Desktop/led-blinker/fprime-arduino/cmake/platform/types/arm' '-I' '/home/user/Desktop/led-blinker/fprime-arduino/cmake/platform' '-I' '/home/user/Desktop/led-blinker/fprime' '-I' '/home/user/Desktop/led-blinker/fprime/config' '-I' '/home/user/Desktop/led-blinker' '-I' '/home/user/Desktop/led-blinker/build-fprime-automatic-rpipicow' '-I' '/home/user/Desktop/led-blinker/build-fprime-automatic-rpipicow/F-Prime' '-I' '/home/user/Desktop/led-blinker/build-fprime-automatic-rpipicow/config' '-I' '/home/user/Desktop/led-blinker/fprime-arduino' '-I' '/home/user/Arduino/libraries/Time' '-I' '/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/Wire/src' '-I' '/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/SPI/src' '-I' '/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/WiFi/src' '-I' '/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/lwIP_CYW43/src' '-I' '/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/lwIP_Ethernet/src' '-I' '/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/Updater/src' '-I' '/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/MD5Builder/src' '-I' '/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/LittleFS/src' '-I' '/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/libraries/PicoOTA/src' '-v' '-v' '-std=c++17' '-std=gnu++17' '-D' '_BOARD_RPIPICOW' '-D' 'USE_BASIC_TIMER' '-D' '_GNU_SOURCE' '-std=c++11' '-D' 'ASSERT_FILE_ID=0x2c35dd08' '-D' 'ASSERT_RELATIVE_PATH="Fw/Logger/Logger.cpp"' '-MD' '-MT' 'F-Prime/Fw/Logger/CMakeFiles/Fw_Logger.dir/Logger.cpp.obj' '-MF' 'CMakeFiles/Fw_Logger.dir/Logger.cpp.obj.d' '-o' 'CMakeFiles/Fw_Logger.dir/Logger.cpp.obj' '-c' '-mcpu=cortex-m0plus' '-mthumb' '-mlibarch=armv6s-m' '-march=armv6s-m' '-dumpdir' 'CMakeFiles/Fw_Logger.dir/'
 /home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/../lib/gcc/arm-none-eabi/12.3.0/../../../../arm-none-eabi/bin/as -march=armv6s-m -meabi=5 -o CMakeFiles/Fw_Logger.dir/Logger.cpp.obj /tmp/ccvh3frK.s
COMPILER_PATH=/home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/../libexec/gcc/arm-none-eabi/12.3.0/:/home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/../libexec/gcc/:/home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/../lib/gcc/arm-none-eabi/12.3.0/../../../../arm-none-eabi/bin/
LIBRARY_PATH=/home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/../lib/gcc/arm-none-eabi/12.3.0/thumb/:/home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/../lib/gcc/arm-none-eabi/12.3.0/../../../../arm-none-eabi/lib/thumb/:/home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/../lib/gcc/arm-none-eabi/12.3.0/:/home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/../lib/gcc/:/home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/../lib/gcc/arm-none-eabi/12.3.0/../../../../arm-none-eabi/lib/

Suspicious moments:
ignoring nonexistent directory "/home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/../lib/gcc/arm-none-eabi/12.3.0/../../../../arm-none-eabi/sys-include"

GNU C++11 (GCC) version 12.3.0 (arm-none-eabi)

@ethancheez
Copy link
Collaborator

[ 13%] Building CXX object F-Prime/Utils/Hash/CMakeFiles/Utils_Hash.dir/HashCommon.cpp.obj
GNU C++17 (GCC) version 12.3.0 (arm-none-eabi)
        compiled by GNU C version 9.4.0, GMP version 6.1.2, MPFR version 3.1.4, MPC version 1.0.3, isl version isl-0.18-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Using built-in specs.
ignoring nonexistent directory "/home/ethan/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/../../../../arm-none-eabi/include/c++/12.3.0"
COLLECT_GCC=/home/ethan/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/arm-none-eabi-g++
ignoring nonexistent directory "/home/ethan/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/../../../../arm-none-eabi/include/c++/12.3.0/arm-none-eabi/thumb"
Target: arm-none-eabi
cc1: warning: command-line option '-std=c++17' is valid for C++/ObjC++ but not for C
ignoring nonexistent directory "/home/ethan/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/../../../../arm-none-eabi/include/c++/12.3.0/backward"
Configured with: /workdir/repo/gcc-gnu/configure --prefix=/workdir/arena.x86_64/arm-none-eabi --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=arm-none-eabi --disable-shared --with-newlib --enable-threads=no --disable-__cxa_atexit --disable-libgomp --disable-libmudflap --disable-nls --without-python --disable-bootstrap --enable-languages=c,c++ --disable-lto --enable-static=yes --disable-libstdcxx-verbose --disable-decimal-float --with-cpu=cortex-m0plus --with-no-thumb-interwork --disable-tui --disable-pie-tools --disable-libquadmath
cc1: warning: command-line option '-std=gnu++17' is valid for C++/ObjC++ but not for C
ignoring nonexistent directory "/home/ethan/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/include-fixed"
Thread model: single
ignoring nonexistent directory "/home/ethan/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/../../../../arm-none-eabi/sys-include"
Supported LTO compression algorithms: zlibignoring nonexistent directory "/home/ethan/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/../../../../arm-none-eabi/include"

ignoring nonexistent directory "/home/ethan/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/../lib/gcc/../../lib/gcc/arm-none-eabi/12.3.0/../../../../arm-none-eabi/sys-include"
gcc version 12.3.0 (GCC) 

Looks like my build is using C++17.

I also get the ignoring nonexxistent directory messages, but successfully builds.

@Gonta01
Copy link

Gonta01 commented Jul 26, 2024

@ethancheez have you any ideas, in what directions I should watch to debug this issue.

@Gonta01
Copy link

Gonta01 commented Jul 26, 2024

I've followed through steps that you described on WSL1 with Ubuntu22.04 but result again the same.

@ethancheez
Copy link
Collaborator

ethancheez commented Jul 27, 2024

Something I noticed in your verbose output, take a look at the COLLECT_GCC_OPTIONS= output. Near the end, I see:

 `'-v' '-v' '-std=c++17' '-std=gnu++17' '-D' '_BOARD_RPIPICOW' '-D' 'USE_BASIC_TIMER' '-D' '_GNU_SOURCE' '-std=c++11`

The -std=c++11 appears last, and therefore takes precedence over the -std=c++17 flag.

Here is my order:

'-v' '-std=c++11' '-std=c++17' '-std=gnu++17' '-D' '_BOARD_RPIPICOW' '-D' 'USE_BASIC_TIMER'

Now we just have to figure out why the -std=c++11 flag was added last, as all the flags added via add_compile_options within the rpipicow.cmake file should be last.

Some random things to try:

  • Have you been running fprime-util build rpipicow with a -j flag? Maybe try run it with -j1 to force only one job (although I don't think this will do anything). Delete the build-fprime-automatic-rpipicow folder and regenerate with fprime-util generate rpipicow first.
  • Try also update your cmake version. My Ubuntu VM uses 3.28.3 and my WSL1 uses 3.29.6, both works.
  • Try move the add_compile_options(-std=c++17 -std=gnu++17) # Force C++17 standard to the very end of the rpipicow.cmake file, right after the include("${CMAKE_CURRENT_LIST_DIR}/support/arduino-support.cmake").
  • Try build for teensy41 by running: fprime-util generate teensy41 and fprime-util build teensy41 with the verbose flags turned on and see the order of the -std=c++17 and -std=c++11 being printed.

@Gonta01
Copy link

Gonta01 commented Jul 29, 2024

@ethancheez update of Cmake helped! Everything seems to build without any issues now.
I updated cmake from 3.22.1 to 3.30.1:

(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker$ cmake -version
cmake version 3.22.1

CMake suite maintained and supported by Kitware (kitware.com/cmake).
(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker$ sudo apt remove cmake -y
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
  cmake-data dh-elpa-helper libjsoncpp25 librhash0 libwpe-1.0-1 libwpebackend-fdo-1.0-1
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
  cmake
0 upgraded, 0 newly installed, 1 to remove and 8 not upgraded.
After this operation, 21,2 MB disk space will be freed.
(Reading database ... 193709 files and directories currently installed.)
Removing cmake (3.22.1-1ubuntu1.22.04.2) ...
Processing triggers for man-db (2.10.2-1) ...
(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker$ pip install cmake --upgrade
Collecting cmake
  Downloading cmake-3.30.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.1 kB)
Downloading cmake-3.30.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26.9 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 26.9/26.9 MB 18.6 MB/s eta 0:00:00
Installing collected packages: cmake
Successfully installed cmake-3.30.1

[notice] A new release of pip is available: 24.1.2 -> 24.2
[notice] To update, run: pip install --upgrade pip

(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker$ cmake -version
cmake version 3.30.1

CMake suite maintained and supported by Kitware (kitware.com/cmake).

The order of flags now:
'-std=c++11' '-std=c++17' '-std=gnu++17' '-D' '_BOARD_RPIPICOW' '-D' 'USE_BASIC_TIMER' '-D'

@ethancheez thank you a lot for you help and work!

@Gonta01
Copy link

Gonta01 commented Jul 29, 2024

Just to clarify does your project with activated verbose flags fully build?
When I activate them the build (rpipicow) fails at the stage:

[ 26%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/IntervalTimer.cpp.obj

In file included from /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/api/../../../ArduinoCore-API/api/ArduinoAPI.h:30,
                 from /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/api/ArduinoAPI.h:2,
                 from /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/Arduino.h:28,
                 from /home/user/Desktop/led-blinker/fprime-arduino/cmake/platform/FprimeArduino.hpp:9,
                 from /home/user/Desktop/led-blinker/fprime-arduino/Arduino/Os/IntervalTimer.cpp:7:
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/api/../../../ArduinoCore-API/api/IPAddress.h:26:10: fatal error: lwip/init.h: No such file or directory
   26 | #include <lwip/init.h>
      |          ^~~~~~~~~~~~~
compilation terminated.
gmake[2]: *** [Arduino/Os/CMakeFiles/Arduino_Os.dir/build.make:244: Arduino/Os/CMakeFiles/Arduino_Os.dir/IntervalTimer.cpp.obj] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:4867: Arduino/Os/CMakeFiles/Arduino_Os.dir/all] Error 2
gmake: *** [Makefile:136: all] Error 2
[ERROR] CMake erred with return code 2

Without verbose flags everything seems to work fine as I described above.

@ethancheez
Copy link
Collaborator

Just to clarify does your project with activated verbose flags fully build? When I activate them the build (rpipicow) fails at the stage:

[ 26%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/IntervalTimer.cpp.obj

In file included from /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/api/../../../ArduinoCore-API/api/ArduinoAPI.h:30,
                 from /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/api/ArduinoAPI.h:2,
                 from /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/Arduino.h:28,
                 from /home/user/Desktop/led-blinker/fprime-arduino/cmake/platform/FprimeArduino.hpp:9,
                 from /home/user/Desktop/led-blinker/fprime-arduino/Arduino/Os/IntervalTimer.cpp:7:
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.4/cores/rp2040/api/../../../ArduinoCore-API/api/IPAddress.h:26:10: fatal error: lwip/init.h: No such file or directory
   26 | #include <lwip/init.h>
      |          ^~~~~~~~~~~~~
compilation terminated.
gmake[2]: *** [Arduino/Os/CMakeFiles/Arduino_Os.dir/build.make:244: Arduino/Os/CMakeFiles/Arduino_Os.dir/IntervalTimer.cpp.obj] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:4867: Arduino/Os/CMakeFiles/Arduino_Os.dir/all] Error 2
gmake: *** [Makefile:136: all] Error 2
[ERROR] CMake erred with return code 2

Without verbose flags everything seems to work fine as I described above.

Yeah I have been getting the same error with the verbose flag. Unsure why. Seems to only happen when you run fprime-util generate rpipicow and fprime-util build rpipicow for the very first time with the verbose flags present. If you build first without the verbose flags, let it successfully build, then add it into the rpipicow.cmake after, and then rebuild, it will succeed with all the verbose outputs.

@Gonta01
Copy link

Gonta01 commented Jul 29, 2024

Got it. Thank you.
I'm curious why that problem with cmake even happened. I installed all System Requirements step by step and for some reason had deprecated version. Is it possible to add system requirements (despite python, pip, venv) to requirements.txt, so that they will be part of virtual environment? Are there any other solution to prevent such kind of problems in the future?

@ethancheez
Copy link
Collaborator

Got it. Thank you. I'm curious why that problem with cmake even happened. I installed all System Requirements step by step and for some reason had deprecated version. Is it possible to add system requirements (despite python, pip, venv) to requirements.txt, so that they will be part of virtual environment? Are there any other solution to prevent such kind of problems in the future?

I believe the system requirements for F Prime itself is CMake 3.16 or newer, which you did have. It's just the RPi Pico Arduino package requires a newer CMake version. It might be possible to add it to the requirements.txt file within the arduino blinker tutorial.

@LeStarch
Copy link
Contributor

LeStarch commented Aug 1, 2024

This could be added as a cmake_required_version call in the rp2040 cmake file.

@Gonta01
Copy link

Gonta01 commented Aug 2, 2024

@ethancheez and @LeStarch thank you for your responses and suggested solutions.

It's just the RPi Pico Arduino package requires a newer CMake version. - this problem will occur in those people who'll try to do their own cross-compilation . The toolchain cmake doesn't take precedence over settings.cmake of fprime and it seems that the only solution for now is to upgrade cmake version.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants