add CMake options to disable certain targets and fix a few compiler warnings

checksum-failure-logging
Jeffrey Quesnelle 2019-10-17 09:43:50 -04:00
parent 423f854682
commit b990e03343
2 changed files with 51 additions and 43 deletions

View File

@ -1,8 +1,11 @@
cmake_minimum_required(VERSION 3.2) cmake_minimum_required(VERSION 3.2)
project(libicsneo VERSION 0.2.0) project(libicsneo VERSION 0.2.0)
option(BUILD_TESTS "Build all tests." OFF) option(LIBICSNEO_BUILD_TESTS "Build all tests." OFF)
option(BUILD_DOCS "Build documentation. Don't use in Visual Studio." OFF) option(LIBICSNEO_BUILD_DOCS "Build documentation. Don't use in Visual Studio." OFF)
option(LIBICSNEO_BUILD_ICSNEOC "Build dynamic C library" ON)
option(LIBICSNEO_BUILD_ICSNEOC_STATIC "Build static C library" ON)
option(LIBICSNEO_BUILD_ICSNEOLEGACY "Build icsnVC40 compatibility library" ON)
set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD 11)
@ -32,7 +35,7 @@ if(DOXYGEN_FOUND)
endif() endif()
endif() endif()
if(BUILD_DOCS) if(LIBICSNEO_BUILD_DOCS)
if(DOXYGEN_FOUND) if(DOXYGEN_FOUND)
message("Will build Doxygen based documentation") message("Will build Doxygen based documentation")
@ -151,6 +154,7 @@ target_include_directories(icsneocpp
${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}/include
) )
set_property(TARGET icsneocpp PROPERTY POSITION_INDEPENDENT_CODE ON) set_property(TARGET icsneocpp PROPERTY POSITION_INDEPENDENT_CODE ON)
target_compile_features(icsneocpp PUBLIC cxx_auto_type cxx_constexpr cxx_lambdas cxx_nullptr cxx_range_for cxx_rvalue_references cxx_sizeof_member cxx_strong_enums)
# libftdi # libftdi
if(NOT WIN32) if(NOT WIN32)
@ -171,44 +175,48 @@ if(WIN32)
add_definitions(-DWPCAP -DHAVE_REMOTE -DWIN32_LEAN_AND_MEAN) add_definitions(-DWPCAP -DHAVE_REMOTE -DWIN32_LEAN_AND_MEAN)
endif(WIN32) endif(WIN32)
add_library(icsneoc SHARED api/icsneoc/icsneoc.cpp ${CMAKE_CURRENT_BINARY_DIR}/generated/icsneoc/version.rc) if(LIBICSNEO_BUILD_ICSNEOC)
target_include_directories(icsneoc add_library(icsneoc SHARED api/icsneoc/icsneoc.cpp ${CMAKE_CURRENT_BINARY_DIR}/generated/icsneoc/version.rc)
PUBLIC target_include_directories(icsneoc
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> PUBLIC
$<INSTALL_INTERFACE:> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
PRIVATE $<INSTALL_INTERFACE:>
${CMAKE_CURRENT_SOURCE_DIR}/include PRIVATE
) ${CMAKE_CURRENT_SOURCE_DIR}/include
target_link_libraries(icsneoc PRIVATE icsneocpp) )
target_link_libraries(icsneoc PRIVATE icsneocpp)
target_compile_features(icsneoc PRIVATE cxx_auto_type cxx_constexpr cxx_lambdas cxx_nullptr cxx_range_for cxx_rvalue_references cxx_sizeof_member cxx_strong_enums)
endif()
add_library(icsneoc-static STATIC api/icsneoc/icsneoc.cpp) if(LIBICSNEO_BUILD_ICSNEOC_STATIC)
target_include_directories(icsneoc-static add_library(icsneoc-static STATIC api/icsneoc/icsneoc.cpp)
PUBLIC target_include_directories(icsneoc-static
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> PUBLIC
$<INSTALL_INTERFACE:> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
PRIVATE $<INSTALL_INTERFACE:>
${CMAKE_CURRENT_SOURCE_DIR}/include PRIVATE
) ${CMAKE_CURRENT_SOURCE_DIR}/include
target_link_libraries(icsneoc-static PUBLIC icsneocpp) )
target_link_libraries(icsneoc-static PUBLIC icsneocpp)
target_compile_features(icsneoc-static PUBLIC cxx_auto_type cxx_constexpr cxx_lambdas cxx_nullptr cxx_range_for cxx_rvalue_references cxx_sizeof_member cxx_strong_enums)
endif()
add_library(icsneolegacy SHARED if(LIBICSNEO_BUILD_ICSNEOLEGACY)
api/icsneolegacy/icsneolegacy.cpp add_library(icsneolegacy SHARED
api/icsneolegacy/icsneolegacyextra.cpp api/icsneolegacy/icsneolegacy.cpp
api/icsneoc/icsneoc.cpp api/icsneolegacy/icsneolegacyextra.cpp
) api/icsneoc/icsneoc.cpp
target_include_directories(icsneolegacy )
PUBLIC target_include_directories(icsneolegacy
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> PUBLIC
$<INSTALL_INTERFACE:> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
PRIVATE $<INSTALL_INTERFACE:>
${CMAKE_CURRENT_SOURCE_DIR}/include PRIVATE
) ${CMAKE_CURRENT_SOURCE_DIR}/include
target_link_libraries(icsneolegacy PRIVATE icsneocpp) )
target_link_libraries(icsneolegacy PRIVATE icsneocpp)
target_compile_features(icsneocpp PUBLIC cxx_auto_type cxx_constexpr cxx_lambdas cxx_nullptr cxx_range_for cxx_rvalue_references cxx_sizeof_member cxx_strong_enums) target_compile_features(icsneolegacy PRIVATE cxx_auto_type cxx_constexpr cxx_lambdas cxx_nullptr cxx_range_for cxx_rvalue_references cxx_sizeof_member cxx_strong_enums)
target_compile_features(icsneoc PRIVATE cxx_auto_type cxx_constexpr cxx_lambdas cxx_nullptr cxx_range_for cxx_rvalue_references cxx_sizeof_member cxx_strong_enums) endif()
target_compile_features(icsneoc-static PUBLIC cxx_auto_type cxx_constexpr cxx_lambdas cxx_nullptr cxx_range_for cxx_rvalue_references cxx_sizeof_member cxx_strong_enums)
target_compile_features(icsneolegacy PRIVATE cxx_auto_type cxx_constexpr cxx_lambdas cxx_nullptr cxx_range_for cxx_rvalue_references cxx_sizeof_member cxx_strong_enums)
# libftdi # libftdi
if(NOT WIN32) if(NOT WIN32)
@ -221,7 +229,7 @@ if(NOT WIN32)
endif() endif()
# googletest # googletest
if(BUILD_TESTS) if(LIBICSNEO_BUILD_TESTS)
if(WIN32) if(WIN32)
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
endif() endif()

View File

@ -232,7 +232,7 @@ int icsneo_getPollingMessageLimit(const neodevice_t* device) {
if(!icsneo_isValidNeoDevice(device)) if(!icsneo_isValidNeoDevice(device))
return -1; return -1;
return device->device->getPollingMessageLimit(); return (int)device->device->getPollingMessageLimit();
} }
bool icsneo_setPollingMessageLimit(const neodevice_t* device, size_t newLimit) { bool icsneo_setPollingMessageLimit(const neodevice_t* device, size_t newLimit) {
@ -352,7 +352,7 @@ int icsneo_settingsReadStructure(const neodevice_t* device, void* structure, siz
size_t readSize = device->device->settings->getSize(); size_t readSize = device->device->settings->getSize();
if(structure == nullptr) // Structure size request if(structure == nullptr) // Structure size request
return readSize; return (int)readSize;
if(readSize > structureSize) { if(readSize > structureSize) {
// Client application has a smaller structure than we do // Client application has a smaller structure than we do
// It is probably built against an older version of the API // It is probably built against an older version of the API
@ -371,7 +371,7 @@ int icsneo_settingsReadStructure(const neodevice_t* device, void* structure, siz
if(readSize < structureSize) // Client application is attempting to read more than we have if(readSize < structureSize) // Client application is attempting to read more than we have
memset((uint8_t*)structure + readSize, 0, structureSize - readSize); memset((uint8_t*)structure + readSize, 0, structureSize - readSize);
return readSize; return (int)readSize;
} }
// Not exported // Not exported