diff --git a/.travis.yml b/.travis.yml
index 560a56a..312d0dd 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -30,17 +30,17 @@ osx_xcode94: &osx_xcode94
matrix:
include:
- <<: *linux_gcc8
- env: [ BUILD_TYPE=Debug, C_COMPILER=gcc-8, CXX_COMPILER=g++-8 ]
+ env: [ BUILD_TYPE=Debug, C_COMPILER=gcc-8, CXX_COMPILER=g++-8, USE_SANITIZER=none ]
- <<: *linux_gcc8
- env: [ BUILD_TYPE=Release, C_COMPILER=gcc-8, CXX_COMPILER=g++-8 ]
+ env: [ BUILD_TYPE=Release, C_COMPILER=gcc-8, CXX_COMPILER=g++-8, USE_SANITIZER=none ]
- <<: *linux_clang60
- env: [ BUILD_TYPE=Debug, C_COMPILER=clang-6.0, CXX_COMPILER=clang++-6.0 ]
+ env: [ BUILD_TYPE=Debug, C_COMPILER=clang-6.0, CXX_COMPILER=clang++-6.0, USE_SANITIZER=address ]
- <<: *linux_clang60
- env: [ BUILT_TYPE=Release, C_COMPILER=clang-6.0, CXX_COMPILER=clang++-6.0 ]
+ env: [ BUILT_TYPE=Release, C_COMPILER=clang-6.0, CXX_COMPILER=clang++-6.0, USE_SANITIZER=none ]
- <<: *osx_xcode94
- env: [ BUILD_TYPE=Debug, C_COMPILER=clang, CXX_COMPILER=clang++ ]
+ env: [ BUILD_TYPE=Debug, C_COMPILER=clang, CXX_COMPILER=clang++, USE_SANITIZER=address ]
- <<: *osx_xcode94
- env: [ BUILD_TYPE=Release, C_COMPILER=clang, CXX_COMPILER=clang++ ]
+ env: [ BUILD_TYPE=Release, C_COMPILER=clang, CXX_COMPILER=clang++, USE_SANITIZER=none ]
before_install:
@@ -67,7 +67,12 @@ script:
- mkdir build
- cd build
- conan install ..
- - cmake -DBUILD_TESTING=on -DCMAKE_BUILD_TYPE=${BUILD_TYPE} ../src
- - cmake --build .
+ - cmake -DBUILD_TESTING=on -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DUSE_SANITIZER=${USE_SANITIZER} -DCMAKE_INSTALL_PREFIX=${PWD}/install ../src
+ - cmake --build . --target install
+ - mkdir install/share/CycloneDDS/examples/helloworld/build
+ - if [ "$USE_SANITIZER" = "none" ]; then
+ (cd install/share/CycloneDDS/examples/helloworld/build && cmake -DCMAKE_BUILD_TYPE=${BUILD_TYPE} .. && cmake --build .) ;
+ else
+ (cd install/share/CycloneDDS/examples/helloworld/build && cmake -DCMAKE_C_FLAGS=-fsanitize=address -DCMAKE_LINKER_FLAGS=-fsanitize=address -DCMAKE_BUILD_TYPE=${BUILD_TYPE} .. && cmake --build .) ;
+ fi
- ctest -T test
-
diff --git a/appveyor.yml b/appveyor.yml
index 8d7aef4..1d1f034 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -36,9 +36,14 @@ build_script:
- mkdir build
- cd build
- conan install -s arch=%ARCH% -s build_type=%CONFIGURATION% ..
- - cmake -DBUILD_TESTING=on -DCMAKE_BUILD_TYPE=%CONFIGURATION% -G "%GENERATOR%" ../src
+ - cmake -DBUILD_TESTING=on -DCMAKE_BUILD_TYPE=%CONFIGURATION% -DCMAKE_INSTALL_PREFIX=%CD%/install -G "%GENERATOR%" ../src
+ - cmake --build . --config %CONFIGURATION% --target install
+ - cd install/share/CycloneDDS/examples/helloworld
+ - mkdir build
+ - cd build
+ - cmake -DCMAKE_BUILD_TYPE=%CONFIGURATION% -G "%GENERATOR%" ..
- cmake --build . --config %CONFIGURATION%
+ - cd ../../../../../..
test_script:
- ctest --test-action test --build-config %CONFIGURATION%
-
diff --git a/src/os/CMakeLists.txt b/src/os/CMakeLists.txt
index e95ac92..83e1afd 100644
--- a/src/os/CMakeLists.txt
+++ b/src/os/CMakeLists.txt
@@ -57,6 +57,7 @@ add_library(OSAPI ${sources})
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
find_package(Threads REQUIRED)
target_link_libraries(OSAPI INTERFACE Threads::Threads)
+set_property(TARGET OSAPI PROPERTY POSITION_INDEPENDENT_CODE TRUE)
if(WIN32)
# Link with Win32 core-libraries
@@ -73,17 +74,13 @@ if(WIN32)
target_compile_definitions(OSAPI PRIVATE _WINSOCK_DEPRECATED_NO_WARNINGS)
# Disable warnings for deprecated POSIX names.
target_compile_definitions(OSAPI PRIVATE -D_CRT_NONSTDC_NO_DEPRECATE)
-elseif(UNIX AND NOT APPLE)
- if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64")
- # Shared libs will have this by default. Static libs need it too on x86_64.
- set_property(TARGET OSAPI PROPERTY POSITION_INDEPENDENT_CODE TRUE)
- endif()
-
+elseif(UNIX)
check_library_exists(c clock_gettime "" HAVE_CLOCK_GETTIME)
if(NOT HAVE_CLOCK_GETTIME)
# Before glibc 2.17, clock_gettime was in librt.
- check_library_exists(rt clock_gettime "time.h" HAVE_CLOCK_GETTIME)
- if(HAVE_CLOCK_GETTIME)
+ check_library_exists(rt clock_gettime "time.h" HAVE_CLOCK_GETTIME_RT)
+ if(HAVE_CLOCK_GETTIME_RT)
+ set(HAVE_CLOCK_GETTIME "${HAVE_CLOCK_GETTIME_RT}")
target_link_libraries(OSAPI INTERFACE rt)
endif()
endif()
@@ -95,7 +92,6 @@ endif()
if(${CMAKE_C_COMPILER_ID} STREQUAL "SunPro")
target_link_libraries(OSAPI INTERFACE -lsocket -lnsl)
- add_definitions(-KPIC)
endif()
# Determine if platform is big or little endian.
@@ -124,12 +120,18 @@ if(BUILD_TESTING)
add_subdirectory(tests)
endif()
+if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/include/os/${system_name}/os_platform_public.h")
+ set(os_platform_public_h "${CMAKE_CURRENT_SOURCE_DIR}/include/os/${system_name}/os_platform_public.h")
+else()
+ set(os_platform_public_h "${CMAKE_CURRENT_SOURCE_DIR}/include/os/posix/os_platform_public.h")
+endif()
+
install(
FILES
"${CMAKE_CURRENT_SOURCE_DIR}/include/os/os_public.h"
"${CMAKE_CURRENT_SOURCE_DIR}/include/os/os_decl_attributes.h"
"${CMAKE_CURRENT_SOURCE_DIR}/include/os/os_decl_attributes_sal.h"
- "${CMAKE_CURRENT_SOURCE_DIR}/include/os/${system_name}/os_platform_public.h"
+ "${os_platform_public_h}"
DESTINATION
"${CMAKE_INSTALL_INCLUDEDIR}/ddsc/os"
COMPONENT
diff --git a/src/util/CMakeLists.txt b/src/util/CMakeLists.txt
index e9dd89e..109a2db 100644
--- a/src/util/CMakeLists.txt
+++ b/src/util/CMakeLists.txt
@@ -19,10 +19,7 @@ add_library(util ${srcs_util})
generate_export_header(util EXPORT_FILE_NAME "${CMAKE_CURRENT_BINARY_DIR}/exports/util/ut_export.h")
target_link_libraries(util PUBLIC OSAPI)
-if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64")
- # Shared libs will have this by default. Static libs need it too on x86_64.
- set_property(TARGET util PROPERTY POSITION_INDEPENDENT_CODE TRUE)
-endif()
+set_property(TARGET util PROPERTY POSITION_INDEPENDENT_CODE TRUE)
target_include_directories(
util PUBLIC
@@ -31,10 +28,6 @@ target_include_directories(
"$"
"$")
-if(${CMAKE_C_COMPILER_ID} STREQUAL "SunPro")
- add_definitions(-KPIC)
-endif()
-
# TODO: improve test inclusion.
if((BUILD_TESTING) AND ((NOT DEFINED MSVC_VERSION) OR (MSVC_VERSION GREATER "1800")))
add_subdirectory(tests)