239 lines
8.3 KiB
CMake
239 lines
8.3 KiB
CMake
################################################################################
|
|
#APPEND_TO_CACHED_STRING(_string _cacheDesc [items...])
|
|
# Appends items to a cached list.
|
|
MACRO (APPEND_TO_CACHED_STRING _string _cacheDesc)
|
|
FOREACH (newItem ${ARGN})
|
|
SET (${_string} "${${_string}} ${newItem}" CACHE INTERNAL ${_cacheDesc} FORCE)
|
|
ENDFOREACH (newItem ${ARGN})
|
|
#STRING(STRIP ${${_string}} ${_string})
|
|
ENDMACRO (APPEND_TO_CACHED_STRING)
|
|
|
|
################################################################################
|
|
# APPEND_TO_CACHED_LIST (_list _cacheDesc [items...]
|
|
# Appends items to a cached list.
|
|
MACRO (APPEND_TO_CACHED_LIST _list _cacheDesc)
|
|
SET (tempList ${${_list}})
|
|
FOREACH (newItem ${ARGN})
|
|
LIST (APPEND tempList ${newItem})
|
|
ENDFOREACH (newItem ${newItem})
|
|
SET (${_list} ${tempList} CACHE INTERNAL ${_cacheDesc} FORCE)
|
|
ENDMACRO(APPEND_TO_CACHED_LIST)
|
|
|
|
###############################################################################
|
|
# Append sources to the server sources list
|
|
MACRO (APPEND_TO_SERVER_SOURCES)
|
|
FOREACH (src ${ARGN})
|
|
APPEND_TO_CACHED_LIST(gazeboserver_sources
|
|
${gazeboserver_sources_desc}
|
|
${CMAKE_CURRENT_SOURCE_DIR}/${src})
|
|
ENDFOREACH (src ${ARGN})
|
|
ENDMACRO (APPEND_TO_SERVER_SOURCES)
|
|
|
|
###############################################################################
|
|
# Append headers to the server headers list
|
|
MACRO (APPEND_TO_SERVER_HEADERS)
|
|
FOREACH (src ${ARGN})
|
|
APPEND_TO_CACHED_LIST(gazeboserver_headers
|
|
${gazeboserver_headers_desc}
|
|
${CMAKE_CURRENT_SOURCE_DIR}/${src})
|
|
APPEND_TO_CACHED_LIST(gazeboserver_headers_nopath
|
|
"gazeboserver_headers_nopath"
|
|
${src})
|
|
ENDFOREACH (src ${ARGN})
|
|
ENDMACRO (APPEND_TO_SERVER_HEADERS)
|
|
|
|
###############################################################################
|
|
# Append sources to the sensor sources list
|
|
MACRO (APPEND_TO_SENSOR_SOURCES)
|
|
FOREACH (src ${ARGN})
|
|
APPEND_TO_CACHED_LIST(gazebosensor_sources
|
|
${gazebosensor_sources_desc}
|
|
${CMAKE_CURRENT_SOURCE_DIR}/${src})
|
|
ENDFOREACH (src ${ARGN})
|
|
ENDMACRO (APPEND_TO_SENSOR_SOURCES)
|
|
|
|
###############################################################################
|
|
# Append sources to the controller sources list
|
|
MACRO (APPEND_TO_CONTROLLER_SOURCES)
|
|
FOREACH (src ${ARGN})
|
|
APPEND_TO_CACHED_LIST(gazebocontroller_sources
|
|
${gazebocontroller_sources_desc}
|
|
${CMAKE_CURRENT_SOURCE_DIR}/${src})
|
|
ENDFOREACH (src ${ARGN})
|
|
ENDMACRO (APPEND_TO_CONTROLLER_SOURCES)
|
|
|
|
|
|
#################################################
|
|
# Macro to turn a list into a string (why doesn't CMake have this built-in?)
|
|
MACRO (LIST_TO_STRING _string _list)
|
|
SET (${_string})
|
|
FOREACH (_item ${_list})
|
|
SET (${_string} "${${_string}} ${_item}")
|
|
ENDFOREACH (_item)
|
|
#STRING(STRIP ${${_string}} ${_string})
|
|
ENDMACRO (LIST_TO_STRING)
|
|
|
|
#################################################
|
|
# BUILD ERROR macro
|
|
macro (BUILD_ERROR)
|
|
foreach (str ${ARGN})
|
|
SET (msg "\t${str}")
|
|
MESSAGE (STATUS ${msg})
|
|
APPEND_TO_CACHED_LIST(build_errors "build errors" ${msg})
|
|
endforeach ()
|
|
endmacro (BUILD_ERROR)
|
|
|
|
#################################################
|
|
# BUILD WARNING macro
|
|
macro (BUILD_WARNING)
|
|
foreach (str ${ARGN})
|
|
SET (msg "\t${str}" )
|
|
MESSAGE (STATUS ${msg} )
|
|
APPEND_TO_CACHED_LIST(build_warnings "build warning" ${msg})
|
|
endforeach (str ${ARGN})
|
|
endmacro (BUILD_WARNING)
|
|
|
|
#################################################
|
|
macro (gz_add_library _name)
|
|
# Not defining STATIC or SHARED will use BUILD_SHARED_LIBS variable
|
|
add_library(${_name} ${ARGN})
|
|
target_link_libraries (${_name} ${general_libraries})
|
|
endmacro ()
|
|
|
|
#################################################
|
|
macro (gz_add_executable _name)
|
|
add_executable(${_name} ${ARGN})
|
|
target_link_libraries (${_name} ${general_libraries})
|
|
endmacro ()
|
|
|
|
|
|
#################################################
|
|
macro (gz_install_includes _subdir)
|
|
install(FILES ${ARGN} DESTINATION ${INCLUDE_INSTALL_DIR}/${_subdir} COMPONENT headers)
|
|
endmacro()
|
|
|
|
#################################################
|
|
macro (gz_install_library _name)
|
|
set_target_properties(${_name} PROPERTIES SOVERSION ${GAZEBO_MAJOR_VERSION} VERSION ${GAZEBO_VERSION_FULL})
|
|
install (TARGETS ${_name} DESTINATION ${LIB_INSTALL_DIR} COMPONENT shlib)
|
|
endmacro ()
|
|
|
|
#################################################
|
|
macro (gz_install_executable _name)
|
|
set_target_properties(${_name} PROPERTIES VERSION ${GAZEBO_VERSION_FULL})
|
|
install (TARGETS ${_name} DESTINATION ${BIN_INSTALL_DIR})
|
|
endmacro ()
|
|
|
|
#################################################
|
|
macro (gz_setup_unix)
|
|
# Using dynamic linking in UNIX by default
|
|
set(BUILD_SHARED_LIBS TRUE)
|
|
endmacro()
|
|
|
|
#################################################
|
|
macro (gz_setup_windows)
|
|
# Using static linking in Windows by default
|
|
set(BUILD_SHARED_LIBS FALSE)
|
|
add_definitions(-DBUILDING_STATIC_LIBS -DWIN32_LEAN_AND_MEAN)
|
|
|
|
# Need for M_PI constant
|
|
add_definitions(-D_USE_MATH_DEFINES)
|
|
|
|
# Don't pull in the Windows min/max macros
|
|
add_definitions(-DNOMINMAX)
|
|
|
|
#use static libraries for FREEIMAGE
|
|
add_definitions(-DFREEIMAGE_LIB)
|
|
|
|
# Use dynamic linking for boost
|
|
add_definitions(-DBOOST_ALL_DYN_LINK)
|
|
|
|
# And force linking to MSVC dynamic runtime
|
|
if ("${CMAKE_BUILD_TYPE_UPPERCASE}" STREQUAL "DEBUG")
|
|
add_definitions("/MDd")
|
|
else()
|
|
add_definitions("/MD")
|
|
endif()
|
|
|
|
# And we want exceptions
|
|
add_definitions("/EHsc")
|
|
|
|
if (MSVC AND CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
# Not need if proper cmake gnerator (-G "...Win64") is passed to cmake
|
|
# Enable as a second measure to workaround over bug
|
|
# http://www.cmake.org/Bug/print_bug_page.php?bug_id=11240
|
|
set(CMAKE_SHARED_LINKER_FLAGS "/machine:x64")
|
|
endif()
|
|
endmacro()
|
|
|
|
#################################################
|
|
macro (gz_setup_apple)
|
|
# NOTE MacOSX provides different system versions than CMake is parsing.
|
|
# The following table lists the most recent OSX versions
|
|
# 9.x.x = Mac OSX Leopard (10.5)
|
|
# 10.x.x = Mac OSX Snow Leopard (10.6)
|
|
# 11.x.x = Mac OSX Lion (10.7)
|
|
# 12.x.x = Mac OSX Mountain Lion (10.8)
|
|
if (${CMAKE_SYSTEM_VERSION} LESS 10)
|
|
add_definitions(-DMAC_OS_X_VERSION=1050)
|
|
elseif (${CMAKE_SYSTEM_VERSION} GREATER 10 AND ${CMAKE_SYSTEM_VERSION} LESS 11)
|
|
add_definitions(-DMAC_OS_X_VERSION=1060)
|
|
elseif (${CMAKE_SYSTEM_VERSION} GREATER 11 AND ${CMAKE_SYSTEM_VERSION} LESS 12)
|
|
add_definitions(-DMAC_OS_X_VERSION=1070)
|
|
elseif (${CMAKE_SYSTEM_VERSION} GREATER 12 OR ${CMAKE_SYSTEM_VERSION} EQUAL 12)
|
|
add_definitions(-DMAC_OS_X_VERSION=1080)
|
|
else ()
|
|
add_definitions(-DMAC_OS_X_VERSION=0)
|
|
endif ()
|
|
|
|
# libstdc++ used on 10.8 and earlier
|
|
# libc++ after that
|
|
if (${CMAKE_SYSTEM_VERSION} LESS 13)
|
|
set (APPLE_PKGCONFIG_LIBS "${APPLE_PKGCONFIG_LIBS} -lstdc++")
|
|
else()
|
|
set (APPLE_PKGCONFIG_LIBS "${APPLE_PKGCONFIG_LIBS} -lc++")
|
|
endif()
|
|
|
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-undefined -Wl,dynamic_lookup")
|
|
endmacro()
|
|
|
|
# This should be migrated to more fine control solution based on set_property APPEND
|
|
# directories. It's present on cmake 2.8.8 while precise version is 2.8.7
|
|
link_directories(${PROJECT_BINARY_DIR}/test)
|
|
include_directories("${PROJECT_SOURCE_DIR}/test/gtest/include")
|
|
|
|
#################################################
|
|
# Enable tests compilation by default
|
|
if (NOT DEFINED ENABLE_TESTS_COMPILATION)
|
|
set (ENABLE_TESTS_COMPILATION True)
|
|
endif()
|
|
|
|
# Define testing macros as empty and redefine them if support is found and
|
|
# ENABLE_TESTS_COMPILATION is set to true
|
|
macro (gz_build_tests)
|
|
endmacro()
|
|
macro (gz_build_qt_tests)
|
|
endmacro()
|
|
macro (gz_build_display_tests)
|
|
endmacro()
|
|
macro (gz_build_dri_tests)
|
|
endmacro()
|
|
|
|
if (ENABLE_TESTS_COMPILATION)
|
|
include (${gazebo_cmake_dir}/GazeboTestUtils.cmake)
|
|
endif()
|
|
|
|
#################################################
|
|
# Macro to setup supported compiler flags
|
|
# Based on work of Florent Lamiraux, Thomas Moulard, JRL, CNRS/AIST.
|
|
include(CheckCXXCompilerFlag)
|
|
|
|
macro(filter_valid_compiler_flags)
|
|
foreach(flag ${ARGN})
|
|
CHECK_CXX_COMPILER_FLAG(${flag} R${flag})
|
|
if(${R${flag}})
|
|
set(VALID_CXX_FLAGS "${VALID_CXX_FLAGS} ${flag}")
|
|
endif()
|
|
endforeach()
|
|
endmacro()
|