### # Internal Verbosity Header ### if(BUILD_DEV_VERBOSE) set(OSVR_UTIL_DEV_VERBOSE TRUE) endif() configure_file(Verbosity.h.in "${CMAKE_CURRENT_BINARY_DIR}/Verbosity.h") if(BUILD_WITH_LOGGING_SINGLETON) set(OSVR_UTIL_LOG_SINGLETON TRUE) endif() configure_file(LogConfig.h.in "${CMAKE_CURRENT_BINARY_DIR}/LogConfig.h") ### # Platform Config Header (and other external and internal configured headers) ### include(CheckStructHasMember) check_struct_has_member("struct timeval" tv_sec sys/time.h OSVR_HAVE_STRUCT_TIMEVAL_IN_SYS_TIME_H LANGUAGE C) check_struct_has_member("struct timeval" tv_sec winsock2.h OSVR_HAVE_STRUCT_TIMEVAL_IN_WINSOCK2_H LANGUAGE C) configure_file(PlatformConfig.h.in "${CMAKE_CURRENT_BINARY_DIR}/PlatformConfig.h") configure_file(WideToUTF8.h.in "${CMAKE_CURRENT_BINARY_DIR}/WideToUTF8.h" @ONLY) set(CMAKE_REQUIRED_FLAGS ${OSVR_CXX11_FLAGS}) include(CheckCXXSymbolExists) # check for std::align check_cxx_symbol_exists("std::align" "memory" OSVR_HAVE_STDALIGN) configure_file(StdAlignWrapper.h.in "${CMAKE_CURRENT_BINARY_DIR}/StdAlignWrapper.h" @ONLY) ### # Library build ### osvr_setup_lib_vars(Util) osvr_generate_x_macro_now(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/ReportTypesX.h" INVOCATION_NAME OSVR_INVOKE_REPORT_TYPES_XMACRO ELEMENTS ${OSVR_REPORT_TYPES}) set(API "${HEADER_LOCATION}/AlignedMemoryC.h" "${HEADER_LOCATION}/AlignedMemory.h" "${HEADER_LOCATION}/AlignedMemoryUniquePtr.h" "${HEADER_LOCATION}/Angles.h" "${HEADER_LOCATION}/AnnotationMacrosC.h" "${HEADER_LOCATION}/AnyMap_fwd.h" "${HEADER_LOCATION}/AnyMap.h" "${HEADER_LOCATION}/APIBaseC.h" "${HEADER_LOCATION}/BasicTypeTraits.h" "${HEADER_LOCATION}/BinaryLocation.h" "${HEADER_LOCATION}/BoolC.h" "${HEADER_LOCATION}/BoostDeletable.h" "${HEADER_LOCATION}/BoostIsCopyConstructible.h" "${HEADER_LOCATION}/CallbackWrapper.h" "${HEADER_LOCATION}/ChannelCountC.h" "${HEADER_LOCATION}/ClientOpaqueTypesC.h" "${HEADER_LOCATION}/ClientReportTypesC.h" "${HEADER_LOCATION}/ContainerWrapper.h" "${HEADER_LOCATION}/CSVCellGroup.h" "${HEADER_LOCATION}/CSV.h" "${HEADER_LOCATION}/DefaultBool.h" "${HEADER_LOCATION}/DefaultPort.h" "${HEADER_LOCATION}/Deletable.h" "${HEADER_LOCATION}/DeviceCallbackTypesC.h" "${HEADER_LOCATION}/EigenCoreGeometry.h" "${HEADER_LOCATION}/EigenExtras.h" "${HEADER_LOCATION}/EigenFilters.h" "${HEADER_LOCATION}/EigenInterop.h" "${HEADER_LOCATION}/EigenQuatExponentialMap.h" "${HEADER_LOCATION}/ExtractYaw.h" "${HEADER_LOCATION}/Finally.h" "${HEADER_LOCATION}/Flag.h" "${HEADER_LOCATION}/GenericCaller.h" "${HEADER_LOCATION}/GenericDeleter.h" "${HEADER_LOCATION}/GetEnvironmentVariable.h" "${HEADER_LOCATION}/GuardInterfaceDummy.h" "${HEADER_LOCATION}/GuardInterface.h" "${HEADER_LOCATION}/GuardPtr.h" "${HEADER_LOCATION}/ImagingReportTypesC.h" "${HEADER_LOCATION}/IndentingStream.h" "${HEADER_LOCATION}/KeyedOwnershipContainer.h" "${HEADER_LOCATION}/Logger.h" "${HEADER_LOCATION}/Log.h" "${HEADER_LOCATION}/LogLevelC.h" "${HEADER_LOCATION}/LogLevel.h" "${HEADER_LOCATION}/LogNames.h" "${HEADER_LOCATION}/LogRegistry.h" "${HEADER_LOCATION}/MacroToolsC.h" "${HEADER_LOCATION}/MatrixConventionsC.h" "${HEADER_LOCATION}/MatrixConventions.h" "${HEADER_LOCATION}/MatrixEigenAssign.h" "${HEADER_LOCATION}/MessageKeys.h" "${HEADER_LOCATION}/Microsleep.h" "${HEADER_LOCATION}/MiniArgsHandling.h" "${HEADER_LOCATION}/MSStdIntC.h" "${HEADER_LOCATION}/NumberTypeManipulation.h" "${HEADER_LOCATION}/OpenCVTypeDispatch.h" "${HEADER_LOCATION}/OpenCVVersion.h" "${HEADER_LOCATION}/PluginCallbackTypesC.h" "${HEADER_LOCATION}/PluginRegContextC.h" "${HEADER_LOCATION}/PointerWrapper.h" "${HEADER_LOCATION}/PortFlags.h" "${HEADER_LOCATION}/Pose3C.h" "${HEADER_LOCATION}/ProcessUtils.h" "${HEADER_LOCATION}/ProgramOptionsToggleFlags.h" "${HEADER_LOCATION}/ProjectionMatrixFromFOV.h" "${HEADER_LOCATION}/ProjectionMatrix.h" "${HEADER_LOCATION}/QuaternionC.h" "${HEADER_LOCATION}/QuatlibInteropC.h" "${HEADER_LOCATION}/RadialDistortionParametersC.h" "${HEADER_LOCATION}/Rect.h" "${HEADER_LOCATION}/RenderingTypesC.h" "${HEADER_LOCATION}/ResetPointerList.h" "${HEADER_LOCATION}/ResourcePath.h" "${HEADER_LOCATION}/ReturnCodesC.h" "${HEADER_LOCATION}/SharedPtr.h" "${HEADER_LOCATION}/SizedInt.h" "${HEADER_LOCATION}/SkeletonC.h" "${HEADER_LOCATION}/StdDeletable.h" "${HEADER_LOCATION}/StdInt.h" "${HEADER_LOCATION}/StringBufferBuilder.h" "${HEADER_LOCATION}/StringIds.h" "${HEADER_LOCATION}/StringLiteralFileToString.h" "${HEADER_LOCATION}/TimeValueC.h" "${HEADER_LOCATION}/TimeValueChrono.h" "${HEADER_LOCATION}/TimeValue_fwd.h" "${HEADER_LOCATION}/TimeValue.h" "${HEADER_LOCATION}/TreeNodeFullPath.h" "${HEADER_LOCATION}/TreeNode_fwd.h" "${HEADER_LOCATION}/TreeNode.h" "${HEADER_LOCATION}/TreeTraversalVisitor.h" "${HEADER_LOCATION}/TypeSafeId.h" "${HEADER_LOCATION}/TypeSafeIdHash.h" "${HEADER_LOCATION}/UniqueContainer.h" "${HEADER_LOCATION}/UniquePtr.h" "${HEADER_LOCATION}/Util.h" "${HEADER_LOCATION}/ValueOrRange.h" "${HEADER_LOCATION}/Vec2C.h" "${HEADER_LOCATION}/Vec3C.h" "${HEADER_LOCATION}/WindowsVariantC.h" "${CMAKE_CURRENT_BINARY_DIR}/ClientCallbackTypesC.h" "${CMAKE_CURRENT_BINARY_DIR}/Export.h" "${CMAKE_CURRENT_BINARY_DIR}/LogConfig.h" "${CMAKE_CURRENT_BINARY_DIR}/PlatformConfig.h" "${CMAKE_CURRENT_BINARY_DIR}/ReportTypesX.h" "${CMAKE_CURRENT_BINARY_DIR}/StdAlignWrapper.h" "${CMAKE_CURRENT_BINARY_DIR}/Verbosity.h" "${CMAKE_CURRENT_BINARY_DIR}/WideToUTF8.h") set(SOURCE AlignedMemoryC.cpp AnyMap.cpp BinaryLocation.cpp Deletable.cpp GetEnvironmentVariable.cpp GuardInterface.cpp TimeValueC.cpp LogConfig.h.in LogDefaults.h Log.cpp Logger.cpp LogLevelTranslate.h LogRegistry.cpp LogSinks.h LogUtils.h MatrixConventionsC.cpp MessageKeys.cpp PlatformConfig.h.in Verbosity.h.in ClientCallbackTypesC.h.in ClientCallbackTypesCSnippet.h.in WideToUTF8.h.in "${CMAKE_CURRENT_BINARY_DIR}/LogConfig.h" "${CMAKE_CURRENT_BINARY_DIR}/ClientCallbackTypesC.h" "${CMAKE_CURRENT_BINARY_DIR}/StdAlignWrapper.h" "${CMAKE_CURRENT_BINARY_DIR}/Verbosity.h" "${CMAKE_CURRENT_BINARY_DIR}/WideToUTF8.h") osvr_add_library() set_target_properties(${LIBNAME_FULL} PROPERTIES VERSION ${OSVR_VERSION} SOVERSION 0) target_include_directories(${LIBNAME_FULL} PRIVATE ${Boost_INCLUDE_DIRS}) osvr_generate_for_report_types(ClientCallbackTypesC.h.in ClientCallbackTypesCSnippet.h.in "${CMAKE_CURRENT_BINARY_DIR}/ClientCallbackTypesC.h") install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ClientCallbackTypesC.h" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/osvr/${LIBNAME} COMPONENT Devel) # TODO VRPN used in this lib only for gettimeofday wrapper: do we need it? target_link_libraries(${LIBNAME_FULL} PRIVATE vendored-vrpn eigen-headers spdlog boost_filesystem osvrTypePack) if(ANDROID) target_link_libraries(${LIBNAME_FULL} PRIVATE log) endif() if(NOT OSVR_HAVE_STDALIGN) target_link_libraries(${LIBNAME_FULL} PRIVATE libcxx_backports) endif() ### # C++ util library/headers ### osvr_add_cpp_interface_library() # In an installed version, we search and add the dependency in the config script # since we don't need the same version in the same place. target_include_directories(${LIBNAME_INTERFACE} INTERFACE $) target_link_libraries(${LIBNAME_INTERFACE} INTERFACE $) target_compile_options(${LIBNAME_INTERFACE} INTERFACE $)