eCos.cmake 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. # support for eCos http://ecos.sourceware.org
  2. SET(CMAKE_SHARED_LIBRARY_C_FLAGS "") # -pic
  3. SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "") # -shared
  4. SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") # +s, flag for exe link to use shared lib
  5. SET(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "") # -rpath
  6. SET(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP "") # : or empty
  7. SET(CMAKE_LINK_LIBRARY_SUFFIX "")
  8. SET(CMAKE_STATIC_LIBRARY_PREFIX "lib")
  9. SET(CMAKE_STATIC_LIBRARY_SUFFIX ".a")
  10. SET(CMAKE_SHARED_LIBRARY_PREFIX "lib") # lib
  11. SET(CMAKE_SHARED_LIBRARY_SUFFIX ".a") # .a
  12. SET(CMAKE_EXECUTABLE_SUFFIX ".elf") # same suffix as if built using UseEcos.cmake
  13. SET(CMAKE_DL_LIBS "" )
  14. SET(CMAKE_FIND_LIBRARY_PREFIXES "lib")
  15. SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
  16. INCLUDE(Platform/UnixPaths)
  17. # eCos can be built only with gcc
  18. GET_PROPERTY(_IN_TC GLOBAL PROPERTY IN_TRY_COMPILE)
  19. IF(CMAKE_C_COMPILER AND NOT "${CMAKE_C_COMPILER_ID}" MATCHES "GNU" AND NOT _IN_TC)
  20. MESSAGE(FATAL_ERROR "GNU gcc is required for eCos")
  21. ENDIF(CMAKE_C_COMPILER AND NOT "${CMAKE_C_COMPILER_ID}" MATCHES "GNU" AND NOT _IN_TC)
  22. IF(CMAKE_CXX_COMPILER AND NOT "${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU" AND NOT _IN_TC)
  23. MESSAGE(FATAL_ERROR "GNU g++ is required for eCos")
  24. ENDIF(CMAKE_CXX_COMPILER AND NOT "${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU" AND NOT _IN_TC)
  25. # find eCos system files
  26. FIND_PATH(ECOS_SYSTEM_CONFIG_HEADER_PATH NAMES pkgconf/system.h)
  27. FIND_LIBRARY(ECOS_SYSTEM_TARGET_LIBRARY NAMES libtarget.a)
  28. IF(NOT ECOS_SYSTEM_CONFIG_HEADER_PATH)
  29. MESSAGE(FATAL_ERROR "Could not find eCos pkgconf/system.h. Build eCos first and set up CMAKE_FIND_ROOT_PATH correctly.")
  30. ENDIF(NOT ECOS_SYSTEM_CONFIG_HEADER_PATH)
  31. IF(NOT ECOS_SYSTEM_TARGET_LIBRARY)
  32. MESSAGE(FATAL_ERROR "Could not find eCos \"libtarget.a\". Build eCos first and set up CMAKE_FIND_ROOT_PATH correctly.")
  33. ENDIF(NOT ECOS_SYSTEM_TARGET_LIBRARY)
  34. GET_FILENAME_COMPONENT(ECOS_LIBTARGET_DIRECTORY "${ECOS_SYSTEM_TARGET_LIBRARY}" PATH)
  35. INCLUDE_DIRECTORIES(${ECOS_SYSTEM_CONFIG_HEADER_PATH})
  36. ADD_DEFINITIONS(-D__ECOS__=1 -D__ECOS=1)
  37. # special link commands for eCos executables
  38. SET(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>")
  39. SET(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>")
  40. # eCos doesn't support shared libs
  41. SET_PROPERTY(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS FALSE)
  42. SET(CMAKE_CXX_LINK_SHARED_LIBRARY )
  43. SET(CMAKE_CXX_LINK_MODULE_LIBRARY )
  44. SET(CMAKE_C_LINK_SHARED_LIBRARY )
  45. SET(CMAKE_C_LINK_MODULE_LIBRARY )