Initial import of ORISYS arm workstation
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
# This macro will install ${PROJECT_NAME} to ${CMAKE_INSTALL_PREFIX} when running make install
|
||||
#
|
||||
# FlexivInstallLibrary() will install all subfolders of ${CMAKE_CURRENT_SOURCE_DIR}/include
|
||||
# FlexivInstallLibrary(install_directories) will install only the specified install_directories
|
||||
#
|
||||
# Requirements:
|
||||
# 1. project structure should resemble:
|
||||
# project
|
||||
# - README.md
|
||||
# - CMakeLists.txt that calls this macro
|
||||
# - cmake/${PROJECT_NAME}-config.cmake.in
|
||||
# - include/subfolder/*.h or *.hpp
|
||||
# 2. build the library using cmake target functions
|
||||
# - add_library(${PROJECT_NAME} ...) before calling this macro
|
||||
# - target_include_directories(${PROJECT_NAME} ...)
|
||||
# - target_link_libraries(${PROJECT_NAME} ...)
|
||||
# - target_compile_features(${PROJECT_NAME} ...)
|
||||
# - target_compile_options(${PROJECT_NAME} ...)
|
||||
#
|
||||
# Installed files:
|
||||
# - include/subfolder/*.h or *.hpp
|
||||
# - lib/lib{PROJECT_NAME}
|
||||
# - lib/cmake/{PROJECT_NAME}/
|
||||
|
||||
macro(FlexivInstallLibrary)
|
||||
# copy the executables and libraries to the CMAKE_INSTALL_PREFIX DIRECTORY
|
||||
# GNUInstallDirs will set CMAKE_INSTALL* to be the standard relative paths
|
||||
include(GNUInstallDirs)
|
||||
install(TARGETS ${PROJECT_NAME}
|
||||
EXPORT "${PROJECT_NAME}-targets"
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
)
|
||||
|
||||
if(${ARGC} EQUAL 0)
|
||||
# install all subfolders of ${CMAKE_CURRENT_SOURCE_DIR}/include
|
||||
file(GLOB install_directories ${CMAKE_CURRENT_SOURCE_DIR}/include/*)
|
||||
foreach(install_directory ${install_directories})
|
||||
if(IS_DIRECTORY ${install_directory})
|
||||
install(DIRECTORY ${install_directory}
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
FILES_MATCHING
|
||||
PATTERN "*.h"
|
||||
PATTERN "*.hpp"
|
||||
)
|
||||
endif()
|
||||
endforeach()
|
||||
elseif(${ARGC} EQUAL 1)
|
||||
# install specified directories only
|
||||
foreach(install_directory ${ARGV0})
|
||||
install(DIRECTORY ${install_directory}
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
FILES_MATCHING
|
||||
PATTERN "*.h"
|
||||
PATTERN "*.hpp"
|
||||
)
|
||||
endforeach()
|
||||
else()
|
||||
message(FATAL_ERROR "FlexivInstallLibrary take 0 or 1 argument, but given ${ARGC}")
|
||||
endif()
|
||||
|
||||
# Create a *config-version.cmake file so that find_package can have a version specified
|
||||
include(CMakePackageConfigHelpers)
|
||||
write_basic_package_version_file(
|
||||
"${PROJECT_NAME}-config-version.cmake"
|
||||
VERSION ${PROJECT_VERSION}
|
||||
COMPATIBILITY AnyNewerVersion
|
||||
)
|
||||
|
||||
# Copy the *-targets.cmake file to the CMAKE_INSTALL_PREFIX directory
|
||||
install(EXPORT "${PROJECT_NAME}-targets"
|
||||
FILE "${PROJECT_NAME}-targets.cmake"
|
||||
NAMESPACE "flexiv::"
|
||||
DESTINATION "lib/cmake/${PROJECT_NAME}"
|
||||
)
|
||||
|
||||
# Copy the *.-config file to the CMAKE_INSTALL_PREFIX directory. This will specify the dependencies.
|
||||
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/${PROJECT_NAME}-config.cmake.in" "${PROJECT_NAME}-config.cmake" @ONLY)
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake"
|
||||
DESTINATION "lib/cmake/${PROJECT_NAME}"
|
||||
)
|
||||
|
||||
# Replace the dummy static lib with the actual static lib
|
||||
install(CODE
|
||||
"file(REMOVE ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}${PROJECT_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX})")
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${RDK_LIB}
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
RENAME ${CMAKE_STATIC_LIBRARY_PREFIX}${PROJECT_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX}
|
||||
)
|
||||
|
||||
# Use the CPack Package Generator
|
||||
set(CPACK_PACKAGE_VENDOR "Flexiv")
|
||||
set(CPACK_PACKAGE_CONTACT "support@flexiv.com")
|
||||
set(CPACK_PACKAGE_DESCRIPTION "Flexiv RDK (Robotic Development Kit)")
|
||||
set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
|
||||
set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
|
||||
set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
|
||||
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
|
||||
set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
|
||||
include(CPack)
|
||||
endmacro()
|
||||
@@ -0,0 +1,14 @@
|
||||
include(CMakeFindDependencyMacro)
|
||||
|
||||
# Find dependency
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
set(Boost_USE_STATIC_LIBS OFF)
|
||||
find_dependency(Threads REQUIRED)
|
||||
find_dependency(Eigen3 3.4.0 REQUIRED)
|
||||
find_dependency(spdlog 1.9.2 REQUIRED)
|
||||
find_dependency(zenohc 1.9.0 REQUIRED)
|
||||
find_dependency(zenohcxx 1.9.0 REQUIRED)
|
||||
find_dependency(RBDyn 1.9.3 REQUIRED)
|
||||
|
||||
# Add targets file
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@-targets.cmake")
|
||||
@@ -0,0 +1,70 @@
|
||||
# QNX toolchain for cross-compilation of aarch64le ("le" - little endian) target
|
||||
|
||||
# Set target system
|
||||
set(CMAKE_SYSTEM_NAME QNX)
|
||||
set(CMAKE_SYSTEM_PROCESSOR aarch64le)
|
||||
set(arch gcc_ntoaarch64le)
|
||||
|
||||
# specify the cross compiler
|
||||
set(CMAKE_C_COMPILER qcc)
|
||||
set(CMAKE_C_COMPILER_TARGET ${arch})
|
||||
set(CMAKE_CXX_COMPILER q++)
|
||||
set(CMAKE_CXX_COMPILER_TARGET ${arch})
|
||||
|
||||
# Set qnx build flags
|
||||
add_definitions("-D_QNX_SOURCE")
|
||||
|
||||
# Set QNX_TARGET
|
||||
if (DEFINED ENV{QNX_TARGET})
|
||||
set (QNX_TARGET $ENV{QNX_TARGET})
|
||||
else ()
|
||||
message (FATAL_ERROR "NO QNX TARGET ENV DEFINED")
|
||||
endif ()
|
||||
|
||||
# Set the sysroot to the QNX target directory, so the compiler can find the correct headers and libraries for the target system.
|
||||
set(CMAKE_SYSROOT ${QNX_TARGET})
|
||||
|
||||
# Set default cmake_install_prefix
|
||||
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT OR NOT DEFINED CMAKE_INSTALL_PREFIX)
|
||||
set(CMAKE_INSTALL_PREFIX ${QNX_TARGET}/${CMAKE_SYSTEM_PROCESSOR}/usr/local CACHE PATH "cmake install prefix" FORCE)
|
||||
endif()
|
||||
|
||||
# We want to search:
|
||||
# 1. ${CMAKE_PREFIX_PATH}
|
||||
# 2. ${CMAKE_INSTALL_PREFIX}
|
||||
# 3. $ENV{QNX_TARGET}/${CMAKE_SYSTEM_PROCESSOR}/usr/local
|
||||
# 4. $ENV{QNX_TARGET}/${CMAKE_SYSTEM_PROCESSOR}/usr
|
||||
# 5. $ENV{QNX_TARGET}/${CMAKE_SYSTEM_PROCESSOR}
|
||||
# 6. $ENV{QNX_TARGET}/usr
|
||||
#
|
||||
# To accomplish 3-6, append CMAKE_FIND_ROOT_PATH with:
|
||||
# - $ENV{QNX_TARGET}/${CMAKE_SYSTEM_PROCESSOR}
|
||||
# - $ENV{QNX_TARGET}/usr
|
||||
#
|
||||
# However, CMAKE_FIND_ROOT_PATH will also be prepended to CMAKE_PREFIX_PATH and CMAKE_INSTALL_PREFIX.
|
||||
# In order to search these without the prefix,
|
||||
# append CMAKE_FIND_ROOT_PATH with:
|
||||
# - CMAKE_PREFIX_PATH
|
||||
# - CMAKE_INSTALL_PREFIX
|
||||
#
|
||||
# For details, see Confluence page: "Intro to CMake find_package()"
|
||||
if (DEFINED CMAKE_PREFIX_PATH)
|
||||
list(APPEND CMAKE_FIND_ROOT_PATH ${CMAKE_PREFIX_PATH})
|
||||
endif()
|
||||
list(APPEND CMAKE_FIND_ROOT_PATH ${CMAKE_INSTALL_PREFIX})
|
||||
list(APPEND CMAKE_FIND_ROOT_PATH ${QNX_TARGET}/${CMAKE_SYSTEM_PROCESSOR} ${QNX_TARGET}/usr)
|
||||
|
||||
# Remove duplicates, since we are appending
|
||||
list(REMOVE_DUPLICATES CMAKE_FIND_ROOT_PATH)
|
||||
|
||||
# Search only the paths prefixed with CMAKE_FIND_ROOT_PATH
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
|
||||
# QNX does not support -pthread compiler flag,
|
||||
# because pthread is already part of the c library
|
||||
# However, FindThreads.cmake incorrectly sets CMAKE_HAVE_LIBC_PTHREAD OFF
|
||||
# See: https://gitlab.kitware.com/cmake/cmake/-/issues/21579
|
||||
set(CMAKE_HAVE_LIBC_PTHREAD ON)
|
||||
@@ -0,0 +1,70 @@
|
||||
# QNX toolchain for cross-compilation of x86_64 target
|
||||
|
||||
# Set target system
|
||||
set(CMAKE_SYSTEM_NAME QNX)
|
||||
set(CMAKE_SYSTEM_PROCESSOR x86_64)
|
||||
set(arch gcc_ntox86_64)
|
||||
|
||||
# Specify the cross compiler
|
||||
set(CMAKE_C_COMPILER qcc)
|
||||
set(CMAKE_C_COMPILER_TARGET ${arch})
|
||||
set(CMAKE_CXX_COMPILER q++)
|
||||
set(CMAKE_CXX_COMPILER_TARGET ${arch})
|
||||
|
||||
# Set qnx build flags
|
||||
add_definitions("-D_QNX_SOURCE")
|
||||
|
||||
# Set QNX_TARGET
|
||||
if (DEFINED ENV{QNX_TARGET})
|
||||
set (QNX_TARGET $ENV{QNX_TARGET})
|
||||
else ()
|
||||
message (FATAL_ERROR "NO QNX TARGET ENV DEFINED")
|
||||
endif ()
|
||||
|
||||
# Set the sysroot to the QNX target directory, so the compiler can find the correct headers and libraries for the target system.
|
||||
set(CMAKE_SYSROOT ${QNX_TARGET})
|
||||
|
||||
# Set default cmake_install_prefix
|
||||
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT OR NOT DEFINED CMAKE_INSTALL_PREFIX)
|
||||
set(CMAKE_INSTALL_PREFIX ${QNX_TARGET}/${CMAKE_SYSTEM_PROCESSOR}/usr/local CACHE PATH "cmake install prefix" FORCE)
|
||||
endif()
|
||||
|
||||
# We want to search:
|
||||
# 1. ${CMAKE_PREFIX_PATH}
|
||||
# 2. ${CMAKE_INSTALL_PREFIX}
|
||||
# 3. $ENV{QNX_TARGET}/${CMAKE_SYSTEM_PROCESSOR}/usr/local
|
||||
# 4. $ENV{QNX_TARGET}/${CMAKE_SYSTEM_PROCESSOR}/usr
|
||||
# 5. $ENV{QNX_TARGET}/${CMAKE_SYSTEM_PROCESSOR}
|
||||
# 6. $ENV{QNX_TARGET}/usr
|
||||
#
|
||||
# To accomplish 3-6, append CMAKE_FIND_ROOT_PATH with:
|
||||
# - $ENV{QNX_TARGET}/${CMAKE_SYSTEM_PROCESSOR}
|
||||
# - $ENV{QNX_TARGET}/usr
|
||||
#
|
||||
# However, CMAKE_FIND_ROOT_PATH will also be prepended to CMAKE_PREFIX_PATH and CMAKE_INSTALL_PREFIX.
|
||||
# In order to search these without the prefix,
|
||||
# append CMAKE_FIND_ROOT_PATH with:
|
||||
# - CMAKE_PREFIX_PATH
|
||||
# - CMAKE_INSTALL_PREFIX
|
||||
#
|
||||
# For details, see Confluence page: "Intro to CMake find_package()"
|
||||
if (DEFINED CMAKE_PREFIX_PATH)
|
||||
list(APPEND CMAKE_FIND_ROOT_PATH ${CMAKE_PREFIX_PATH})
|
||||
endif()
|
||||
list(APPEND CMAKE_FIND_ROOT_PATH ${CMAKE_INSTALL_PREFIX})
|
||||
list(APPEND CMAKE_FIND_ROOT_PATH ${QNX_TARGET}/${CMAKE_SYSTEM_PROCESSOR} ${QNX_TARGET}/usr)
|
||||
|
||||
# Remove duplicates, since we are appending
|
||||
list(REMOVE_DUPLICATES CMAKE_FIND_ROOT_PATH)
|
||||
|
||||
# Search only the paths prefixed with CMAKE_FIND_ROOT_PATH
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
|
||||
# QNX does not support -pthread compiler flag,
|
||||
# because pthread is already part of the c library
|
||||
# However, FindThreads.cmake incorrectly sets CMAKE_HAVE_LIBC_PTHREAD OFF
|
||||
# See: https://gitlab.kitware.com/cmake/cmake/-/issues/21579
|
||||
set(CMAKE_HAVE_LIBC_PTHREAD ON)
|
||||
Reference in New Issue
Block a user