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