1# support for eCos http://ecos.sourceware.org 2 3# Guard against multiple inclusion, which e.g. leads to multiple calls to add_definition() #12987 4if(__ECOS_CMAKE_INCLUDED) 5 return() 6endif() 7set(__ECOS_CMAKE_INCLUDED TRUE) 8 9set(CMAKE_SHARED_LIBRARY_C_FLAGS "") # -pic 10set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "") # -shared 11set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") # +s, flag for exe link to use shared lib 12set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "") # -rpath 13set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP "") # : or empty 14 15set(CMAKE_LINK_LIBRARY_SUFFIX "") 16set(CMAKE_STATIC_LIBRARY_PREFIX "lib") 17set(CMAKE_STATIC_LIBRARY_SUFFIX ".a") 18set(CMAKE_SHARED_LIBRARY_PREFIX "lib") # lib 19set(CMAKE_SHARED_LIBRARY_SUFFIX ".a") # .a 20set(CMAKE_EXECUTABLE_SUFFIX ".elf") # same suffix as if built using UseEcos.cmake 21set(CMAKE_DL_LIBS "" ) 22 23set(CMAKE_FIND_LIBRARY_PREFIXES "lib") 24set(CMAKE_FIND_LIBRARY_SUFFIXES ".a") 25 26 27include(Platform/UnixPaths) 28 29# eCos can be built only with gcc 30get_property(_IN_TC GLOBAL PROPERTY IN_TRY_COMPILE) 31if(CMAKE_C_COMPILER AND NOT CMAKE_C_COMPILER_ID MATCHES "GNU" AND NOT _IN_TC) 32 message(FATAL_ERROR "GNU gcc is required for eCos") 33endif() 34if(CMAKE_CXX_COMPILER AND NOT "${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU" AND NOT _IN_TC) 35 message(FATAL_ERROR "GNU g++ is required for eCos") 36endif() 37 38# find eCos system files 39find_path(ECOS_SYSTEM_CONFIG_HEADER_PATH NAMES pkgconf/system.h) 40find_library(ECOS_SYSTEM_TARGET_LIBRARY NAMES libtarget.a) 41 42if(NOT ECOS_SYSTEM_CONFIG_HEADER_PATH) 43 message(FATAL_ERROR "Could not find eCos pkgconf/system.h. Build eCos first and set up CMAKE_FIND_ROOT_PATH correctly.") 44endif() 45 46if(NOT ECOS_SYSTEM_TARGET_LIBRARY) 47 message(FATAL_ERROR "Could not find eCos \"libtarget.a\". Build eCos first and set up CMAKE_FIND_ROOT_PATH correctly.") 48endif() 49 50get_filename_component(ECOS_LIBTARGET_DIRECTORY "${ECOS_SYSTEM_TARGET_LIBRARY}" PATH) 51include_directories(${ECOS_SYSTEM_CONFIG_HEADER_PATH}) 52add_definitions(-D__ECOS__=1 -D__ECOS=1) 53 54# special link commands for eCos executables 55set(CMAKE_CXX_LINK_EXECUTABLE "<CMAKE_CXX_COMPILER> <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> -nostdlib -nostartfiles -L${ECOS_LIBTARGET_DIRECTORY} -Ttarget.ld <LINK_LIBRARIES>") 56set(CMAKE_C_LINK_EXECUTABLE "<CMAKE_C_COMPILER> <FLAGS> <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> -nostdlib -nostartfiles -L${ECOS_LIBTARGET_DIRECTORY} -Ttarget.ld <LINK_LIBRARIES>") 57 58# eCos doesn't support shared libs 59set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS FALSE) 60 61set(CMAKE_CXX_LINK_SHARED_LIBRARY ) 62set(CMAKE_CXX_LINK_MODULE_LIBRARY ) 63set(CMAKE_C_LINK_SHARED_LIBRARY ) 64set(CMAKE_C_LINK_MODULE_LIBRARY ) 65 66