I managed to compile our project with CMake, using this repository: https://github.com/spacefisch/rtems-cmake It uses the pkg-config files to set up the cross compiler given the BSP and RTEMS prefix information.
Maybe this can help you Kind Regards Robin On Tue, 20 Jul 2021 at 00:50, Michael Davidsaver <mdavidsa...@gmail.com> wrote: > On 7/19/21 6:17 AM, andre.nahrw...@dlr.de wrote: > > Hello, > > > > I have built RTEMS 5 and its tools for the Xilinx Zynq Zedboard and > installed the BSP and tools at a certain position on my machine. > > The tools are added to the PATH variable and RTEMS_BSPS is also > available in the environment. > > > > Now we need to build a library for the use with RTEMS via CMake. > > For this we wanted to use the toolchain files. > > Does anybody know how to correctly setup such a toolchain file using the > RTEMS compiler? > > > > We managed to get a toolchain file working which at least built the > library. > > But when we wanted to link to this library during compilation of a RTEMS > application we got a bunch of errors due to undefined references to > standard library functions. > > Does anybody has a clue where this might origin from? > > As it happens, I went through this exercise recently with libevent. > The main obstacle for me was that the CMake try_compile() command > actually tries to link an executable. With RTEMS 5 this can't be > done generically without also adding '-lrtemsdefaultconfig'. > > eg. > > > string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT " -lrtemsdefaultconfig") > > Also, if you use networking you might want to add. > > > set(CMAKE_REQUIRED_LIBRARIES "-lbsd") > > for eg. CheckFunctionExists.cmake to work correctly. > > > The (fairly complex) result of this all can be found here: > > https://github.com/mdavidsaver/pvxs/tree/master/bundle > > The essential parts are: > > - cmake/RTEMS.cmake@ > > Template toolchain file. (expand using definitions from RTEMS makefiles) > > - cmake/Platform/ > > Hooks into the CMake startup process. The exact interplay between > Platform/ and toolchain file is... quite involved. Also not well > documented. The best I've found is: > > > https://github.com/Kitware/CMake/blob/f86d8009c6a4482c81221114a2b04b375564cc94/Source/cmGlobalGenerator.cxx#L461-L504 > > > > > Building a RTEMS application which does not use the own library works > fine. > > > > Our toolchain file looks like this: > > > > # CMake toolchain file for ARM > > # The compiler is based on > > # The RTEMS_BSPS environment variable is expected to be set. > > set(ARCH arm) > > set(CMAKE_SYSTEM_NAME RTEMS5) > > > > set(CMAKE_CXX_FLAGS "" CACHE STRING "ARM RTEMS5 gcc additional compiler > flags" FORCE) > > > > set(RTEMS_TOOLS_PATH $ENV{RTEMS_BSPS}/../../tools/bin) > > > > set(CMAKE_C_COMPILER ${RTEMS_TOOLS_PATH}/arm-rtems5-gcc CACHE PATH "ARM > RTEMS5 gcc" FORCE) > > set(CMAKE_CXX_COMPILER ${RTEMS_TOOLS_PATH}/arm-rtems5-gcc CACHE PATH > "ARM RTEMS5 gcc" FORCE) > > set(CMAKE_CXX_COMPILER_AR ${RTEMS_TOOLS_PATH}/arm-rtems5-gcc-ar CACHE > PATH "ARM RTEMS5 ar" FORCE) > > set(CMAKE_CXX_COMPILER_RANLIB ${RTEMS_TOOLS_PATH}/arm-rtems5-gcc-ranlib > CACHE PATH "ARM RTEMS5 gcc ranlib" FORCE) > > set(CMAKE_RANLIB ${RTEMS_TOOLS_PATH}/arm-rtems5-ranlib CACHE PATH "ARM > RTEMS5 ranlib" FORCE) > > set(CMAKE_READELF ${RTEMS_TOOLS_PATH}/arm-rtems5-readelf CACHE PATH "ARM > RTEMS5 readelf" FORCE) > > set(CMAKE_STRIP ${RTEMS_TOOLS_PATH}/arm-rtems5-strip CACHE PATH "ARM > RTEMS5 strip" FORCE) > > set(CMAKE_ADDR2LINE ${RTEMS_TOOLS_PATH}/arm-rtems5-addr2line CACHE PATH > "ARM RTEMS5 addr2line" FORCE) > > set(CMAKE_LINKER ${RTEMS_TOOLS_PATH}/arm-rtems5-ld CACHE PATH "ARM > RTEMS5 ld" FORCE) > > set(CMAKE_NM ${RTEMS_TOOLS_PATH}/arm-rtems5-nm CACHE PATH "ARM RTEMS5 > nm" FORCE) > > set(CMAKE_OBJCOPY ${RTEMS_TOOLS_PATH}/arm-rtems5-objcopy CACHE PATH "ARM > RTEMS5 objcopy" FORCE) > > set(CMAKE_OBJDUMP ${RTEMS_TOOLS_PATH}/arm-rtems5-objdump CACHE PATH "ARM > RTEMS5 objdump" FORCE) > > > > set(CMAKE_TARGET_CONFIG_POSTFIX .rtems5_gcc_arm) > > > > Best regards > > Andre Nahrwold > > -------------------------- > > Deutsches Zentrum für Luft- und Raumfahrt e. V. (DLR) > > German Aerospace Center > > Institute for Software Technolog | SRV-OSS BS | Lilienthalpl. 7 | 38108 > Braunschweig | Geb. 112C Raum 001 > > M.Sc. Andre Nahrwold | Telephone +49 531 295-3834 | > andre.nahrw...@dlr.de > > DLR.de > > > > _______________________________________________ > > users mailing list > > us...@rtems.org > > http://lists.rtems.org/mailman/listinfo/users > > > > _______________________________________________ > users mailing list > us...@rtems.org > http://lists.rtems.org/mailman/listinfo/users
_______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel