diff --git a/.gitattributes b/.gitattributes
index 8fc60d592..429fefd5c 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -87,6 +87,12 @@ GNUmakefile text
*.xml text
*.cfg text
+## Exclude vcpkg port and test scaffolding from GitHub tarballs.
+## This avoids a chicken-and-egg problem: the portfile contains a SHA512
+## of the tarball, so changes to the portfile must not change the tarball.
+tools/ports/ export-ignore
+tests/vcpkg/ export-ignore
+
## Self-reference =)
.gitignore text
.gitattributes text
diff --git a/.github/workflows/build-android.yml b/.github/workflows/build-android.yml
index 2d50517d8..9e07f3280 100644
--- a/.github/workflows/build-android.yml
+++ b/.github/workflows/build-android.yml
@@ -17,11 +17,18 @@ on:
- main
- dev
-
-concurrency:
- group: ${{ github.workflow }}-${{ github.ref }}
- cancel-in-progress: ${{ github.event_name == 'pull_request' }}
-
+
+# Least-privilege GITHUB_TOKEN scope: this workflow only checks out source
+# and builds + uploads artifacts (upload-artifact uses its own per-run SAS,
+# not GITHUB_TOKEN). Explicit block satisfies CodeQL rule
+# actions/missing-workflow-permissions if Actions analysis is enabled.
+permissions:
+ contents: read
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: ${{ github.event_name == 'pull_request' }}
+
jobs:
build:
runs-on: windows-latest
diff --git a/.github/workflows/build-ios-mac.yml b/.github/workflows/build-ios-mac.yml
index be9ec53f9..81d93ad77 100644
--- a/.github/workflows/build-ios-mac.yml
+++ b/.github/workflows/build-ios-mac.yml
@@ -20,6 +20,12 @@ on:
- cron: 0 2 * * 1-5
+# Least-privilege GITHUB_TOKEN scope: this workflow only checks out source
+# and runs the iOS/macOS build matrix. Explicit block satisfies CodeQL rule
+# actions/missing-workflow-permissions if Actions analysis is enabled.
+permissions:
+ contents: read
+
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
diff --git a/.github/workflows/build-posix-latest.yml b/.github/workflows/build-posix-latest.yml
index 657caa6e0..13ac881ab 100644
--- a/.github/workflows/build-posix-latest.yml
+++ b/.github/workflows/build-posix-latest.yml
@@ -20,6 +20,12 @@ on:
- cron: 0 2 * * 1-5
+# Least-privilege GITHUB_TOKEN scope: this workflow only checks out source
+# and runs the Linux/Mac build matrix. Explicit block satisfies CodeQL rule
+# actions/missing-workflow-permissions if Actions analysis is enabled.
+permissions:
+ contents: read
+
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
diff --git a/.github/workflows/build-ubuntu-2204.yml b/.github/workflows/build-ubuntu-2204.yml
index e0ea03ac5..1fbcc6404 100644
--- a/.github/workflows/build-ubuntu-2204.yml
+++ b/.github/workflows/build-ubuntu-2204.yml
@@ -20,6 +20,12 @@ on:
- cron: 0 2 * * 1-5
+# Least-privilege GITHUB_TOKEN scope: this workflow only checks out source
+# and runs the Ubuntu 22.04 build. Explicit block satisfies CodeQL rule
+# actions/missing-workflow-permissions if Actions analysis is enabled.
+permissions:
+ contents: read
+
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
diff --git a/.github/workflows/build-windows-vs2022.yaml b/.github/workflows/build-windows-vs2022.yaml
index 20605b442..b28aa1515 100644
--- a/.github/workflows/build-windows-vs2022.yaml
+++ b/.github/workflows/build-windows-vs2022.yaml
@@ -13,6 +13,12 @@ on:
- main
- dev
+# Least-privilege GITHUB_TOKEN scope: this workflow only checks out source
+# and runs the Visual Studio 2022 build. Explicit block satisfies CodeQL
+# rule actions/missing-workflow-permissions if Actions analysis is enabled.
+permissions:
+ contents: read
+
jobs:
build:
diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml
index 912594c61..eeedb9c62 100644
--- a/.github/workflows/spellcheck.yml
+++ b/.github/workflows/spellcheck.yml
@@ -6,6 +6,12 @@ on:
pull_request:
branches: [ master, main ]
+# Least-privilege GITHUB_TOKEN scope: misspell only reads .md/.txt files
+# (no PR comments, no status updates, no package writes). Explicit block
+# satisfies CodeQL "actions/missing-workflow-permissions" and keeps the
+# token narrowly scoped if Actions analysis is enabled here later.
+permissions:
+ contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
@@ -22,9 +28,22 @@ jobs:
continue-on-error: true
- name: install misspell
+ env:
+ # misspell v0.3.4 linux 64-bit tarball SHA256 (from upstream
+ # release checksums.txt). Pinning version + verifying SHA
+ # avoids executing an unpinned bootstrap script from a floating
+ # ref (the prior 'curl https://git.io/misspell | sh' pattern is
+ # a supply-chain risk) and keeps CI reproducible. Bump
+ # deliberately when upstream releases.
+ MISSPELL_VERSION: "0.3.4"
+ MISSPELL_SHA256: "afd95caf1eecc72ff382791e00b3b11523a20b0579d95e2295c1c043688743d5"
run: |
- curl -L -o ./install-misspell.sh https://git.io/misspell
- sh ./install-misspell.sh
+ curl -fsSL -o misspell.tar.gz \
+ "https://github.com/client9/misspell/releases/download/v${MISSPELL_VERSION}/misspell_${MISSPELL_VERSION}_linux_64bit.tar.gz"
+ echo "${MISSPELL_SHA256} misspell.tar.gz" | sha256sum -c -
+ mkdir -p bin
+ tar -xzf misspell.tar.gz -C bin misspell
+ rm misspell.tar.gz
- name: run misspell
run: |
diff --git a/.github/workflows/test-vcpkg.yml b/.github/workflows/test-vcpkg.yml
new file mode 100644
index 000000000..cdd8ee1bb
--- /dev/null
+++ b/.github/workflows/test-vcpkg.yml
@@ -0,0 +1,111 @@
+name: Vcpkg port tests
+
+on:
+ push:
+ branches:
+ - master
+ - main
+ - dev
+ - dev/*
+ - release/*
+ - buildme/*
+
+ pull_request:
+ branches:
+ - master
+ - main
+ - dev
+
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ windows:
+ runs-on: windows-latest
+ name: Windows (x64-windows-static)
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Bootstrap vcpkg
+ run: |
+ git clone https://github.com/microsoft/vcpkg.git ${{ runner.temp }}\vcpkg
+ & "${{ runner.temp }}\vcpkg\bootstrap-vcpkg.bat" -disableMetrics
+ shell: pwsh
+
+ - name: Run vcpkg port test
+ run: .\tests\vcpkg\test-vcpkg-windows.ps1 -VcpkgRoot "${{ runner.temp }}\vcpkg"
+ shell: pwsh
+
+ linux:
+ runs-on: ubuntu-latest
+ name: Linux (x64-linux)
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Bootstrap vcpkg
+ run: |
+ git clone https://github.com/microsoft/vcpkg.git "${{ runner.temp }}/vcpkg"
+ "${{ runner.temp }}/vcpkg/bootstrap-vcpkg.sh" -disableMetrics
+
+ - name: Run vcpkg port test
+ env:
+ VCPKG_ROOT: ${{ runner.temp }}/vcpkg
+ run: |
+ chmod +x tests/vcpkg/test-vcpkg-linux.sh
+ ./tests/vcpkg/test-vcpkg-linux.sh
+
+ macos:
+ runs-on: macos-latest
+ name: macOS (native)
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Bootstrap vcpkg
+ run: |
+ git clone https://github.com/microsoft/vcpkg.git "${{ runner.temp }}/vcpkg"
+ "${{ runner.temp }}/vcpkg/bootstrap-vcpkg.sh" -disableMetrics
+
+ - name: Run vcpkg port test
+ env:
+ VCPKG_ROOT: ${{ runner.temp }}/vcpkg
+ run: |
+ chmod +x tests/vcpkg/test-vcpkg-macos.sh
+ ./tests/vcpkg/test-vcpkg-macos.sh
+
+ ios:
+ runs-on: macos-latest
+ name: iOS (arm64-ios cross-compile)
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Bootstrap vcpkg
+ run: |
+ git clone https://github.com/microsoft/vcpkg.git "${{ runner.temp }}/vcpkg"
+ "${{ runner.temp }}/vcpkg/bootstrap-vcpkg.sh" -disableMetrics
+
+ - name: Run vcpkg port test (device)
+ env:
+ VCPKG_ROOT: ${{ runner.temp }}/vcpkg
+ run: |
+ chmod +x tests/vcpkg/test-vcpkg-ios.sh
+ ./tests/vcpkg/test-vcpkg-ios.sh
+
+ android:
+ runs-on: ubuntu-latest
+ name: Android (arm64-v8a cross-compile)
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Bootstrap vcpkg
+ run: |
+ git clone https://github.com/microsoft/vcpkg.git "${{ runner.temp }}/vcpkg"
+ "${{ runner.temp }}/vcpkg/bootstrap-vcpkg.sh" -disableMetrics
+
+ - name: Run vcpkg port test
+ env:
+ VCPKG_ROOT: ${{ runner.temp }}/vcpkg
+ run: |
+ chmod +x tests/vcpkg/test-vcpkg-android.sh
+ ./tests/vcpkg/test-vcpkg-android.sh arm64-v8a
diff --git a/.github/workflows/test-win-latest.yml b/.github/workflows/test-win-latest.yml
index 19b20ef53..255868a88 100644
--- a/.github/workflows/test-win-latest.yml
+++ b/.github/workflows/test-win-latest.yml
@@ -20,6 +20,12 @@ on:
- cron: 0 2 * * 1-5
+# Least-privilege GITHUB_TOKEN scope: this workflow only checks out source
+# and runs Windows unit/functional tests. Explicit block satisfies CodeQL
+# rule actions/missing-workflow-permissions if Actions analysis is enabled.
+permissions:
+ contents: read
+
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
diff --git a/.gitignore b/.gitignore
index 515445ff7..af5733868 100644
--- a/.gitignore
+++ b/.gitignore
@@ -405,3 +405,6 @@ build/.cmake/api/v1/query/client-vscode/query.json
#Test files generated locally.
*.ses
+
+# vcpkg test build directories
+tests/vcpkg/build-*/
diff --git a/Android.bp b/Android.bp
index c3dfb4a6a..78ec0c65d 100644
--- a/Android.bp
+++ b/Android.bp
@@ -81,6 +81,7 @@ cc_library_shared {
"lib/http/HttpClient_Android.cpp"
],
local_include_dirs: [
+ ".",
"lib",
"lib/include/public",
"lib/include",
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9851cf4d9..ecebecbaf 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,14 +1,15 @@
-cmake_minimum_required(VERSION 3.1.0)
-project(MSTelemetry)
+cmake_minimum_required(VERSION 3.1.0...3.5)
+project(MSTelemetry LANGUAGES C CXX)
-# Set installation prefix for macOS and Linux
-if(UNIX AND NOT DEFINED CMAKE_INSTALL_PREFIX)
- set(CMAKE_INSTALL_PREFIX "/usr/local" CACHE PATH "Installation directory prefix" FORCE)
+################################################################################################
+# Vcpkg dependency mode: detect early so it can guard platform-specific flag logic
+################################################################################################
+if(DEFINED VCPKG_TOOLCHAIN OR DEFINED VCPKG_TARGET_TRIPLET)
+ option(MATSDK_USE_VCPKG_DEPS "Use vcpkg-provided dependencies via find_package()" ON)
+else()
+ option(MATSDK_USE_VCPKG_DEPS "Use vcpkg-provided dependencies via find_package()" OFF)
endif()
-
-set(INSTALL_BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Installation directory for executables")
-set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE PATH "Installation directory for libraries")
-set(INSTALL_INC_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "Installation directory for headers")
+message(STATUS "MATSDK_USE_VCPKG_DEPS: ${MATSDK_USE_VCPKG_DEPS}")
# Begin Uncomment for i386 build
#set(CMAKE_SYSTEM_PROCESSOR i386)
@@ -16,16 +17,27 @@ set(INSTALL_INC_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "Installation d
#set(CMAKE_CXX_FLAGS -m32)
# End of i386 build
-# We ask for 14, but we may get C++11 on older gcc-4.x and gcc-5.x
set(CMAKE_CXX_STANDARD 14)
+# Uncomment these for stricter C++14 enforcement. Left commented out to avoid
+# breaking older toolchains that may only partially support C++14.
+# set(CMAKE_CXX_STANDARD_REQUIRED ON)
+# set(CMAKE_CXX_EXTENSIONS OFF)
if (NOT TARGET_ARCH)
set(TARGET_ARCH ${CMAKE_SYSTEM_PROCESSOR})
endif()
# Enable ARC for obj-c on Apple
+# Initialize platform options before conditional blocks (needed for config templates)
+if(NOT DEFINED BUILD_IOS)
+ set(BUILD_IOS OFF)
+endif()
+if(NOT APPLE AND NOT DEFINED BUILD_APPLE_HTTP)
+ set(BUILD_APPLE_HTTP OFF)
+endif()
+
if(APPLE)
- message("-- BUILD_IOS: ${BUILD_IOS}")
+ message(STATUS "BUILD_IOS: ${BUILD_IOS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fobjc-arc")
# iOS build options
@@ -35,106 +47,125 @@ if(APPLE)
set(FORCE_RESET_OSX_DEPLOYMENT_TARGET ${FORCE_RESET_DEPLOYMENT_TARGET})
endif()
- if(BUILD_IOS)
- set(TARGET_ARCH "APPLE")
- set(IOS True)
- set(APPLE True)
+ # When building via vcpkg, the toolchain file handles architecture, sysroot,
+ # deployment target, and platform flags. Skip manual flag configuration.
+ if(NOT MATSDK_USE_VCPKG_DEPS)
+ if(BUILD_IOS)
+ set(TARGET_ARCH "APPLE")
+ set(IOS True)
+ set(APPLE True)
- if(FORCE_RESET_OSX_DEPLOYMENT_TARGET)
- set(CMAKE_OSX_DEPLOYMENT_TARGET "" CACHE STRING "Force unset of the deployment target for iOS" FORCE)
- if (${IOS_PLAT} STREQUAL "iphonesimulator")
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mios-simulator-version-min=${IOS_DEPLOYMENT_TARGET}")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mios-simulator-version-min=${IOS_DEPLOYMENT_TARGET}")
+ if(FORCE_RESET_OSX_DEPLOYMENT_TARGET)
+ set(CMAKE_OSX_DEPLOYMENT_TARGET "" CACHE STRING "Force unset of the deployment target for iOS" FORCE)
+ if (${IOS_PLAT} STREQUAL "iphonesimulator")
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mios-simulator-version-min=${IOS_DEPLOYMENT_TARGET}")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mios-simulator-version-min=${IOS_DEPLOYMENT_TARGET}")
+ else()
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -miphoneos-version-min=${IOS_DEPLOYMENT_TARGET}")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -miphoneos-version-min=${IOS_DEPLOYMENT_TARGET}")
+ endif()
+ endif()
+
+ if((${IOS_PLAT} STREQUAL "iphoneos") OR (${IOS_PLAT} STREQUAL "iphonesimulator") OR (${IOS_PLAT} STREQUAL "xros") OR (${IOS_PLAT} STREQUAL "xrsimulator"))
+ set(IOS_PLATFORM "${IOS_PLAT}")
else()
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -miphoneos-version-min=${IOS_DEPLOYMENT_TARGET}")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -miphoneos-version-min=${IOS_DEPLOYMENT_TARGET}")
+ message(FATAL_ERROR "Unrecognized iOS platform '${IOS_PLAT}'")
endif()
- endif()
- if((${IOS_PLAT} STREQUAL "iphoneos") OR (${IOS_PLAT} STREQUAL "iphonesimulator") OR (${IOS_PLAT} STREQUAL "xros") OR (${IOS_PLAT} STREQUAL "xrsimulator"))
- set(IOS_PLATFORM "${IOS_PLAT}")
- else()
- message(FATAL_ERROR "Unrecognized iOS platform '${IOS_PLAT}'")
- endif()
+ if(${IOS_ARCH} STREQUAL "x86_64")
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -arch x86_64")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -arch x86_64")
+ set(CMAKE_SYSTEM_PROCESSOR x86_64)
+ elseif(${IOS_ARCH} STREQUAL "arm64")
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -arch arm64")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -arch arm64")
+ set(CMAKE_SYSTEM_PROCESSOR arm64)
+ elseif(${IOS_ARCH} STREQUAL "arm64e")
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -arch arm64e")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -arch arm64e")
+ set(CMAKE_SYSTEM_PROCESSOR arm64e)
+ else()
+ message(FATAL_ERROR "Unrecognized iOS architecture '${IOS_ARCH}'")
+ endif()
- if(${IOS_ARCH} STREQUAL "x86_64")
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -arch x86_64")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -arch x86_64")
- set(CMAKE_SYSTEM_PROCESSOR x86_64)
- elseif(${IOS_ARCH} STREQUAL "arm64")
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -arch arm64")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -arch arm64")
- set(CMAKE_SYSTEM_PROCESSOR arm64)
- elseif(${IOS_ARCH} STREQUAL "arm64e")
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -arch arm64e")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -arch arm64e")
- set(CMAKE_SYSTEM_PROCESSOR arm64e)
+ execute_process(COMMAND xcodebuild -version -sdk ${IOS_PLATFORM} ONLY_ACTIVE_ARCH=NO Path
+ OUTPUT_VARIABLE CMAKE_OSX_SYSROOT
+ ERROR_QUIET
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ message(STATUS "CMAKE_OSX_SYSROOT ${CMAKE_OSX_SYSROOT}")
+ message(STATUS "ARCHITECTURE: ${CMAKE_SYSTEM_PROCESSOR}")
+ message(STATUS "PLATFORM: ${IOS_PLATFORM}")
else()
- message(FATAL_ERROR "Unrecognized iOS architecture '${IOS_ARCH}'")
+ if("${MAC_ARCH}" STREQUAL "x86_64")
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -arch x86_64")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -arch x86_64")
+ set(CMAKE_SYSTEM_PROCESSOR x86_64)
+ set(TARGET_ARCH ${CMAKE_SYSTEM_PROCESSOR})
+ set(CMAKE_OSX_ARCHITECTURES ${MAC_ARCH})
+ set(APPLE True)
+ elseif("${MAC_ARCH}" STREQUAL "arm64")
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -arch arm64")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -arch arm64")
+ set(CMAKE_SYSTEM_PROCESSOR arm64)
+ set(TARGET_ARCH ${CMAKE_SYSTEM_PROCESSOR})
+ set(CMAKE_OSX_ARCHITECTURES ${MAC_ARCH})
+ set(APPLE True)
+ else()
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -arch x86_64 -arch arm64")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -arch x86_64 -arch arm64")
+ endif()
+ message(STATUS "MAC_ARCH: ${MAC_ARCH}")
endif()
-
- execute_process(COMMAND xcodebuild -version -sdk ${IOS_PLATFORM} ONLY_ACTIVE_ARCH=NO Path
- OUTPUT_VARIABLE CMAKE_OSX_SYSROOT
- ERROR_QUIET
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- message("-- CMAKE_OSX_SYSROOT ${CMAKE_OSX_SYSROOT}")
- message("-- ARCHITECTURE: ${CMAKE_SYSTEM_PROCESSOR}")
- message("-- PLATFORM: ${IOS_PLATFORM}")
else()
- if(${MAC_ARCH} STREQUAL "x86_64")
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -arch x86_64")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -arch x86_64")
- set(CMAKE_SYSTEM_PROCESSOR x86_64)
- set(TARGET_ARCH ${CMAKE_SYSTEM_PROCESSOR})
- set(CMAKE_OSX_ARCHITECTURES ${MAC_ARCH})
- set(APPLE True)
- elseif(${MAC_ARCH} STREQUAL "arm64")
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -arch arm64")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -arch arm64")
- set(CMAKE_SYSTEM_PROCESSOR arm64)
- set(TARGET_ARCH ${CMAKE_SYSTEM_PROCESSOR})
- set(CMAKE_OSX_ARCHITECTURES ${MAC_ARCH})
- set(APPLE True)
- else()
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -arch x86_64 -arch arm64")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -arch x86_64 -arch arm64")
+ # vcpkg mode: just set internal flags from what the toolchain provides
+ if(BUILD_IOS OR CMAKE_SYSTEM_NAME STREQUAL "iOS")
+ set(BUILD_IOS ON)
+ set(TARGET_ARCH "APPLE")
+ set(IOS True)
endif()
- message("-- MAC_ARCH: ${MAC_ARCH}")
+ message(STATUS "vcpkg toolchain managing architecture and platform flags")
endif()
endif()
-message("-- CMAKE_SYSTEM_INFO_FILE: ${CMAKE_SYSTEM_INFO_FILE}")
-message("-- CMAKE_SYSTEM_NAME: ${CMAKE_SYSTEM_NAME}")
-message("-- CMAKE_SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}")
-message("-- CMAKE_SYSTEM: ${CMAKE_SYSTEM}")
-message("-- CMAKE_SYSTEM_VERSION: ${CMAKE_SYSTEM_VERSION}")
-message("-- CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")
-message("-- TARGET_ARCH: ${TARGET_ARCH}")
-message("-- CMAKE_CXX_COMPILER_ID: ${CMAKE_CXX_COMPILER_ID}")
+message(STATUS "CMAKE_SYSTEM_NAME: ${CMAKE_SYSTEM_NAME}")
+message(STATUS "CMAKE_SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}")
+message(STATUS "CMAKE_SYSTEM: ${CMAKE_SYSTEM}")
+message(STATUS "CMAKE_SYSTEM_VERSION: ${CMAKE_SYSTEM_VERSION}")
+message(STATUS "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")
+message(STATUS "TARGET_ARCH: ${TARGET_ARCH}")
+message(STATUS "CMAKE_CXX_COMPILER_ID: ${CMAKE_CXX_COMPILER_ID}")
include(tools/ParseOsRelease.cmake)
+# When building via vcpkg, let the toolchain manage compiler flags.
+# Only apply project-specific flags for non-vcpkg (legacy) builds.
+if(NOT MATSDK_USE_VCPKG_DEPS)
+
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
set(WARN_FLAGS "/W4 /WX")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
# -Wno-unknown-warning-option is Clang-only, omitted here
set(WARN_FLAGS "-Wall -Werror -Wextra -Wno-unused-parameter -Wno-unused-but-set-variable")
+ # -Wno-reorder is C++-only; added to CXX_FLAGS below (suppresses member-init-order warnings in submodule code)
+ set(CXX_EXTRA_WARN_FLAGS "-Wno-reorder")
else()
# Clang / AppleClang
set(WARN_FLAGS "-Wall -Werror -Wextra -Wno-unused-parameter -Wno-unknown-warning-option -Wno-unused-but-set-variable")
+ # -Wno-reorder is C++-only; added to CXX_FLAGS below (suppresses member-init-order warnings in submodule code)
+ set(CXX_EXTRA_WARN_FLAGS "-Wno-reorder")
endif()
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
# Using GCC with -s and -Wl linker flags
- set(REL_FLAGS "-s -Wl,--gc-sections -Os ${WARN_FLAGS} -ffunction-sections -fdata-sections -fmerge-all-constants -ffast-math -fno-finite-math-only")
+ set(REL_FLAGS "-s -Wl,--gc-sections -Os ${WARN_FLAGS} -ffunction-sections -fdata-sections -fmerge-all-constants")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
set(REL_FLAGS "${WARN_FLAGS}")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang")
# AppleClang does not support -ffunction-sections and -fdata-sections with the -fembed-bitcode and -fembed-bitcode-marker
- set(REL_FLAGS "-Os ${WARN_FLAGS} -fmerge-all-constants -ffast-math -fno-finite-math-only")
+ set(REL_FLAGS "-Os ${WARN_FLAGS} -fmerge-all-constants")
else()
# Using clang - strip unsupported GCC options
- set(REL_FLAGS "-Os ${WARN_FLAGS} -ffunction-sections -fmerge-all-constants -ffast-math -fno-finite-math-only")
+ set(REL_FLAGS "-Os ${WARN_FLAGS} -ffunction-sections -fmerge-all-constants")
endif()
## Uncomment this to reduce the volume of note warnings on RPi4 w/gcc-8 Ref. https://gcc.gnu.org/ml/gcc/2017-05/msg00073.html
@@ -147,15 +178,15 @@ set(DBG_FLAGS "-ggdb -gdwarf-2 -O0 ${WARN_FLAGS} -fno-builtin-malloc -fno-built
if (NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
#TODO: -fno-rtti
- message("Building Release ...")
+ message(STATUS "Building Release ...")
set(CMAKE_C_FLAGS "$ENV{CFLAGS} ${CMAKE_C_FLAGS} -std=c11 ${REL_FLAGS}")
- set(CMAKE_CXX_FLAGS "$ENV{CXXFLAGS} ${CMAKE_CXX_FLAGS} -std=c++11 ${REL_FLAGS}")
+ set(CMAKE_CXX_FLAGS "$ENV{CXXFLAGS} ${CMAKE_CXX_FLAGS} -std=c++11 ${REL_FLAGS} ${CXX_EXTRA_WARN_FLAGS}")
else()
set(USE_TCMALLOC 1)
- message("Building Debug ...")
+ message(STATUS "Building Debug ...")
include(tools/FindTcmalloc.cmake)
set(CMAKE_C_FLAGS "$ENV{CFLAGS} ${CMAKE_C_FLAGS} -std=c11 ${DBG_FLAGS}")
- set(CMAKE_CXX_FLAGS "$ENV{CXXFLAGS} ${CMAKE_CXX_FLAGS} -std=c++11 ${DBG_FLAGS}")
+ set(CMAKE_CXX_FLAGS "$ENV{CXXFLAGS} ${CMAKE_CXX_FLAGS} -std=c++11 ${DBG_FLAGS} ${CXX_EXTRA_WARN_FLAGS}")
endif()
#Remove /Zi for Win32 debug compiler issue
@@ -180,7 +211,11 @@ elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
# using Visual Studio C++
endif()
+endif() # NOT MATSDK_USE_VCPKG_DEPS (compiler flags)
+
include(tools/Utils.cmake)
+include(GNUInstallDirs)
+include(CMakePackageConfigHelpers)
if (NOT DEFAULT_PAL_IMPLEMENTATION)
if(MSVC)
@@ -193,7 +228,7 @@ endif()
set(PAL_IMPLEMENTATION ${DEFAULT_PAL_IMPLEMENTATION})
-message(STATUS "-- PAL implementation: ${PAL_IMPLEMENTATION}")
+message(STATUS "PAL implementation: ${PAL_IMPLEMENTATION}")
string(TOUPPER ${PAL_IMPLEMENTATION} PAL_IMPLEMENTATION_UPPER)
add_definitions(-DMATSDK_PAL_${PAL_IMPLEMENTATION_UPPER}=1)
@@ -212,7 +247,7 @@ if(USE_ONEDS_SECURE_MEM_FUNCTIONS)
add_definitions(-DUSE_ONEDS_SECURE_MEM_FUNCTIONS)
endif()
-if(PAL_IMPLEMENTATION STREQUAL "WIN32")
+if(PAL_IMPLEMENTATION STREQUAL "WIN32" AND NOT MATSDK_USE_VCPKG_DEPS)
add_definitions(-DZLIB_WINAPI)
endif()
@@ -225,7 +260,7 @@ add_definitions(-DNOMINMAX)
set(SDK_VERSION_PREFIX "EVT")
add_definitions("-DMATSDK_VERSION_PREFIX=\"${SDK_VERSION_PREFIX}\"")
-set(MATSDK_API_VERSION "3.4")
+set(MATSDK_API_VERSION "3.10")
string(TIMESTAMP DAYNUMBER "%j")
string(REGEX REPLACE "^00" "" DAYNUMBER ${DAYNUMBER})
string(REGEX REPLACE "^0" "" DAYNUMBER ${DAYNUMBER})
@@ -241,29 +276,10 @@ else()
set(MATSDK_BUILD_VERSION ${MATSDK_API_VERSION}.${DAYNUMBER}.0)
endif()
-message(STATUS "-- SDK version: ${SDK_VERSION_PREFIX}-${MATSDK_BUILD_VERSION}")
+message(STATUS "SDK version: ${SDK_VERSION_PREFIX}-${MATSDK_BUILD_VERSION}")
################################################################################################
-# HTTP stack section
-################################################################################################
-
-# Only use custom curl if compiling with CPP11 PAL
-if (PAL_IMPLEMENTATION STREQUAL "CPP11")
-
- if(NOT BUILD_IOS)
- include(FindCURL)
- find_package(CURL REQUIRED)
- if (NOT CURL_FOUND)
- message (FATAL_ERROR "libcurl not found! Have you installed deps?")
- endif (NOT CURL_FOUND)
- include_directories(CURL_INCLUDE_DIRS)
- set(CMAKE_REQUIRED_LIBRARIES "${CURL_LIBRARIES}")
- list(APPEND LIBS "${CURL_LIBRARIES}")
- endif()
-endif()
-
-################################################################################################
-# User options
+# User options (must be before HTTP stack section for BUILD_APPLE_HTTP)
################################################################################################
option(BUILD_HEADERS "Build API headers" YES)
option(BUILD_LIBRARY "Build library" YES)
@@ -288,10 +304,49 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
option(BUILD_APPLE_HTTP "Build Apple HTTP client" YES)
endif()
+if(BUILD_APPLE_HTTP)
+ add_definitions(-DAPPLE_HTTP=1)
+endif()
+
+################################################################################################
+# HTTP stack section
+################################################################################################
+
+# Only use custom curl if compiling with CPP11 PAL
+set(MATSDK_NEEDS_CURL OFF)
+if(PAL_IMPLEMENTATION STREQUAL "CPP11"
+ AND NOT BUILD_IOS
+ AND NOT CMAKE_SYSTEM_NAME STREQUAL "Android"
+ AND NOT BUILD_APPLE_HTTP)
+ set(MATSDK_NEEDS_CURL ON)
+ find_package(CURL REQUIRED)
+ if(MATSDK_USE_VCPKG_DEPS)
+ list(APPEND LIBS CURL::libcurl)
+ else()
+ include_directories(CURL_INCLUDE_DIRS)
+ set(CMAKE_REQUIRED_LIBRARIES "${CURL_LIBRARIES}")
+ list(APPEND LIBS "${CURL_LIBRARIES}")
+ endif()
+endif()
+
+################################################################################################
+# Dependency resolution (vcpkg mode vs vendored)
+################################################################################################
+if(MATSDK_USE_VCPKG_DEPS)
+ find_package(unofficial-sqlite3 CONFIG REQUIRED)
+ find_package(ZLIB REQUIRED)
+ find_package(nlohmann_json CONFIG REQUIRED)
+ message(STATUS "Using vcpkg-provided sqlite3, zlib, nlohmann-json")
+else()
+ # Include repo root to allow includes of vendored sqlite, zlib, and nlohmann
+ include_directories(${CMAKE_SOURCE_DIR})
+ message(STATUS "Using vendored sqlite3, zlib, nlohmann-json")
+endif()
+
if(BUILD_UNIT_TESTS OR BUILD_FUNC_TESTS)
- message("Adding gtest")
+ message(STATUS "Adding gtest")
add_library(gtest STATIC IMPORTED GLOBAL)
- message("Adding gmock")
+ message(STATUS "Adding gmock")
add_library(gmock STATIC IMPORTED GLOBAL)
endif()
@@ -309,10 +364,6 @@ include_directories(lib/pal)
# enable_testing()
# add_subdirectory(bondlite/tests)
#endif()
-
-# Include repo root to allow includes of sqlite, zlib, and nlohmann
-include_directories(${CMAKE_SOURCE_DIR})
-
if(BUILD_HEADERS)
add_subdirectory(lib/include)
endif()
@@ -323,7 +374,7 @@ if(BUILD_LIBRARY)
endif()
if(BUILD_UNIT_TESTS OR BUILD_FUNC_TESTS)
- message("Building tests")
+ message(STATUS "Building tests")
enable_testing()
add_subdirectory(tests)
endif()
diff --git a/Solutions/Clienttelemetry/Clienttelemetry.vcxitems b/Solutions/Clienttelemetry/Clienttelemetry.vcxitems
index 4ed829608..065ca3118 100644
--- a/Solutions/Clienttelemetry/Clienttelemetry.vcxitems
+++ b/Solutions/Clienttelemetry/Clienttelemetry.vcxitems
@@ -87,7 +87,6 @@
-
@@ -116,7 +115,6 @@
-
@@ -159,7 +157,6 @@
-
diff --git a/Solutions/Clienttelemetry/Clienttelemetry.vcxitems.filters b/Solutions/Clienttelemetry/Clienttelemetry.vcxitems.filters
index 87a11c450..376e1dfba 100644
--- a/Solutions/Clienttelemetry/Clienttelemetry.vcxitems.filters
+++ b/Solutions/Clienttelemetry/Clienttelemetry.vcxitems.filters
@@ -72,7 +72,6 @@
-
@@ -101,7 +100,6 @@
-
@@ -124,8 +122,6 @@
-
-
@@ -146,7 +142,6 @@
-
diff --git a/Solutions/MSTelemetrySDK.sln b/Solutions/MSTelemetrySDK.sln
index 98af6ec6d..8e83ec54a 100644
--- a/Solutions/MSTelemetrySDK.sln
+++ b/Solutions/MSTelemetrySDK.sln
@@ -29,7 +29,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtest", "..\tests\googletes
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sqlite-uwp", "..\sqliteUWP\sqlite-uwp.vcxproj", "{6883A688-89F5-424A-9BFA-50D42F691B29}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "..\zlib\contrib\vstudio\vc14\zlibvc.vcxproj", "{8FD826F8-3739-44E6-8CC8-997122E53B8D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "..\third_party\Solutions\zlib\vc14\zlibvc.vcxproj", "{8FD826F8-3739-44E6-8CC8-997122E53B8D}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "PAL", "PAL", "{34B3E59D-E740-4C23-ACEE-E94C80E83A18}"
EndProject
diff --git a/Solutions/before.targets b/Solutions/before.targets
index 63a526c90..052e5d77f 100644
--- a/Solutions/before.targets
+++ b/Solutions/before.targets
@@ -3,12 +3,12 @@
$(SolutionDir)\..\third_party\krabsetw\krabs;$(CustomIncludePath)
- v141
- v142
- v143
-
+
+ v145
+ v143
+ v142
+ v141
v141
- $(PlatformToolset)
$([Microsoft.Build.Utilities.ToolLocationHelper]::GetLatestSDKTargetPlatformVersion('Windows', '10.0'))
$(LatestTargetPlatformVersion)
diff --git a/Solutions/build.MIP.props b/Solutions/build.MIP.props
index 9bd6e6d91..2419c4c36 100644
--- a/Solutions/build.MIP.props
+++ b/Solutions/build.MIP.props
@@ -1,20 +1,24 @@
-
-
-
-
- %(PreprocessorDefinitions);CONFIG_CUSTOM_H="config-MIP.h";MATSDK_SHARED_LIB=1;
-
-
- ucrtbased.dll; %(DelayLoadDLLs)
-
-
-
- true
- v141
- 14.1
-
-
- mip_ClientTelemetry
-
-
-
+
+
+
+
+ %(PreprocessorDefinitions);CONFIG_CUSTOM_H="config-MIP.h";MATSDK_SHARED_LIB=1;
+
+
+ ucrtbased.dll; %(DelayLoadDLLs)
+
+
+
+ true
+ $(DefaultPlatformToolset)
+ v145
+ v143
+ v142
+ v141
+ v141
+
+
+ mip_ClientTelemetry
+
+
+
diff --git a/Solutions/net40/net40.vcxproj b/Solutions/net40/net40.vcxproj
index 56b97bc3e..ec55747a0 100644
--- a/Solutions/net40/net40.vcxproj
+++ b/Solutions/net40/net40.vcxproj
@@ -1,4 +1,4 @@
-
+
@@ -282,7 +282,7 @@
{2ebc7b3c-2af1-442c-9285-cab39bbb8c00}
-
+
{8fd826f8-3739-44e6-8cc8-997122e53b8d}
diff --git a/Solutions/win10-cs/win10-cs.vcxproj b/Solutions/win10-cs/win10-cs.vcxproj
index 3d557d277..a89d26bc4 100644
--- a/Solutions/win10-cs/win10-cs.vcxproj
+++ b/Solutions/win10-cs/win10-cs.vcxproj
@@ -401,7 +401,7 @@
-
+
{8FD826F8-3739-44E6-8CC8-997122E53B8D}
diff --git a/Solutions/win10-dll/win10-dll.vcxproj b/Solutions/win10-dll/win10-dll.vcxproj
index da6a93471..f53e396c7 100644
--- a/Solutions/win10-dll/win10-dll.vcxproj
+++ b/Solutions/win10-dll/win10-dll.vcxproj
@@ -1,4 +1,4 @@
-
+
@@ -415,7 +415,7 @@
-
+
{8FD826F8-3739-44E6-8CC8-997122E53B8D}
diff --git a/Solutions/win10-lib/win10-lib.vcxproj b/Solutions/win10-lib/win10-lib.vcxproj
index 68679a0fc..8307a0a9b 100644
--- a/Solutions/win10-lib/win10-lib.vcxproj
+++ b/Solutions/win10-lib/win10-lib.vcxproj
@@ -1,4 +1,4 @@
-
+
@@ -372,7 +372,7 @@
-
+
{8fd826f8-3739-44e6-8cc8-997122e53b8d}
diff --git a/Solutions/win32-dll/win32-dll.vcxproj b/Solutions/win32-dll/win32-dll.vcxproj
index 0f91d829c..026356130 100644
--- a/Solutions/win32-dll/win32-dll.vcxproj
+++ b/Solutions/win32-dll/win32-dll.vcxproj
@@ -327,7 +327,7 @@
-
+
{8fd826f8-3739-44e6-8cc8-997122e53b8d}
diff --git a/cgmanifest.json b/cgmanifest.json
index b24f9900d..db83b24fa 100644
--- a/cgmanifest.json
+++ b/cgmanifest.json
@@ -6,7 +6,7 @@
"Type": "git",
"git": {
"RepositoryUrl": "https://github.com/nlohmann/json",
- "CommitHash": "9cca280a4d0ccf0c08f47a99aa71d1b0e52f8d03"
+ "CommitHash": "55f93686c01528224f448c19128836e7df245f72"
}
},
"DevelopmentDependency": false
@@ -26,10 +26,10 @@
"Type": "git",
"git": {
"RepositoryUrl": "https://github.com/madler/zlib",
- "CommitHash": "cacf7f1d4e3d44d871b605da3b647f07d718623f"
+ "CommitHash": "da607da739fa6047df13e66a2af6b8bec7c2a498"
}
},
"DevelopmentDependency": false
}
]
-}
\ No newline at end of file
+}
diff --git a/cmake/MSTelemetryConfig.cmake.in b/cmake/MSTelemetryConfig.cmake.in
new file mode 100644
index 000000000..6c15631ca
--- /dev/null
+++ b/cmake/MSTelemetryConfig.cmake.in
@@ -0,0 +1,27 @@
+@PACKAGE_INIT@
+
+include(CMakeFindDependencyMacro)
+
+# Re-find dependencies that consumers need
+if(@MATSDK_USE_VCPKG_DEPS@)
+ find_dependency(unofficial-sqlite3 CONFIG)
+ find_dependency(ZLIB)
+ find_dependency(nlohmann_json CONFIG)
+endif()
+
+# Curl is needed on Linux (not Windows/iOS/Android/macOS-with-Apple-HTTP).
+# We capture the build-time decision as a boolean rather than re-deriving
+# it, because the macOS BUILD_APPLE_HTTP edge case can't be inferred from
+# CMAKE_SYSTEM_NAME alone.
+if(@MATSDK_NEEDS_CURL@)
+ find_dependency(CURL)
+endif()
+
+# Pthreads are needed on Linux and Android (POSIX threading)
+if(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android")
+ find_dependency(Threads)
+endif()
+
+include("${CMAKE_CURRENT_LIST_DIR}/MSTelemetryTargets.cmake")
+
+check_required_components(MSTelemetry)
diff --git a/docs/List-of-OSS-Components.md b/docs/List-of-OSS-Components.md
index 094ea1472..339f7cca7 100644
--- a/docs/List-of-OSS-Components.md
+++ b/docs/List-of-OSS-Components.md
@@ -22,7 +22,7 @@ The SDK provides an option to use a secure version of the traditional `memset` f
JSON for Modern C++.
-SDK maintains its own snapshot of the mainline `nlohmann/json` header-only library [here](../lib/include/mat/json.hpp).
+SDK maintains its own snapshot of the mainline `nlohmann/json` header-only library [here](../nlohmann/json.hpp).
## [libcurl](https://curl.haxx.se/libcurl/)
diff --git a/docs/building-with-vcpkg.md b/docs/building-with-vcpkg.md
index 6312fa18d..aaa831351 100644
--- a/docs/building-with-vcpkg.md
+++ b/docs/building-with-vcpkg.md
@@ -1,10 +1,12 @@
# Building 1DS C++ SDK with vcpkg
-vcpkg is a Microsoft cross-platform open source C++ package manager. Onboarding instructions for Windows, Linux and Mac OS X [available here](https://docs.microsoft.com/en-us/cpp/build/vcpkg). This document assumes that the customer build system is already configured to use vcpkg. 1DS C++ SDK maintainers provide a build recipe, `mstelemetry` port or CONTROL file for vcpkg. Mainline vcpkg repo is refreshed to point to latest stable open source release of 1DS C++ SDK. Public build of SDK does not include private submodules. However, local port / CONTROL file included in 1DS C++ SDK git repo allows to build SDK with additional Microsoft-proprietary private submodules.
+[vcpkg](https://vcpkg.io/) is a Microsoft cross-platform open source C++ package manager. Onboarding instructions for Windows, Linux and Mac OS X [available here](https://docs.microsoft.com/en-us/cpp/build/vcpkg). This document assumes that the customer build system is already configured to use vcpkg ([getting started guide](https://learn.microsoft.com/en-us/vcpkg/get_started/overview)). 1DS C++ SDK maintainers provide a build recipe, `mstelemetry` port or CONTROL file for vcpkg. The mainline vcpkg repo is refreshed to point to latest stable open source release of 1DS C++ SDK.
-## Installing open source mstelemetry package
+## Quick Start
-The following command can be used to install the public open source release:
+### Installing from the vcpkg registry
+
+Once a new port has been accepted into the official vcpkg registry, install with:
```console
vcpkg install mstelemetry
@@ -12,83 +14,184 @@ vcpkg install mstelemetry
That's it! The package should be compiled for the current OS.
-See instructions below to build the SDK with additional Microsoft-proprietary modules.
-
-## Windows build with submodules
+### Installing from the overlay port (development / pre-release)
-`cmd.exe` command line prompt commands:
+Before the port is published, or to test local changes, use the overlay port
+shipped in this repository:
```console
-git clone --recurse-submodules https://github.com/microsoft/cpp_client_telemetry
+git clone https://github.com/microsoft/cpp_client_telemetry
cd cpp_client_telemetry
-vcpkg install --head --overlay-ports=%CD%\tools\ports mstelemetry
+vcpkg install --overlay-ports=tools/ports mstelemetry
```
-## POSIX (Linux and Mac) build with submodules
+### Using in your CMake project
-Shell commands:
+After installing, add the SDK to your CMake project:
-```console
-git clone --recurse-submodules https://github.com/microsoft/cpp_client_telemetry
-cd cpp_client_telemetry
-vcpkg install --head --overlay-ports=`pwd`/tools/ports mstelemetry
+```cmake
+find_package(MSTelemetry CONFIG REQUIRED)
+target_link_libraries(your_target PRIVATE MSTelemetry::mat)
```
-## Using response files to specify dependencies
+If you use vcpkg manifest mode (recommended), add `mstelemetry` to your
+project's `vcpkg.json`:
-vcpkg allows to consolidate parameters passed to vcpkg in a response file. All 3rd party dependencies needed for 1DS SDK can be described and installed via response file.
+```json
+{
+ "dependencies": ["mstelemetry"]
+}
+```
-Example for Mac:
+## Platform-Specific Instructions
-```console
-vcpkg install @tools/ports/mstelemetry/response_file_mac.txt
+### Windows
+
+```powershell
+vcpkg install mstelemetry --triplet=x64-windows-static
```
-Example for Linux:
+### Linux
-```console
-vcpkg install @tools/ports/mstelemetry/response_file_linux.txt
+```bash
+vcpkg install mstelemetry --triplet=x64-linux
```
-vcpkg build log files are created in `${VCPKG_INSTALL_DIR}/buildtrees/mstelemetry/build-[err|out].log` . Review the logs in case if you encounter package installation failures.
+### macOS
-## Using triplets
+```bash
+# Apple Silicon
+vcpkg install mstelemetry --triplet=arm64-osx
-In order to enable custom build flags - vcpkg triplets and custom environment variables may be used. Please see [triplets instruction here](https://vcpkg.readthedocs.io/en/latest/users/triplets/). Response file for a custom build, e.g. `response_file_linux_PRODUCTNAME.txt` may specify a custom triplet. For example, custom triplet controls if the library is built as static or dynamic. Default triplets may also be overridden with [custom triplets](https://vcpkg.readthedocs.io/en/latest/examples/overlay-triplets-linux-dynamic/#overlay-triplets-example). Custom triplets specific to various products must be maintained by product teams. Product teams may optionally decide to integrate their triplets in the mainline 1DS C++ SDK repo as-needed.
+# Intel
+vcpkg install mstelemetry --triplet=x64-osx
+```
-## Build with vcpkg dependencies
+### iOS (cross-compile)
-This section needs to be updated with more detailed info. Default `CMakeLists.txt` in top-level directory utilize the following dependencies:
+```bash
+vcpkg install mstelemetry --triplet=arm64-ios
+```
-- OS-provided `sqlite3` library.
-- OS-provided `zlib` library.
-- SDK-provided snapshot of `nlohmann-json` header-only library.
+### iOS Simulator
-It is possible to adjust the build system to use vcpkg-installed dependencies instead.
+vcpkg ships a built-in community triplet for the iOS Simulator:
-### nlohmann-json
+```bash
+vcpkg install mstelemetry --triplet=arm64-ios-simulator
+```
-The package `nlohmann-json` provides CMake targets:
+See the [vcpkg triplet documentation](https://learn.microsoft.com/en-us/vcpkg/users/triplets)
+for details on creating your own custom triplets for other platforms.
-```console
- find_package(nlohmann_json CONFIG REQUIRED)
- target_link_libraries(main PRIVATE nlohmann_json nlohmann_json::nlohmann_json)
+### Android (cross-compile)
+
+Requires the Android NDK (`ANDROID_NDK_HOME` must be set):
+
+```bash
+vcpkg install mstelemetry --triplet=arm64-android
```
-### sqlite3
+Supported triplets: `arm64-android`, `arm-neon-android`, `x64-android`,
+`x86-android`.
+
+## Dependencies
+
+The vcpkg port automatically resolves the following dependencies:
-The package `sqlite3` provides CMake targets:
+| Dependency | vcpkg Package | CMake Target | Platforms |
+| -------------- | --------------- | --------------------------------- | ------------------ |
+| SQLite3 | `sqlite3` | `unofficial::sqlite3::sqlite3` | All |
+| zlib | `zlib` | `ZLIB::ZLIB` | All |
+| nlohmann JSON | `nlohmann-json` | `nlohmann_json::nlohmann_json` | All |
+| libcurl | `curl[ssl]` | `CURL::libcurl` | Linux |
+
+Windows, macOS/iOS, and Android use platform-native HTTP clients (WinInet,
+NSURLSession, and HttpClient_Android respectively), so curl is not required
+on those platforms.
+
+## Optional: SIMD-Optimized zlib with zlib-ng
+
+The vcpkg port depends on stock `zlib` by default. If you want SIMD-optimized
+compression (Intel PCLMULQDQ/AVX2, ARM NEON, etc.), you can transparently
+replace zlib with [zlib-ng](https://github.com/zlib-ng/zlib-ng) in
+compatibility mode. No changes to the port or SDK code are needed.
+
+**Add one line to your vcpkg triplet file** (e.g., `x64-windows-static.cmake`):
+
+```cmake
+set(ZLIB_COMPAT ON)
+```
+
+Then install `zlib-ng` instead of `zlib`:
```console
- find_package(unofficial-sqlite3 CONFIG REQUIRED)
- target_link_libraries(main PRIVATE unofficial::sqlite3::sqlite3)
+vcpkg install zlib-ng mstelemetry --triplet=x64-windows-static
```
-### zlib
+With `ZLIB_COMPAT=ON`, zlib-ng installs as a drop-in replacement — it provides
+the same `zlib.h` header, the same function names (`deflate`, `inflate`,
+`crc32`), and the same `ZLIB::ZLIB` CMake target. All packages that depend on
+`zlib` (including `mstelemetry` and any other libraries like `onnxruntime`)
+will automatically use the optimized zlib-ng build.
-The package zlib is compatible with built-in CMake targets:
+> **Important:** All libraries in the same binary should link against the same
+> zlib. When using `ZLIB_COMPAT=ON`, ensure all dependencies resolve to
+> zlib-ng rather than mixing stock zlib and zlib-ng.
-```console
- find_package(ZLIB REQUIRED)
- target_link_libraries(main PRIVATE ZLIB::ZLIB)
+## How It Works: MATSDK_USE_VCPKG_DEPS
+
+When the SDK detects it is being built via vcpkg (by checking for
+`VCPKG_TOOLCHAIN` or `VCPKG_TARGET_TRIPLET`), it automatically sets
+`MATSDK_USE_VCPKG_DEPS=ON`. This switches dependency resolution from
+vendored sources to vcpkg-provided packages via `find_package()`.
+
+You can also set this explicitly for custom CMake workflows:
+
+```bash
+cmake -DMATSDK_USE_VCPKG_DEPS=ON \
+ -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake \
+ ..
+```
+
+## Troubleshooting
+
+vcpkg build log files are created in
+`${VCPKG_INSTALL_DIR}/buildtrees/mstelemetry/`. Review the following logs
+if you encounter package installation failures:
+
+| File | Contents |
+| ---- | -------- |
+| `build-out.log` | Build stdout (compiler output) |
+| `build-err.log` | Build stderr (compiler errors/warnings) |
+| `config-*.log` | CMake configure output |
+
+You can also pass `--debug` to `vcpkg install` for verbose diagnostics.
+
+## Testing the Port
+
+Integration tests are provided in `tests/vcpkg/`. Each script builds the
+port from the overlay, compiles a test consumer, and runs runtime checks:
+
+```bash
+# Windows (from Developer Command Prompt)
+.\tests\vcpkg\test-vcpkg-windows.ps1 -VcpkgRoot C:\path\to\vcpkg
+
+# Linux
+./tests/vcpkg/test-vcpkg-linux.sh
+
+# macOS
+./tests/vcpkg/test-vcpkg-macos.sh
+
+# iOS (cross-compile — verifies binary is produced)
+./tests/vcpkg/test-vcpkg-ios.sh
+
+# iOS Simulator (builds and runs on simulator)
+./tests/vcpkg/test-vcpkg-ios.sh --simulator
+
+# Android (cross-compile — verifies binary is produced)
+./tests/vcpkg/test-vcpkg-android.sh
```
+
+See [tests/vcpkg/README.md](../tests/vcpkg/README.md) for prerequisites and
+detailed usage.
diff --git a/examples/c/SampleC-Guest/CMakeLists.txt b/examples/c/SampleC-Guest/CMakeLists.txt
index d5932af4e..2ff06780e 100644
--- a/examples/c/SampleC-Guest/CMakeLists.txt
+++ b/examples/c/SampleC-Guest/CMakeLists.txt
@@ -1,46 +1,27 @@
-cmake_minimum_required(VERSION 3.1.0)
+cmake_minimum_required(VERSION 3.1.0...3.5)
project(SampleC-Guest)
# Uncomment for building i386 binary on x86_64 system
#set(CMAKE_SYSTEM_PROCESSOR i386)
-# For ARM / Raspberry Pi 3 cross-compile
-# set(MATSDK_LIB /usr/local/lib/armv7l-linux-gnu)
-
-# Point example to SDK dirs for x86_64 Desktop
-if(EXISTS "/usr/local/lib/libmat.a")
-# Use local libmat.a
-set(MATSDK_LIB /usr/local/lib/)
-else()
-# Use architecture-specific libmat.a
-set(MATSDK_LIB /usr/local/lib/${CMAKE_SYSTEM_PROCESSOR}-linux-gnu)
-endif()
+include(${CMAKE_CURRENT_LIST_DIR}/../../cmake/MSTelemetrySample.cmake)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -ggdb -gdwarf-2 -std=c11")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -ggdb -gdwarf-2 -std=c++11")
find_package (Threads)
-set(MATSDK_INCLUDE /usr/local/include/mat)
-
# 1DS SDK to include dirs
-include_directories( . ${MATSDK_INCLUDE} )
+include_directories(. ${MATSDK_SAMPLE_INCLUDE_DIRS})
# Link main.cpp to executable
add_executable(SampleC-Guest main.cpp demo.c)
source_group(" " REGULAR_EXPRESSION "")
-# Prefer linking to more recent local sqlite3
-if(EXISTS "/usr/local/lib/libsqlite3.a")
-set (SQLITE3_LIB "/usr/local/lib/libsqlite3.a")
-else()
-set (SQLITE3_LIB "sqlite3")
-endif()
-
set (PLATFORM_LIBS "")
# Add flags for obtaining system UUID via IOKit
if (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
set (PLATFORM_LIBS "-framework CoreFoundation -framework IOKit")
endif()
-target_link_libraries(SampleC-Guest ${MATSDK_LIB}/libmat.a curl z ${CMAKE_THREAD_LIBS_INIT} ${SQLITE3_LIB} ${PLATFORM_LIBS} dl)
+target_link_libraries(SampleC-Guest ${MATSDK_LIBRARY} curl z ${CMAKE_THREAD_LIBS_INIT} ${MATSDK_SQLITE3_LIB} ${MATSDK_SAMPLE_PLATFORM_LIBS} ${PLATFORM_LIBS} dl)
diff --git a/examples/cmake/MSTelemetrySample.cmake b/examples/cmake/MSTelemetrySample.cmake
new file mode 100644
index 000000000..588dd6727
--- /dev/null
+++ b/examples/cmake/MSTelemetrySample.cmake
@@ -0,0 +1,48 @@
+set(_MATSDK_DEFAULT_INSTALL_DIR "/usr/local")
+if(NOT "$ENV{MATSDK_INSTALL_DIR}" STREQUAL "")
+ set(_MATSDK_DEFAULT_INSTALL_DIR "$ENV{MATSDK_INSTALL_DIR}")
+endif()
+
+set(MATSDK_INSTALL_DIR "${_MATSDK_DEFAULT_INSTALL_DIR}" CACHE PATH "MSTelemetry install prefix")
+set(MATSDK_INCLUDE_DIR "${MATSDK_INSTALL_DIR}/include/mat" CACHE PATH "MSTelemetry public headers")
+set(MATSDK_LIB_DIR "${MATSDK_INSTALL_DIR}/lib" CACHE PATH "MSTelemetry library directory")
+
+if(NOT EXISTS "${MATSDK_LIB_DIR}/libmat.a"
+ AND NOT EXISTS "${MATSDK_LIB_DIR}/libmat.dylib"
+ AND EXISTS "${MATSDK_LIB_DIR}/${CMAKE_SYSTEM_PROCESSOR}-linux-gnu/libmat.a")
+ set(MATSDK_LIB_DIR "${MATSDK_LIB_DIR}/${CMAKE_SYSTEM_PROCESSOR}-linux-gnu" CACHE PATH "MSTelemetry library directory" FORCE)
+endif()
+
+find_library(MATSDK_LIBRARY NAMES mat HINTS "${MATSDK_LIB_DIR}" NO_DEFAULT_PATH)
+if(NOT MATSDK_LIBRARY)
+ message(FATAL_ERROR "Could not find libmat under ${MATSDK_LIB_DIR}. Set MATSDK_INSTALL_DIR or MATSDK_LIB_DIR.")
+endif()
+
+if(NOT EXISTS "${MATSDK_INCLUDE_DIR}")
+ message(FATAL_ERROR "Could not find mat headers under ${MATSDK_INCLUDE_DIR}. Set MATSDK_INSTALL_DIR or MATSDK_INCLUDE_DIR.")
+endif()
+
+set(MATSDK_SAMPLE_INCLUDE_DIRS "${MATSDK_INCLUDE_DIR}")
+
+set(MATSDK_SAMPLE_PLATFORM_LIBS "")
+if(APPLE)
+ list(APPEND MATSDK_SAMPLE_PLATFORM_LIBS
+ "-framework CoreFoundation"
+ "-framework Foundation"
+ "-framework CFNetwork"
+ "-framework Network"
+ "-framework SystemConfiguration"
+ )
+ if(CMAKE_SYSTEM_NAME STREQUAL "iOS")
+ list(APPEND MATSDK_SAMPLE_PLATFORM_LIBS "-framework UIKit")
+ else()
+ list(APPEND MATSDK_SAMPLE_PLATFORM_LIBS "-framework IOKit")
+ endif()
+endif()
+
+find_library(MATSDK_SQLITE3_LIB NAMES sqlite3 HINTS "${MATSDK_INSTALL_DIR}/lib" NO_DEFAULT_PATH)
+if(NOT MATSDK_SQLITE3_LIB)
+ set(MATSDK_SQLITE3_LIB sqlite3)
+endif()
+
+mark_as_advanced(MATSDK_INSTALL_DIR MATSDK_INCLUDE_DIR MATSDK_LIB_DIR MATSDK_LIBRARY MATSDK_SQLITE3_LIB)
diff --git a/examples/cpp/EventSender/CMakeLists.txt b/examples/cpp/EventSender/CMakeLists.txt
index 67a1a3ae6..c8092b084 100644
--- a/examples/cpp/EventSender/CMakeLists.txt
+++ b/examples/cpp/EventSender/CMakeLists.txt
@@ -1,42 +1,23 @@
-cmake_minimum_required(VERSION 3.1.0)
+cmake_minimum_required(VERSION 3.1.0...3.5)
project(EventSender)
# Uncomment for building i386 binary on x86_64 system
#set(CMAKE_SYSTEM_PROCESSOR i386)
-# For ARM / Raspberry Pi 3 cross-compile
-# set(MAT_SDK_LIB /usr/local/lib/armv7l-linux-gnu)
-
-# Point example to SDK dirs for x86_64 Desktop
-if(EXISTS "/usr/local/lib/libmat.a")
-# Use local libmat.a
-set(MAT_SDK_LIB /usr/local/lib/)
-else()
-# Use architecture-specific libmat.a
-set(MAT_SDK_LIB /usr/local/lib/${CMAKE_SYSTEM_PROCESSOR}-linux-gnu)
-endif()
+include(${CMAKE_CURRENT_LIST_DIR}/../../cmake/MSTelemetrySample.cmake)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -ggdb -gdwarf-2 -std=c11")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -ggdb -gdwarf-2 -std=c++11")
find_package (Threads)
-set(MAT_SDK_INCLUDE /usr/local/include/mat)
-
# 1DS SDK to include dirs
-include_directories( . ${MAT_SDK_INCLUDE} )
+include_directories(. ${MATSDK_SAMPLE_INCLUDE_DIRS})
# Link main.cpp to executable
add_executable(EventSender EventSender.cpp)
source_group(" " REGULAR_EXPRESSION "")
-# Prefer linking to more recent local sqlite3
-if(EXISTS "/usr/local/lib/libsqlite3.a")
-set (SQLITE3_LIB "/usr/local/lib/libsqlite3.a")
-else()
-set (SQLITE3_LIB "sqlite3")
-endif()
-
set (PLATFORM_LIBS "")
# Add flags for obtaining system UUID via IOKit
if (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
@@ -46,4 +27,4 @@ endif()
#tcmalloc turned off by default
#target_link_libraries(EventSender ${MAT_SDK_LIB}/libmat.a curl z ${CMAKE_THREAD_LIBS_INIT} ${SQLITE3_LIB} dl tcmalloc)
-target_link_libraries(EventSender ${MAT_SDK_LIB}/libmat.a curl z ${CMAKE_THREAD_LIBS_INIT} ${SQLITE3_LIB} ${PLATFORM_LIBS} dl)
+target_link_libraries(EventSender ${MATSDK_LIBRARY} curl z ${CMAKE_THREAD_LIBS_INIT} ${MATSDK_SQLITE3_LIB} ${MATSDK_SAMPLE_PLATFORM_LIBS} ${PLATFORM_LIBS} dl)
diff --git a/examples/cpp/EventSender/EventSender.vcxproj b/examples/cpp/EventSender/EventSender.vcxproj
index b55221e14..50332eda6 100644
--- a/examples/cpp/EventSender/EventSender.vcxproj
+++ b/examples/cpp/EventSender/EventSender.vcxproj
@@ -200,13 +200,13 @@
-
+
{1DC6B38A-B390-34CE-907F-4958807A3D42}
-
+
{2ebc7b3c-2af1-442c-9285-cab39bbb8c00}
-
+
{8fd826f8-3739-44e6-8cc8-997122e53b8d}
diff --git a/examples/cpp/EventSender/EventSender.vcxproj.filters b/examples/cpp/EventSender/EventSender.vcxproj.filters
index f5b9ccda5..3eed0873f 100644
--- a/examples/cpp/EventSender/EventSender.vcxproj.filters
+++ b/examples/cpp/EventSender/EventSender.vcxproj.filters
@@ -19,99 +19,4 @@
Source Files
-
-
-
- Header Files
-
-
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
\ No newline at end of file
diff --git a/examples/cpp/MacProxy/CMakeLists.txt b/examples/cpp/MacProxy/CMakeLists.txt
index 89d4cb233..e9b6c1005 100644
--- a/examples/cpp/MacProxy/CMakeLists.txt
+++ b/examples/cpp/MacProxy/CMakeLists.txt
@@ -1,42 +1,23 @@
-cmake_minimum_required(VERSION 3.1.0)
+cmake_minimum_required(VERSION 3.1.0...3.5)
project(MacProxy)
# Uncomment for building i386 binary on x86_64 system
#set(CMAKE_SYSTEM_PROCESSOR i386)
-# For ARM / Raspberry Pi 3 cross-compile
-# set(MAT_SDK_LIB /usr/local/lib/armv7l-linux-gnu)
-
-# Point example to SDK dirs for x86_64 Desktop
-if(EXISTS "/usr/local/lib/libmat.a")
-# Use local libmat.a
-set(MAT_SDK_LIB /usr/local/lib/)
-else()
-# Use architecture-specific libmat.a
-set(MAT_SDK_LIB /usr/local/lib/${CMAKE_SYSTEM_PROCESSOR}-linux-gnu)
-endif()
+include(${CMAKE_CURRENT_LIST_DIR}/../../cmake/MSTelemetrySample.cmake)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -ggdb -gdwarf-2 -std=c11")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -ggdb -gdwarf-2 -std=c++11")
find_package (Threads)
-set(MAT_SDK_INCLUDE /usr/local/include/mat)
-
# 1DS SDK to include dirs
-include_directories( . ${MAT_SDK_INCLUDE} )
+include_directories(. ${MATSDK_SAMPLE_INCLUDE_DIRS})
# Link main.cpp to executable
add_executable(MacProxy main.cpp HttpEventListener.cpp)
source_group(" " REGULAR_EXPRESSION "")
-# Prefer linking to more recent local sqlite3
-if(EXISTS "/usr/local/lib/libsqlite3.a")
-set (SQLITE3_LIB "/usr/local/lib/libsqlite3.a")
-else()
-set (SQLITE3_LIB "sqlite3")
-endif()
-
set (PLATFORM_LIBS "")
# Add flags for obtaining system UUID via IOKit
if (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
@@ -48,4 +29,4 @@ if (CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7l")
set (PLATFORM_LIBS "atomic")
endif()
-target_link_libraries(MacProxy ${MAT_SDK_LIB}/libmat.a curl z ${CMAKE_THREAD_LIBS_INIT} ${SQLITE3_LIB} ${PLATFORM_LIBS} dl)
+target_link_libraries(MacProxy ${MATSDK_LIBRARY} curl z ${CMAKE_THREAD_LIBS_INIT} ${MATSDK_SQLITE3_LIB} ${MATSDK_SAMPLE_PLATFORM_LIBS} ${PLATFORM_LIBS} dl)
diff --git a/examples/cpp/SampleCpp/CMakeLists.txt b/examples/cpp/SampleCpp/CMakeLists.txt
index b377d0ab2..6a1e70d78 100644
--- a/examples/cpp/SampleCpp/CMakeLists.txt
+++ b/examples/cpp/SampleCpp/CMakeLists.txt
@@ -1,46 +1,23 @@
-cmake_minimum_required(VERSION 3.1.0)
+cmake_minimum_required(VERSION 3.1.0...3.5)
project(SampleCpp)
# Uncomment for building i386 binary on x86_64 system
#set(CMAKE_SYSTEM_PROCESSOR i386)
-if (NOT TARGET_ARCH)
- set(TARGET_ARCH ${CMAKE_SYSTEM_PROCESSOR})
-endif()
-
-# For ARM / Raspberry Pi 3 cross-compile
-# set(MAT_SDK_LIB /usr/local/lib/armv7l-linux-gnu)
-
-# Search for static lib first
-find_path(MAT_SDK_LIB_PATH NAMES libmat.a PATHS /usr/lib /usr/local/lib /usr/local/lib/${TARGET_ARCH}-linux-gnu)
-if (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
- # Search for .dylib on Mac OS X
- find_path(MAT_SDK_DYLIB_PATH NAMES libmat.dylib PATHS /usr/lib /usr/local/lib)
-endif()
-find_library(LIBMAT NAMES libmat.a libmat.dylib HINTS ${MAT_SDK_LIB_PATH} ${MAT_SDK_DYLIB_PATH})
+include(${CMAKE_CURRENT_LIST_DIR}/../../cmake/MSTelemetrySample.cmake)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -ggdb -gdwarf-2 -std=c11")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -ggdb -gdwarf-2 -std=c++11")
find_package (Threads)
-set(MAT_SDK_INCLUDE /usr/local/include/mat)
-
# 1DS SDK to include dirs
-include_directories( . ${MAT_SDK_INCLUDE} )
+include_directories(. ${MATSDK_SAMPLE_INCLUDE_DIRS})
# Link main.cpp to executable
add_executable(SampleCpp main.cpp DebugCallback.cpp demo.c)
source_group(" " REGULAR_EXPRESSION "")
-# NOTE: modify this sample if necessary to use vcpkg-provided sqlite library
-# Prefer linking to more recent local sqlite3
-if(EXISTS "/usr/local/lib/libsqlite3.a")
-set (SQLITE3_LIB "/usr/local/lib/libsqlite3.a")
-else()
-set (SQLITE3_LIB "sqlite3")
-endif()
-
set (PLATFORM_LIBS "")
# Add flags for obtaining system UUID via IOKit
if (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
@@ -55,5 +32,5 @@ endif()
#tcmalloc turned off by default
#target_link_libraries(SampleCpp ${MAT_SDK_LIB}/libmat.a curl z ${CMAKE_THREAD_LIBS_INIT} ${SQLITE3_LIB} dl tcmalloc)
-# TODO: use add_library to allow linking against ${LIBMAT_STATIC}
-target_link_libraries(SampleCpp ${LIBMAT} curl z ${CMAKE_THREAD_LIBS_INIT} ${SQLITE3_LIB} ${PLATFORM_LIBS} dl)
+# TODO: use add_library to allow linking against a proper exported SDK target
+target_link_libraries(SampleCpp ${MATSDK_LIBRARY} curl z ${CMAKE_THREAD_LIBS_INIT} ${MATSDK_SQLITE3_LIB} ${MATSDK_SAMPLE_PLATFORM_LIBS} ${PLATFORM_LIBS} dl)
diff --git a/examples/cpp/SampleCpp/SampleCpp.vcxproj b/examples/cpp/SampleCpp/SampleCpp.vcxproj
index 500d966f6..a8548808f 100644
--- a/examples/cpp/SampleCpp/SampleCpp.vcxproj
+++ b/examples/cpp/SampleCpp/SampleCpp.vcxproj
@@ -1080,7 +1080,6 @@
-
@@ -1093,13 +1092,13 @@
-
+
{1DC6B38A-B390-34CE-907F-4958807A3D42}
-
+
{2ebc7b3c-2af1-442c-9285-cab39bbb8c00}
-
+
{8fd826f8-3739-44e6-8cc8-997122e53b8d}
diff --git a/examples/cpp/SampleCpp/SampleCpp.vcxproj.filters b/examples/cpp/SampleCpp/SampleCpp.vcxproj.filters
index 9a605a027..ae87cc1f8 100644
--- a/examples/cpp/SampleCpp/SampleCpp.vcxproj.filters
+++ b/examples/cpp/SampleCpp/SampleCpp.vcxproj.filters
@@ -15,9 +15,6 @@
-
- Header Files
-
Source Files
diff --git a/examples/cpp/SampleCppMini/CMakeLists.txt b/examples/cpp/SampleCppMini/CMakeLists.txt
index af0fbf873..bd9548e5f 100644
--- a/examples/cpp/SampleCppMini/CMakeLists.txt
+++ b/examples/cpp/SampleCppMini/CMakeLists.txt
@@ -1,42 +1,23 @@
-cmake_minimum_required(VERSION 3.1.0)
+cmake_minimum_required(VERSION 3.1.0...3.5)
project(SampleCppMini)
# Uncomment for building i386 binary on x86_64 system
#set(CMAKE_SYSTEM_PROCESSOR i386)
-# For ARM / Raspberry Pi 3 cross-compile
-# set(MAT_SDK_LIB /usr/local/lib/armv7l-linux-gnu)
-
-# Point example to SDK dirs for x86_64 Desktop
-if(EXISTS "/usr/local/lib/libmat.a")
-# Use local libmat.a
-set(MAT_SDK_LIB /usr/local/lib/)
-else()
-# Use architecture-specific libmat.a
-set(MAT_SDK_LIB /usr/local/lib/${CMAKE_SYSTEM_PROCESSOR}-linux-gnu)
-endif()
+include(${CMAKE_CURRENT_LIST_DIR}/../../cmake/MSTelemetrySample.cmake)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -ggdb -gdwarf-2 -std=c11")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -ggdb -gdwarf-2 -std=c++11")
find_package (Threads)
-set(MAT_SDK_INCLUDE /usr/local/include/aria)
-
# 1DS SDK to include dirs
-include_directories( . ${MAT_SDK_INCLUDE} )
+include_directories(. ${MATSDK_SAMPLE_INCLUDE_DIRS})
# Link main.cpp to executable
-add_executable(SampleCppMini main.cpp DebugCallback.cpp demo.c)
+add_executable(SampleCppMini main.cpp demo.c)
source_group(" " REGULAR_EXPRESSION "")
-# Prefer linking to more recent local sqlite3
-if(EXISTS "/usr/local/lib/libsqlite3.a")
-set (SQLITE3_LIB "/usr/local/lib/libsqlite3.a")
-else()
-set (SQLITE3_LIB "sqlite3")
-endif()
-
set (PLATFORM_LIBS "")
# Add flags for obtaining system UUID via IOKit
if (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
@@ -46,4 +27,4 @@ endif()
#tcmalloc turned off by default
#target_link_libraries(SampleCppMini ${MAT_SDK_LIB}/libmat.a curl z ${CMAKE_THREAD_LIBS_INIT} ${SQLITE3_LIB} dl tcmalloc)
-target_link_libraries(SampleCppMini ${MAT_SDK_LIB}/libmat.a curl z ${CMAKE_THREAD_LIBS_INIT} ${SQLITE3_LIB} ${PLATFORM_LIBS} dl)
+target_link_libraries(SampleCppMini ${MATSDK_LIBRARY} curl z ${CMAKE_THREAD_LIBS_INIT} ${MATSDK_SQLITE3_LIB} ${MATSDK_SAMPLE_PLATFORM_LIBS} ${PLATFORM_LIBS} dl)
diff --git a/examples/cpp/SampleCppMini/SampleCppMini.vcxproj b/examples/cpp/SampleCppMini/SampleCppMini.vcxproj
index 88bca8d6d..424394f7e 100644
--- a/examples/cpp/SampleCppMini/SampleCppMini.vcxproj
+++ b/examples/cpp/SampleCppMini/SampleCppMini.vcxproj
@@ -1542,7 +1542,6 @@
-
diff --git a/examples/cpp/SampleCppMini/SampleCppMini.vcxproj.filters b/examples/cpp/SampleCppMini/SampleCppMini.vcxproj.filters
index ad3de7523..2df19ab39 100644
--- a/examples/cpp/SampleCppMini/SampleCppMini.vcxproj.filters
+++ b/examples/cpp/SampleCppMini/SampleCppMini.vcxproj.filters
@@ -14,11 +14,6 @@
rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
-
-
- Header Files
-
-
Source Files
diff --git a/examples/cpp/SampleCppMini/main.cpp b/examples/cpp/SampleCppMini/main.cpp
index 5214ebc22..9a94146ce 100644
--- a/examples/cpp/SampleCppMini/main.cpp
+++ b/examples/cpp/SampleCppMini/main.cpp
@@ -56,8 +56,10 @@ void test_cpp_api(const char * token, int ticketType, const char *ticket)
// Log detailed event with various properties
EventProperties detailed_event("MyApp.detailed_event",
{
+#ifdef _MSC_VER
// Log compiler version
{ "_MSC_VER", _MSC_VER },
+#endif
// Pii-typed fields
{ "piiKind.None", EventProperty("field_value", PiiKind_None) },
{ "piiKind.DistinguishedName", EventProperty("/CN=Jack Frost,OU=PIE,DC=REDMOND,DC=COM", PiiKind_DistinguishedName) },
@@ -75,7 +77,7 @@ void test_cpp_api(const char * token, int ticketType, const char *ticket)
// Various typed key-values
{ "strKey1", "hello1" },
{ "strKey2", "hello2" },
- { "int64Key", 1L },
+ { "int64Key", 1LL },
{ "dblKey", 3.14 },
{ "boolKey", false },
{ "guidKey0", GUID_t("00000000-0000-0000-0000-000000000000") },
diff --git a/examples/cpp/SampleCppUWP/SampleCppUWP.vcxproj b/examples/cpp/SampleCppUWP/SampleCppUWP.vcxproj
index 0f493a588..a55fbf088 100644
--- a/examples/cpp/SampleCppUWP/SampleCppUWP.vcxproj
+++ b/examples/cpp/SampleCppUWP/SampleCppUWP.vcxproj
@@ -281,7 +281,6 @@
-
diff --git a/examples/cpp/SampleCppUWP/SampleCppUWP.vcxproj.filters b/examples/cpp/SampleCppUWP/SampleCppUWP.vcxproj.filters
index 6aa826060..98247e7a6 100644
--- a/examples/cpp/SampleCppUWP/SampleCppUWP.vcxproj.filters
+++ b/examples/cpp/SampleCppUWP/SampleCppUWP.vcxproj.filters
@@ -46,6 +46,5 @@
-
\ No newline at end of file
diff --git a/examples/objc/cocoa-app/CMakeLists.txt b/examples/objc/cocoa-app/CMakeLists.txt
index 4d5456a83..0a172300a 100644
--- a/examples/objc/cocoa-app/CMakeLists.txt
+++ b/examples/objc/cocoa-app/CMakeLists.txt
@@ -1,31 +1,15 @@
-cmake_minimum_required(VERSION 2.8.8)
+cmake_minimum_required(VERSION 2.8.8...3.5)
project(foo)
-# Point example to SDK dirs for x86_64 Desktop
-if(EXISTS "/usr/local/lib/libmat.a")
-# Use local libmat.a
-set(MATSDK_LIB /usr/local/lib/)
-else()
-# Use architecture-specific libmat.a
-set(MATSDK_LIB /usr/local/lib/${CMAKE_SYSTEM_PROCESSOR}-linux-gnu)
-endif()
+include(${CMAKE_CURRENT_LIST_DIR}/../../cmake/MSTelemetrySample.cmake)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -ggdb -gdwarf-2 -std=c11")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -ggdb -gdwarf-2 -std=c++11")
find_package (Threads)
-set(MATSDK_INCLUDE /usr/local/include/mat)
-
# 1DS SDK to include dirs
-include_directories( . ${MATSDK_INCLUDE} )
-
-# Prefer linking to more recent local sqlite3
-if(EXISTS "/usr/local/lib/libsqlite3.a")
-set (SQLITE3_LIB "/usr/local/lib/libsqlite3.a")
-else()
-set (SQLITE3_LIB "sqlite3")
-endif()
+include_directories(. ${MATSDK_SAMPLE_INCLUDE_DIRS})
set (PLATFORM_LIBS "")
# Add flags for obtaining system UUID via IOKit
@@ -57,4 +41,4 @@ set_target_properties(
${CMAKE_CURRENT_LIST_DIR}/plist.in
)
-target_link_libraries(foo ${MATSDK_LIB}/libmat.a curl z ${CMAKE_THREAD_LIBS_INIT} ${SQLITE3_LIB} ${PLATFORM_LIBS} dl)
+target_link_libraries(foo ${MATSDK_LIBRARY} curl z ${CMAKE_THREAD_LIBS_INIT} ${MATSDK_SQLITE3_LIB} ${MATSDK_SAMPLE_PLATFORM_LIBS} ${PLATFORM_LIBS} dl)
diff --git a/examples/swift/SamplePackage/Package.swift b/examples/swift/SamplePackage/Package.swift
index eb32822c2..66930e19b 100644
--- a/examples/swift/SamplePackage/Package.swift
+++ b/examples/swift/SamplePackage/Package.swift
@@ -2,6 +2,9 @@
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
+import Foundation
+
+let matsdkInstallDir = ProcessInfo.processInfo.environment["MATSDK_INSTALL_DIR"] ?? "/usr/local"
let package = Package(
name: "SamplePackage",
@@ -26,7 +29,7 @@ let package = Package(
.unsafeFlags(["-Xcc", "-I../../../wrappers/swift/Modules/"]),
],
linkerSettings: [
- .unsafeFlags(["-L/usr/local/lib"]),
+ .unsafeFlags(["-L\(matsdkInstallDir)/lib"]),
// Libs to be linked.
.linkedLibrary("mat"),
.linkedLibrary("sqlite3"),
diff --git a/examples/swift/SampleXcodeApp/SwiftWrapperApp.xcodeproj/project.pbxproj b/examples/swift/SampleXcodeApp/SwiftWrapperApp.xcodeproj/project.pbxproj
index 50111aaf0..4000bc664 100644
--- a/examples/swift/SampleXcodeApp/SwiftWrapperApp.xcodeproj/project.pbxproj
+++ b/examples/swift/SampleXcodeApp/SwiftWrapperApp.xcodeproj/project.pbxproj
@@ -1,423 +1,426 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 56;
- objects = {
-
-/* Begin PBXBuildFile section */
- 2711D2652A45438A000712BD /* SwiftWrapperExampleApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2711D2642A45438A000712BD /* SwiftWrapperExampleApp.swift */; };
- 2711D2672A45438A000712BD /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2711D2662A45438A000712BD /* ContentView.swift */; };
- 2711D26D2A45438C000712BD /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 2711D26C2A45438C000712BD /* Preview Assets.xcassets */; };
- A34744202A4642300039D419 /* OneDSSwift in Frameworks */ = {isa = PBXBuildFile; productRef = A347441F2A4642300039D419 /* OneDSSwift */; };
- A34744242A4643B20039D419 /* libmat.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A34744232A4643B20039D419 /* libmat.a */; };
- A34744262A4643FE0039D419 /* libsqlite3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A34744252A4643FE0039D419 /* libsqlite3.a */; };
- A34744282A46440F0039D419 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A34744272A46440F0039D419 /* SystemConfiguration.framework */; };
- A347442A2A46441A0039D419 /* Network.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A34744292A46441A0039D419 /* Network.framework */; };
- A347442C2A46442C0039D419 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = A347442B2A46442C0039D419 /* libz.tbd */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXFileReference section */
- 2711D2612A45438A000712BD /* SwiftWrapperApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwiftWrapperApp.app; sourceTree = BUILT_PRODUCTS_DIR; };
- 2711D2642A45438A000712BD /* SwiftWrapperExampleApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftWrapperExampleApp.swift; sourceTree = ""; };
- 2711D2662A45438A000712BD /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; };
- 2711D26A2A45438C000712BD /* SwiftWrapperApp.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = SwiftWrapperApp.entitlements; sourceTree = ""; };
- 2711D26C2A45438C000712BD /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; };
- 2711D2732A45452E000712BD /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; };
- 277E76FF2A45FE4D004A3A8F /* swift */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = swift; path = ../../../wrappers/swift; sourceTree = ""; };
- A34744232A4643B20039D419 /* libmat.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmat.a; path = /usr/local/lib/libmat.a; sourceTree = ""; };
- A34744252A4643FE0039D419 /* libsqlite3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libsqlite3.a; path = /usr/local/lib/libsqlite3.a; sourceTree = ""; };
- A34744272A46440F0039D419 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk/System/Library/Frameworks/SystemConfiguration.framework; sourceTree = DEVELOPER_DIR; };
- A34744292A46441A0039D419 /* Network.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Network.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk/System/Library/Frameworks/Network.framework; sourceTree = DEVELOPER_DIR; };
- A347442B2A46442C0039D419 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk/usr/lib/libz.tbd; sourceTree = DEVELOPER_DIR; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- 2711D25E2A45438A000712BD /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- A347442C2A46442C0039D419 /* libz.tbd in Frameworks */,
- A347442A2A46441A0039D419 /* Network.framework in Frameworks */,
- A34744282A46440F0039D419 /* SystemConfiguration.framework in Frameworks */,
- A34744202A4642300039D419 /* OneDSSwift in Frameworks */,
- A34744242A4643B20039D419 /* libmat.a in Frameworks */,
- A34744262A4643FE0039D419 /* libsqlite3.a in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 2711D2582A45438A000712BD = {
- isa = PBXGroup;
- children = (
- 277E76FE2A45FE4D004A3A8F /* Packages */,
- 2711D2632A45438A000712BD /* SwiftWrapperApp */,
- 2711D2622A45438A000712BD /* Products */,
- A347441E2A4642300039D419 /* Frameworks */,
- );
- sourceTree = "";
- };
- 2711D2622A45438A000712BD /* Products */ = {
- isa = PBXGroup;
- children = (
- 2711D2612A45438A000712BD /* SwiftWrapperApp.app */,
- );
- name = Products;
- sourceTree = "";
- };
- 2711D2632A45438A000712BD /* SwiftWrapperApp */ = {
- isa = PBXGroup;
- children = (
- 2711D2732A45452E000712BD /* Info.plist */,
- 2711D2642A45438A000712BD /* SwiftWrapperExampleApp.swift */,
- 2711D2662A45438A000712BD /* ContentView.swift */,
- 2711D26A2A45438C000712BD /* SwiftWrapperApp.entitlements */,
- 2711D26B2A45438C000712BD /* Preview Content */,
- );
- path = SwiftWrapperApp;
- sourceTree = "";
- };
- 2711D26B2A45438C000712BD /* Preview Content */ = {
- isa = PBXGroup;
- children = (
- 2711D26C2A45438C000712BD /* Preview Assets.xcassets */,
- );
- path = "Preview Content";
- sourceTree = "";
- };
- 277E76FE2A45FE4D004A3A8F /* Packages */ = {
- isa = PBXGroup;
- children = (
- 277E76FF2A45FE4D004A3A8F /* swift */,
- );
- name = Packages;
- sourceTree = "";
- };
- A347441E2A4642300039D419 /* Frameworks */ = {
- isa = PBXGroup;
- children = (
- A347442B2A46442C0039D419 /* libz.tbd */,
- A34744292A46441A0039D419 /* Network.framework */,
- A34744272A46440F0039D419 /* SystemConfiguration.framework */,
- A34744252A4643FE0039D419 /* libsqlite3.a */,
- A34744232A4643B20039D419 /* libmat.a */,
- );
- name = Frameworks;
- sourceTree = "";
- };
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
- 2711D2602A45438A000712BD /* SwiftWrapperApp */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 2711D2702A45438C000712BD /* Build configuration list for PBXNativeTarget "SwiftWrapperApp" */;
- buildPhases = (
- 2711D25D2A45438A000712BD /* Sources */,
- 2711D25E2A45438A000712BD /* Frameworks */,
- 2711D25F2A45438A000712BD /* Resources */,
- );
- buildRules = (
- );
- dependencies = (
- 277E77012A460B83004A3A8F /* PBXTargetDependency */,
- );
- name = SwiftWrapperApp;
- packageProductDependencies = (
- A347441F2A4642300039D419 /* OneDSSwift */,
- );
- productName = SwiftWrapperApp;
- productReference = 2711D2612A45438A000712BD /* SwiftWrapperApp.app */;
- productType = "com.apple.product-type.application";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- 2711D2592A45438A000712BD /* Project object */ = {
- isa = PBXProject;
- attributes = {
- BuildIndependentTargetsInParallel = 1;
- LastSwiftUpdateCheck = 1430;
- LastUpgradeCheck = 1430;
- TargetAttributes = {
- 2711D2602A45438A000712BD = {
- CreatedOnToolsVersion = 14.3;
- };
- };
- };
- buildConfigurationList = 2711D25C2A45438A000712BD /* Build configuration list for PBXProject "SwiftWrapperApp" */;
- compatibilityVersion = "Xcode 14.0";
- developmentRegion = en;
- hasScannedForEncodings = 0;
- knownRegions = (
- en,
- Base,
- );
- mainGroup = 2711D2582A45438A000712BD;
- productRefGroup = 2711D2622A45438A000712BD /* Products */;
- projectDirPath = "";
- projectRoot = "";
- targets = (
- 2711D2602A45438A000712BD /* SwiftWrapperApp */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
- 2711D25F2A45438A000712BD /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 2711D26D2A45438C000712BD /* Preview Assets.xcassets in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- 2711D25D2A45438A000712BD /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 2711D2672A45438A000712BD /* ContentView.swift in Sources */,
- 2711D2652A45438A000712BD /* SwiftWrapperExampleApp.swift in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXTargetDependency section */
- 277E77012A460B83004A3A8F /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- productRef = 277E77002A460B83004A3A8F /* OneDSSwift */;
- };
-/* End PBXTargetDependency section */
-
-/* Begin XCBuildConfiguration section */
- 2711D26E2A45438C000712BD /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_ENABLE_OBJC_WEAK = YES;
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_BOOL_CONVERSION = YES;
- CLANG_WARN_COMMA = YES;
- CLANG_WARN_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
- CLANG_WARN_EMPTY_BODY = YES;
- CLANG_WARN_ENUM_CONVERSION = YES;
- CLANG_WARN_INFINITE_RECURSION = YES;
- CLANG_WARN_INT_CONVERSION = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_STRICT_PROTOTYPES = YES;
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
- CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
- CLANG_WARN_UNREACHABLE_CODE = YES;
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- COPY_PHASE_STRIP = NO;
- DEBUG_INFORMATION_FORMAT = dwarf;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- ENABLE_TESTABILITY = YES;
- GCC_C_LANGUAGE_STANDARD = gnu11;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "DEBUG=1",
- "$(inherited)",
- );
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_UNDECLARED_SELECTOR = YES;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
- MTL_FAST_MATH = YES;
- ONLY_ACTIVE_ARCH = YES;
- SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
- SWIFT_INCLUDE_PATHS = "";
- "SWIFT_INCLUDE_PATHS[arch=*]" = ../../../wrappers/swift/Modules/;
- SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- };
- name = Debug;
- };
- 2711D26F2A45438C000712BD /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_ENABLE_OBJC_WEAK = YES;
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_BOOL_CONVERSION = YES;
- CLANG_WARN_COMMA = YES;
- CLANG_WARN_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
- CLANG_WARN_EMPTY_BODY = YES;
- CLANG_WARN_ENUM_CONVERSION = YES;
- CLANG_WARN_INFINITE_RECURSION = YES;
- CLANG_WARN_INT_CONVERSION = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_STRICT_PROTOTYPES = YES;
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
- CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
- CLANG_WARN_UNREACHABLE_CODE = YES;
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- COPY_PHASE_STRIP = NO;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- ENABLE_NS_ASSERTIONS = NO;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- GCC_C_LANGUAGE_STANDARD = gnu11;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_UNDECLARED_SELECTOR = YES;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- MTL_ENABLE_DEBUG_INFO = NO;
- MTL_FAST_MATH = YES;
- SWIFT_COMPILATION_MODE = wholemodule;
- SWIFT_INCLUDE_PATHS = "";
- SWIFT_OPTIMIZATION_LEVEL = "-O";
- };
- name = Release;
- };
- 2711D2712A45438C000712BD /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
- CODE_SIGN_ENTITLEMENTS = SwiftWrapperApp/SwiftWrapperApp.entitlements;
- CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 1;
- DEVELOPMENT_ASSET_PATHS = "\"SwiftWrapperApp/Preview Content\"";
- ENABLE_PREVIEWS = YES;
- GENERATE_INFOPLIST_FILE = YES;
- INFOPLIST_FILE = SwiftWrapperApp/Info.plist;
- "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphoneos*]" = YES;
- "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphonesimulator*]" = YES;
- "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphoneos*]" = YES;
- "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphonesimulator*]" = YES;
- "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphoneos*]" = YES;
- "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphonesimulator*]" = YES;
- "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphoneos*]" = UIStatusBarStyleDefault;
- "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphonesimulator*]" = UIStatusBarStyleDefault;
- INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
- INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
- IPHONEOS_DEPLOYMENT_TARGET = 16.4;
- LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks";
- "LD_RUNPATH_SEARCH_PATHS[arch=*]" = /usr/local/lib/;
- "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks";
- LIBRARY_SEARCH_PATHS = /usr/local/lib;
- MACOSX_DEPLOYMENT_TARGET = 13.3;
- MARKETING_VERSION = 1.0;
- PRODUCT_BUNDLE_IDENTIFIER = OneDSSwift.SwiftWrapperApp;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SDKROOT = auto;
- SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx";
- SWIFT_EMIT_LOC_STRINGS = YES;
- SWIFT_VERSION = 5.0;
- TARGETED_DEVICE_FAMILY = "1,2";
- };
- name = Debug;
- };
- 2711D2722A45438C000712BD /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
- CODE_SIGN_ENTITLEMENTS = SwiftWrapperApp/SwiftWrapperApp.entitlements;
- CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 1;
- DEVELOPMENT_ASSET_PATHS = "\"SwiftWrapperApp/Preview Content\"";
- ENABLE_PREVIEWS = YES;
- GENERATE_INFOPLIST_FILE = YES;
- INFOPLIST_FILE = SwiftWrapperApp/Info.plist;
- "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphoneos*]" = YES;
- "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphonesimulator*]" = YES;
- "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphoneos*]" = YES;
- "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphonesimulator*]" = YES;
- "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphoneos*]" = YES;
- "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphonesimulator*]" = YES;
- "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphoneos*]" = UIStatusBarStyleDefault;
- "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphonesimulator*]" = UIStatusBarStyleDefault;
- INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
- INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
- IPHONEOS_DEPLOYMENT_TARGET = 16.4;
- LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks";
- "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks";
- LIBRARY_SEARCH_PATHS = /usr/local/lib;
- MACOSX_DEPLOYMENT_TARGET = 13.3;
- MARKETING_VERSION = 1.0;
- PRODUCT_BUNDLE_IDENTIFIER = OneDSSwift.SwiftWrapperApp;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SDKROOT = auto;
- SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx";
- SWIFT_EMIT_LOC_STRINGS = YES;
- SWIFT_VERSION = 5.0;
- TARGETED_DEVICE_FAMILY = "1,2";
- };
- name = Release;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- 2711D25C2A45438A000712BD /* Build configuration list for PBXProject "SwiftWrapperApp" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 2711D26E2A45438C000712BD /* Debug */,
- 2711D26F2A45438C000712BD /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 2711D2702A45438C000712BD /* Build configuration list for PBXNativeTarget "SwiftWrapperApp" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 2711D2712A45438C000712BD /* Debug */,
- 2711D2722A45438C000712BD /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
-/* End XCConfigurationList section */
-
-/* Begin XCSwiftPackageProductDependency section */
- 277E77002A460B83004A3A8F /* OneDSSwift */ = {
- isa = XCSwiftPackageProductDependency;
- productName = OneDSSwift;
- };
- A347441F2A4642300039D419 /* OneDSSwift */ = {
- isa = XCSwiftPackageProductDependency;
- productName = OneDSSwift;
- };
-/* End XCSwiftPackageProductDependency section */
- };
- rootObject = 2711D2592A45438A000712BD /* Project object */;
-}
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 56;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 2711D2652A45438A000712BD /* SwiftWrapperExampleApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2711D2642A45438A000712BD /* SwiftWrapperExampleApp.swift */; };
+ 2711D2672A45438A000712BD /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2711D2662A45438A000712BD /* ContentView.swift */; };
+ 2711D26D2A45438C000712BD /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 2711D26C2A45438C000712BD /* Preview Assets.xcassets */; };
+ A34744202A4642300039D419 /* OneDSSwift in Frameworks */ = {isa = PBXBuildFile; productRef = A347441F2A4642300039D419 /* OneDSSwift */; };
+ A34744242A4643B20039D419 /* libmat.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A34744232A4643B20039D419 /* libmat.a */; };
+ A34744262A4643FE0039D419 /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = A34744252A4643FE0039D419 /* libsqlite3.tbd */; };
+ A34744282A46440F0039D419 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A34744272A46440F0039D419 /* SystemConfiguration.framework */; };
+ A347442A2A46441A0039D419 /* Network.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A34744292A46441A0039D419 /* Network.framework */; };
+ A347442C2A46442C0039D419 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = A347442B2A46442C0039D419 /* libz.tbd */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ 2711D2612A45438A000712BD /* SwiftWrapperApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwiftWrapperApp.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 2711D2642A45438A000712BD /* SwiftWrapperExampleApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftWrapperExampleApp.swift; sourceTree = ""; };
+ 2711D2662A45438A000712BD /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; };
+ 2711D26A2A45438C000712BD /* SwiftWrapperApp.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = SwiftWrapperApp.entitlements; sourceTree = ""; };
+ 2711D26C2A45438C000712BD /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; };
+ 2711D2732A45452E000712BD /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; };
+ 277E76FF2A45FE4D004A3A8F /* swift */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = swift; path = ../../../wrappers/swift; sourceTree = ""; };
+ A34744232A4643B20039D419 /* libmat.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmat.a; path = "$(MATSDK_INSTALL_DIR)/lib/libmat.a"; sourceTree = ""; };
+ A34744252A4643FE0039D419 /* libsqlite3.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.tbd; path = usr/lib/libsqlite3.tbd; sourceTree = SDKROOT; };
+ A34744272A46440F0039D419 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk/System/Library/Frameworks/SystemConfiguration.framework; sourceTree = DEVELOPER_DIR; };
+ A34744292A46441A0039D419 /* Network.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Network.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk/System/Library/Frameworks/Network.framework; sourceTree = DEVELOPER_DIR; };
+ A347442B2A46442C0039D419 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk/usr/lib/libz.tbd; sourceTree = DEVELOPER_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 2711D25E2A45438A000712BD /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ A347442C2A46442C0039D419 /* libz.tbd in Frameworks */,
+ A347442A2A46441A0039D419 /* Network.framework in Frameworks */,
+ A34744282A46440F0039D419 /* SystemConfiguration.framework in Frameworks */,
+ A34744202A4642300039D419 /* OneDSSwift in Frameworks */,
+ A34744242A4643B20039D419 /* libmat.a in Frameworks */,
+ A34744262A4643FE0039D419 /* libsqlite3.tbd in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 2711D2582A45438A000712BD = {
+ isa = PBXGroup;
+ children = (
+ 277E76FE2A45FE4D004A3A8F /* Packages */,
+ 2711D2632A45438A000712BD /* SwiftWrapperApp */,
+ 2711D2622A45438A000712BD /* Products */,
+ A347441E2A4642300039D419 /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ 2711D2622A45438A000712BD /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 2711D2612A45438A000712BD /* SwiftWrapperApp.app */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 2711D2632A45438A000712BD /* SwiftWrapperApp */ = {
+ isa = PBXGroup;
+ children = (
+ 2711D2732A45452E000712BD /* Info.plist */,
+ 2711D2642A45438A000712BD /* SwiftWrapperExampleApp.swift */,
+ 2711D2662A45438A000712BD /* ContentView.swift */,
+ 2711D26A2A45438C000712BD /* SwiftWrapperApp.entitlements */,
+ 2711D26B2A45438C000712BD /* Preview Content */,
+ );
+ path = SwiftWrapperApp;
+ sourceTree = "";
+ };
+ 2711D26B2A45438C000712BD /* Preview Content */ = {
+ isa = PBXGroup;
+ children = (
+ 2711D26C2A45438C000712BD /* Preview Assets.xcassets */,
+ );
+ path = "Preview Content";
+ sourceTree = "";
+ };
+ 277E76FE2A45FE4D004A3A8F /* Packages */ = {
+ isa = PBXGroup;
+ children = (
+ 277E76FF2A45FE4D004A3A8F /* swift */,
+ );
+ name = Packages;
+ sourceTree = "";
+ };
+ A347441E2A4642300039D419 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ A347442B2A46442C0039D419 /* libz.tbd */,
+ A34744292A46441A0039D419 /* Network.framework */,
+ A34744272A46440F0039D419 /* SystemConfiguration.framework */,
+ A34744252A4643FE0039D419 /* libsqlite3.tbd */,
+ A34744232A4643B20039D419 /* libmat.a */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 2711D2602A45438A000712BD /* SwiftWrapperApp */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 2711D2702A45438C000712BD /* Build configuration list for PBXNativeTarget "SwiftWrapperApp" */;
+ buildPhases = (
+ 2711D25D2A45438A000712BD /* Sources */,
+ 2711D25E2A45438A000712BD /* Frameworks */,
+ 2711D25F2A45438A000712BD /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 277E77012A460B83004A3A8F /* PBXTargetDependency */,
+ );
+ name = SwiftWrapperApp;
+ packageProductDependencies = (
+ A347441F2A4642300039D419 /* OneDSSwift */,
+ );
+ productName = SwiftWrapperApp;
+ productReference = 2711D2612A45438A000712BD /* SwiftWrapperApp.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 2711D2592A45438A000712BD /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ BuildIndependentTargetsInParallel = 1;
+ LastSwiftUpdateCheck = 1430;
+ LastUpgradeCheck = 1430;
+ TargetAttributes = {
+ 2711D2602A45438A000712BD = {
+ CreatedOnToolsVersion = 14.3;
+ };
+ };
+ };
+ buildConfigurationList = 2711D25C2A45438A000712BD /* Build configuration list for PBXProject "SwiftWrapperApp" */;
+ compatibilityVersion = "Xcode 14.0";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 2711D2582A45438A000712BD;
+ productRefGroup = 2711D2622A45438A000712BD /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 2711D2602A45438A000712BD /* SwiftWrapperApp */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 2711D25F2A45438A000712BD /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 2711D26D2A45438C000712BD /* Preview Assets.xcassets in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 2711D25D2A45438A000712BD /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 2711D2672A45438A000712BD /* ContentView.swift in Sources */,
+ 2711D2652A45438A000712BD /* SwiftWrapperExampleApp.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ 277E77012A460B83004A3A8F /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ productRef = 277E77002A460B83004A3A8F /* OneDSSwift */;
+ };
+/* End PBXTargetDependency section */
+
+/* Begin XCBuildConfiguration section */
+ 2711D26E2A45438C000712BD /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_INCLUDE_PATHS = "";
+ "SWIFT_INCLUDE_PATHS[arch=*]" = ../../../wrappers/swift/Modules/;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ };
+ name = Debug;
+ };
+ 2711D26F2A45438C000712BD /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_INCLUDE_PATHS = "";
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ };
+ name = Release;
+ };
+ 2711D2712A45438C000712BD /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+ CODE_SIGN_ENTITLEMENTS = SwiftWrapperApp/SwiftWrapperApp.entitlements;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ DEVELOPMENT_ASSET_PATHS = "\"SwiftWrapperApp/Preview Content\"";
+ ENABLE_PREVIEWS = YES;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_FILE = SwiftWrapperApp/Info.plist;
+ "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphoneos*]" = YES;
+ "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphonesimulator*]" = YES;
+ "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphoneos*]" = YES;
+ "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphonesimulator*]" = YES;
+ "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphoneos*]" = YES;
+ "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphonesimulator*]" = YES;
+ "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphoneos*]" = UIStatusBarStyleDefault;
+ "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphonesimulator*]" = UIStatusBarStyleDefault;
+ INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
+ INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
+ IPHONEOS_DEPLOYMENT_TARGET = 16.4;
+ LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks";
+ "LD_RUNPATH_SEARCH_PATHS[arch=*]" = "$(MATSDK_INSTALL_DIR)/lib";
+ LIBRARY_SEARCH_PATHS = "$(MATSDK_INSTALL_DIR)/lib";
+ MATSDK_INSTALL_DIR = /usr/local;
+ "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks";
+ MACOSX_DEPLOYMENT_TARGET = 13.3;
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = OneDSSwift.SwiftWrapperApp;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = auto;
+ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx";
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 2711D2722A45438C000712BD /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+ CODE_SIGN_ENTITLEMENTS = SwiftWrapperApp/SwiftWrapperApp.entitlements;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ DEVELOPMENT_ASSET_PATHS = "\"SwiftWrapperApp/Preview Content\"";
+ ENABLE_PREVIEWS = YES;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_FILE = SwiftWrapperApp/Info.plist;
+ "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphoneos*]" = YES;
+ "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphonesimulator*]" = YES;
+ "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphoneos*]" = YES;
+ "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphonesimulator*]" = YES;
+ "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphoneos*]" = YES;
+ "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphonesimulator*]" = YES;
+ "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphoneos*]" = UIStatusBarStyleDefault;
+ "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphonesimulator*]" = UIStatusBarStyleDefault;
+ INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
+ INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
+ IPHONEOS_DEPLOYMENT_TARGET = 16.4;
+ LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks";
+ "LD_RUNPATH_SEARCH_PATHS[arch=*]" = "$(MATSDK_INSTALL_DIR)/lib";
+ "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks";
+ LIBRARY_SEARCH_PATHS = "$(MATSDK_INSTALL_DIR)/lib";
+ MACOSX_DEPLOYMENT_TARGET = 13.3;
+ MATSDK_INSTALL_DIR = /usr/local;
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = OneDSSwift.SwiftWrapperApp;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = auto;
+ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx";
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 2711D25C2A45438A000712BD /* Build configuration list for PBXProject "SwiftWrapperApp" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 2711D26E2A45438C000712BD /* Debug */,
+ 2711D26F2A45438C000712BD /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 2711D2702A45438C000712BD /* Build configuration list for PBXNativeTarget "SwiftWrapperApp" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 2711D2712A45438C000712BD /* Debug */,
+ 2711D2722A45438C000712BD /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+
+/* Begin XCSwiftPackageProductDependency section */
+ 277E77002A460B83004A3A8F /* OneDSSwift */ = {
+ isa = XCSwiftPackageProductDependency;
+ productName = OneDSSwift;
+ };
+ A347441F2A4642300039D419 /* OneDSSwift */ = {
+ isa = XCSwiftPackageProductDependency;
+ productName = OneDSSwift;
+ };
+/* End XCSwiftPackageProductDependency section */
+ };
+ rootObject = 2711D2592A45438A000712BD /* Project object */;
+}
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index 4ebe7ddb0..15b7832b4 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -1,7 +1,15 @@
# Honor visibility properties for all target types
cmake_policy(SET CMP0063 NEW)
-include_directories( . ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/include/public ${CMAKE_CURRENT_SOURCE_DIR}/include/public ${CMAKE_CURRENT_SOURCE_DIR}/include/mat ${CMAKE_CURRENT_SOURCE_DIR}/pal ${CMAKE_CURRENT_SOURCE_DIR}/utils ${CMAKE_CURRENT_SOURCE_DIR}/modules/exp ${CMAKE_CURRENT_SOURCE_DIR}/modules/dataviewer ${CMAKE_CURRENT_SOURCE_DIR}/modules/privacyguard ${CMAKE_CURRENT_SOURCE_DIR}/modules/liveeventinspector ${CMAKE_CURRENT_SOURCE_DIR}/../third_party/Reachability ${CMAKE_CURRENT_SOURCE_DIR}/modules/cds ${CMAKE_CURRENT_SOURCE_DIR}/modules/signals ${CMAKE_CURRENT_SOURCE_DIR}/modules/sanitizer /usr/local/include )
+# Legacy (non-target) include paths that apply globally within this directory and
+# are used by build.sh / MSBuild / standalone CMake workflows. They do NOT propagate
+# to downstream consumers via find_package() (see target_include_directories below).
+include_directories( . ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/include/public ${CMAKE_CURRENT_SOURCE_DIR}/include/mat ${CMAKE_CURRENT_SOURCE_DIR}/pal ${CMAKE_CURRENT_SOURCE_DIR}/utils ${CMAKE_CURRENT_SOURCE_DIR}/modules/exp ${CMAKE_CURRENT_SOURCE_DIR}/modules/dataviewer ${CMAKE_CURRENT_SOURCE_DIR}/modules/privacyguard ${CMAKE_CURRENT_SOURCE_DIR}/modules/liveeventinspector ${CMAKE_CURRENT_SOURCE_DIR}/../third_party/Reachability ${CMAKE_CURRENT_SOURCE_DIR}/modules/cds ${CMAKE_CURRENT_SOURCE_DIR}/modules/signals ${CMAKE_CURRENT_SOURCE_DIR}/modules/sanitizer )
+
+# Legacy builds may need system-installed deps from /usr/local/include
+if(NOT MATSDK_USE_VCPKG_DEPS)
+ include_directories(/usr/local/include)
+endif()
set(SRCS decorators/BaseDecorator.cpp
packager/BondSplicer.cpp
@@ -60,7 +68,7 @@ if(BUILD_AZMON)
include(modules/azmon/CMakeLists.txt OPTIONAL)
endif()
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/modules/exp/)
+if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/modules/exp/")
list(APPEND SRCS
modules/exp/afd/afdclient/AFDClientUtils.cpp
modules/exp/afd/afdclient/AFDClient.cpp
@@ -74,14 +82,14 @@ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/modules/exp/)
)
endif()
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/modules/dataviewer/)
+if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/modules/dataviewer/")
list(APPEND SRCS
modules/dataviewer/DefaultDataViewer.cpp
modules/dataviewer/OnDisableNotificationCollection.cpp
)
endif()
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/modules/privacyguard/ AND BUILD_PRIVACYGUARD)
+if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/modules/privacyguard/" AND BUILD_PRIVACYGUARD)
list(APPEND SRCS
modules/privacyguard/PrivacyGuard.cpp
modules/privacyguard/RegisteredFileTypes.cpp
@@ -89,14 +97,14 @@ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/modules/privacyguard/ AND BUILD_PRIVACYGUA
)
endif()
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/modules/liveeventinspector/ AND BUILD_LIVEEVENTINSPECTOR)
+if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/modules/liveeventinspector/" AND BUILD_LIVEEVENTINSPECTOR)
list(APPEND SRCS
modules/liveeventinspector/LiveEventInspector.cpp
modules/liveeventinspector/LiveEventInspector.hpp
)
endif()
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/modules/cds/ AND BUILD_CDS)
+if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/modules/cds/" AND BUILD_CDS)
add_definitions(-DHAVE_MAT_CDS)
list(APPEND SRCS
modules/cds/CdsFactory.hpp
@@ -104,14 +112,14 @@ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/modules/cds/ AND BUILD_CDS)
)
endif()
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/modules/signals/ AND BUILD_SIGNALS)
+if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/modules/signals/" AND BUILD_SIGNALS)
list(APPEND SRCS
modules/signals/Signals.cpp
modules/signals/SignalsEncoder.cpp
)
endif()
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/modules/sanitizer/ AND BUILD_SANITIZER)
+if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/modules/sanitizer/" AND BUILD_SANITIZER)
list(APPEND SRCS
modules/sanitizer/detectors/EmailAddressDetector.cpp
modules/sanitizer/detectors/JwtDetector.cpp
@@ -174,14 +182,21 @@ if(PAL_IMPLEMENTATION STREQUAL "CPP11")
../third_party/Reachability/ODWReachability.m
)
else()
- list(APPEND SRCS
- http/HttpClient_Curl.cpp
- http/HttpClient_Curl.hpp
- pal/posix/NetworkInformationImpl.cpp
- )
+ list(APPEND SRCS pal/posix/NetworkInformationImpl.cpp)
+ if(CMAKE_SYSTEM_NAME STREQUAL "Android")
+ list(APPEND SRCS
+ http/HttpClient_Android.cpp
+ http/HttpClient_Android.hpp
+ )
+ else()
+ list(APPEND SRCS
+ http/HttpClient_Curl.cpp
+ http/HttpClient_Curl.hpp
+ )
+ endif()
endif()
if(APPLE AND BUILD_OBJC_WRAPPER)
- message("Include ObjC Wrappers")
+ message(STATUS "Include ObjC Wrappers")
list(APPEND SRCS
../wrappers/obj-c/ODWLogger.mm
../wrappers/obj-c/ODWLogManager.mm
@@ -189,19 +204,19 @@ if(PAL_IMPLEMENTATION STREQUAL "CPP11")
../wrappers/obj-c/ODWLogConfiguration.mm
../wrappers/obj-c/ODWSemanticContext.mm
)
- if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/modules/dataviewer/)
+ if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/modules/dataviewer/")
list(APPEND SRCS
../wrappers/obj-c/ODWDiagnosticDataViewer.mm
)
endif()
- if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/modules/privacyguard/ AND BUILD_PRIVACYGUARD)
+ if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/modules/privacyguard/" AND BUILD_PRIVACYGUARD)
list(APPEND SRCS
../wrappers/obj-c/ODWCommonDataContext.mm
../wrappers/obj-c/ODWPrivacyGuard.mm
../wrappers/obj-c/ODWPrivacyGuardInitConfig.mm
)
endif()
- if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/modules/sanitizer/ AND BUILD_SANITIZER)
+ if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/modules/sanitizer/" AND BUILD_SANITIZER)
list(APPEND SRCS
../wrappers/obj-c/ODWSanitizerInitConfig.mm
../wrappers/obj-c/ODWSanitizer.mm
@@ -210,7 +225,7 @@ if(PAL_IMPLEMENTATION STREQUAL "CPP11")
endif()
if(APPLE AND BUILD_SWIFT_WRAPPER)
- message("Building Swift Wrappers")
+ message(STATUS "Building Swift Wrappers")
# Run swift build for the Swift Wrappers Package
string(TOLOWER ${CMAKE_BUILD_TYPE} LOWER_BUILD_TYPE)
execute_process(
@@ -222,9 +237,9 @@ if(PAL_IMPLEMENTATION STREQUAL "CPP11")
)
if(SWIFT_BUILD_RESULT EQUAL 0)
- message("Swift Wrappers build succeeded!")
+ message(STATUS "Swift Wrappers build succeeded!")
else()
- message(FATAL_ERROR, "Swift build failed with error code: ${SWIFT_BUILD_RESULT}")
+ message(FATAL_ERROR "Swift build failed with error code: ${SWIFT_BUILD_RESULT}")
endif()
endif()
@@ -232,8 +247,10 @@ if(PAL_IMPLEMENTATION STREQUAL "CPP11")
elseif(PAL_IMPLEMENTATION STREQUAL "WIN32")
# Win32 Desktop for now.
# TODO: define a separate PAL for Win10 cmake build
-include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/../zlib ${CMAKE_CURRENT_SOURCE_DIR}/../sqlite)
-add_definitions(-D_UNICODE -DUNICODE -DZLIB_WINAPI -DWIN32 -DMATSDK_PLATFORM_WINDOWS=1 -DMATSDK_SHARED_LIB=1 -D_UTC_SDK -DUSE_BOND -D_WINDOWS -D_USRDLL -DWINVER=_WIN32_WINNT_WIN7)
+if(NOT MATSDK_USE_VCPKG_DEPS)
+ include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/../zlib ${CMAKE_CURRENT_SOURCE_DIR}/../sqlite)
+endif()
+add_definitions(-D_UNICODE -DUNICODE -DWIN32 -DMATSDK_PLATFORM_WINDOWS=1 -DMATSDK_SHARED_LIB=1 -D_UTC_SDK -DUSE_BOND -D_WINDOWS -D_USRDLL -DWINVER=_WIN32_WINNT_WIN7)
remove_definitions(-D_MBCS)
list(APPEND SRCS
http/HttpClient_WinInet.cpp
@@ -247,7 +264,7 @@ remove_definitions(-D_MBCS)
)
# UTC module
- if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/modules/utc)
+ if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/modules/utc")
list(APPEND SRCS
modules/utc/desktop/UtcHelpers.cpp
modules/utc/UtcTelemetrySystem.cpp
@@ -259,7 +276,7 @@ else()
endif()
# Filtering module
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/modules/filter)
+if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/modules/filter")
list(APPEND SRCS
modules/filter/CompliantByDefaultEventFilterModule.cpp
modules/filter/CompliantByDefaultFilterApi.cpp
@@ -269,77 +286,187 @@ endif()
create_source_files_groups_per_folder(${SRCS})
-# MinGW does not require pthread
-if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
+# Linux and Android require pthreads
+if(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android")
find_package(Threads REQUIRED)
- if(THREADS_HAVE_PTHREAD_ARG)
- target_compile_options(mat PUBLIC "-pthread")
- endif()
endif()
+################################################################################################
+# Build the library
+################################################################################################
if(BUILD_SHARED_LIBS STREQUAL "ON")
- message("-- Building shared SDK library")
-
- # include(FindCURL)
- # find_package(CURL REQUIRED)
- # set(CMAKE_REQUIRED_LIBRARIES "${CURL_LIBRARIES}")
-
- # find_package(sqlite3 REQUIRED)
-
+ message(STATUS "Building shared SDK library")
add_library(mat SHARED ${SRCS})
+else()
+ message(STATUS "Building static SDK library")
+ add_library(mat STATIC ${SRCS})
+endif()
- # Add flags for obtaining system UUID via IOKit
- if (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
- set(CMAKE_SHARED_LINKER_FLAGS
- "-framework CoreFoundation -framework IOKit -framework Foundation"
- )
- endif()
-
- #
- # TODO: allow adding "${Tcmalloc_LIBRARIES}" to target_link_libraries for memory leak debugging
- #
- if (BUILD_STATIC_SQLITE STREQUAL "ON")
- # Build dynamic library, but prefer statically linking sqlite3 and zlib
- add_library(sqlite3 STATIC IMPORTED GLOBAL)
- add_library(z STATIC IMPORTED GLOBAL)
- target_link_libraries(mat PRIVATE sqlite3 PUBLIC z ${LIBS} "${CMAKE_THREAD_LIBS_INIT}" "${CMAKE_DL_LIBS}" "${CMAKE_REQUIRED_LIBRARIES}")
- else()
- # Prefer shared libraries for sqlite3 and zlib
- add_library(sqlite3 SHARED IMPORTED GLOBAL)
- add_library(z SHARED IMPORTED GLOBAL)
- target_link_libraries(mat PUBLIC sqlite3 PUBLIC z ${LIBS} "${CMAKE_THREAD_LIBS_INIT}" "${CMAKE_DL_LIBS}" "${CMAKE_REQUIRED_LIBRARIES}")
- endif()
+# Target-based include paths for vcpkg / install workflow.
+# PUBLIC propagates to consumers; PRIVATE is SDK-internal only.
+# BUILD_INTERFACE is used during the SDK build; INSTALL_INTERFACE is used
+# by consumers after cmake --install.
+target_include_directories(mat
+ PUBLIC
+ $
+ $
+ PRIVATE
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/pal
+ ${CMAKE_CURRENT_SOURCE_DIR}/utils
+)
- # target_link_libraries(mat PUBLIC libsqlite3 libcurl.a libz.a libssl.a libcrypto.a "${SQLITE_LIBRARY}" "${CMAKE_THREAD_LIBS_INIT}" "${CMAKE_DL_LIBS}" )
- install(TARGETS mat EXPORT mat LIBRARY DESTINATION ${INSTALL_LIB_DIR})
+################################################################################################
+# Link dependencies
+################################################################################################
+if(MATSDK_USE_VCPKG_DEPS)
+ # vcpkg mode: all deps resolved via find_package() in root CMakeLists.txt
+ target_link_libraries(mat
+ PRIVATE
+ unofficial::sqlite3::sqlite3
+ ZLIB::ZLIB
+ nlohmann_json::nlohmann_json
+ ${LIBS}
+ )
else()
- message("-- Building static SDK library")
- add_library(mat STATIC ${SRCS})
- if(LINK_STATIC_DEPENDS)
- if(PAL_IMPLEMENTATION STREQUAL "WIN32")
- target_link_libraries(mat ${LIBS} "${CMAKE_THREAD_LIBS_INIT}" "${CMAKE_DL_LIBS}" )
+ # Legacy mode: use vendored or system-installed deps
+ if(CMAKE_SYSTEM_NAME STREQUAL "Android")
+ # Android NDK has no system sqlite3 or zlib — build from bundled source.
+ add_library(sqlite3_bundled STATIC "${CMAKE_CURRENT_SOURCE_DIR}/../sqlite/sqlite3.c")
+ target_include_directories(sqlite3_bundled PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/../sqlite")
+ # When -ffast-math is enabled globally, re-enable finite math for sqlite3 (uses INFINITY macro).
+ # Also suppress warnings treated as errors in vendored code.
+ target_compile_options(sqlite3_bundled PRIVATE -fno-finite-math-only -Wno-unused-function)
+
+ # Build zlib from bundled source, excluding Intel SIMD files (crc_folding.c,
+ # fill_window_sse.c, x86.c) that require SSE4.2/PCLMULQDQ and cannot compile
+ # on ARM. simd_stub.c provides the necessary stubs instead.
+ add_library(zlib_bundled STATIC
+ "${CMAKE_CURRENT_SOURCE_DIR}/../zlib/adler32.c"
+ "${CMAKE_CURRENT_SOURCE_DIR}/../zlib/compress.c"
+ "${CMAKE_CURRENT_SOURCE_DIR}/../zlib/crc32.c"
+ "${CMAKE_CURRENT_SOURCE_DIR}/../zlib/deflate.c"
+ "${CMAKE_CURRENT_SOURCE_DIR}/../zlib/gzclose.c"
+ "${CMAKE_CURRENT_SOURCE_DIR}/../zlib/gzlib.c"
+ "${CMAKE_CURRENT_SOURCE_DIR}/../zlib/gzread.c"
+ "${CMAKE_CURRENT_SOURCE_DIR}/../zlib/gzwrite.c"
+ "${CMAKE_CURRENT_SOURCE_DIR}/../zlib/infback.c"
+ "${CMAKE_CURRENT_SOURCE_DIR}/../zlib/inffast.c"
+ "${CMAKE_CURRENT_SOURCE_DIR}/../zlib/inflate.c"
+ "${CMAKE_CURRENT_SOURCE_DIR}/../zlib/inftrees.c"
+ "${CMAKE_CURRENT_SOURCE_DIR}/../zlib/trees.c"
+ "${CMAKE_CURRENT_SOURCE_DIR}/../zlib/uncompr.c"
+ "${CMAKE_CURRENT_SOURCE_DIR}/../zlib/zutil.c"
+ "${CMAKE_CURRENT_SOURCE_DIR}/../zlib/simd_stub.c"
+ )
+ target_include_directories(zlib_bundled PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/../zlib")
+ # Bundled zlib 1.2.11 uses K&R-style function definitions and POSIX functions
+ # (close/read/write) without explicit includes; suppress warnings from
+ # vendored code we don't modify.
+ target_compile_options(zlib_bundled PRIVATE
+ -Wno-strict-prototypes -Wno-deprecated-non-prototype -Wno-implicit-function-declaration)
+
+ target_link_libraries(mat PRIVATE sqlite3_bundled zlib_bundled ${LIBS})
+ elseif(PAL_IMPLEMENTATION STREQUAL "WIN32")
+ # Windows legacy: vendored sqlite/zlib headers are included via
+ # include_directories in the PAL section above; link only ${LIBS}
+ # (e.g. CURL if needed — sqlite/zlib come from .vcxproj references).
+ target_link_libraries(mat PRIVATE ${LIBS})
+ else()
+ # Linux/macOS legacy: link system-installed sqlite3 and zlib
+ if(EXISTS "/usr/local/lib/libsqlite3.a")
+ set(MATSDK_SQLITE3_LIB "/usr/local/lib/libsqlite3.a")
+ elseif(EXISTS "/usr/local/opt/sqlite/lib/libsqlite3.a")
+ set(MATSDK_SQLITE3_LIB "/usr/local/opt/sqlite/lib/libsqlite3.a")
+ elseif(EXISTS "/opt/homebrew/opt/sqlite/lib/libsqlite3.a")
+ set(MATSDK_SQLITE3_LIB "/opt/homebrew/opt/sqlite/lib/libsqlite3.a")
else()
- add_library(sqlite3 STATIC IMPORTED GLOBAL)
- find_library(SQLITE3_STATIC_LIB NAMES libsqlite3.a
- PATHS /usr/local/lib /usr/local/opt/sqlite/lib /opt/homebrew/opt/sqlite/lib
- NO_DEFAULT_PATH)
- if(SQLITE3_STATIC_LIB)
- set_target_properties(sqlite3 PROPERTIES IMPORTED_LOCATION ${SQLITE3_STATIC_LIB})
- endif()
- add_library(z STATIC IMPORTED GLOBAL)
- #
- # TODO: allow adding "${Tcmalloc_LIBRARIES}" to target_link_libraries for memory leak debugging
- #
- target_link_libraries(mat PRIVATE libsqlite3.a PUBLIC libz.a ${LIBS} "${CMAKE_THREAD_LIBS_INIT}" "${CMAKE_DL_LIBS}" )
+ set(MATSDK_SQLITE3_LIB "sqlite3")
endif()
+
+ find_package(ZLIB REQUIRED)
+ target_include_directories(mat PRIVATE ${ZLIB_INCLUDE_DIRS})
+ target_link_libraries(mat PRIVATE ${MATSDK_SQLITE3_LIB} ZLIB::ZLIB ${LIBS})
endif()
- install(TARGETS mat EXPORT mat ARCHIVE DESTINATION ${INSTALL_LIB_DIR})
endif()
-message("-- Library will be installed to ${INSTALL_LIB_DIR}")
+# Platform-specific link dependencies
+if(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android")
+ target_link_libraries(mat PUBLIC "${CMAKE_THREAD_LIBS_INIT}" "${CMAKE_DL_LIBS}")
+ if(THREADS_HAVE_PTHREAD_ARG)
+ target_compile_options(mat PUBLIC "-pthread")
+ endif()
+ if(CMAKE_SYSTEM_NAME STREQUAL "Android")
+ target_link_libraries(mat PUBLIC log)
+ endif()
+elseif(PAL_IMPLEMENTATION STREQUAL "WIN32")
+ target_link_libraries(mat PUBLIC wininet crypt32 ws2_32)
+elseif(APPLE)
+ target_link_libraries(mat PUBLIC
+ "-framework CoreFoundation"
+ "-framework Foundation"
+ "-framework CFNetwork"
+ "-framework Network"
+ "-framework SystemConfiguration"
+ )
+ if(BUILD_IOS OR CMAKE_SYSTEM_NAME STREQUAL "iOS")
+ target_link_libraries(mat PUBLIC "-framework UIKit")
+ else()
+ target_link_libraries(mat PUBLIC "-framework IOKit")
+ endif()
+endif()
-#if(PAL_IMPLEMENTATION STREQUAL "CPP11")
-# #target_link_libraries(mat PUBLIC libcurl.a libz.a libssl.a libcrypto.a "${SQLITE_LIBRARY}" "${CMAKE_THREAD_LIBS_INIT}" "${CMAKE_DL_LIBS}" )
-# #target_link_libraries(mat PUBLIC libsqlite3.a libz.a ${LIBS} "${CMAKE_THREAD_LIBS_INIT}" "${CMAKE_DL_LIBS}" )
-#endif()
+################################################################################################
+# Installation
+################################################################################################
+# The CMake package config / export workflow is used by vcpkg and any CMake-based
+# consumer that does find_package(MSTelemetry). Legacy (non-vcpkg) builds install
+# via install.sh or MSBuild output directories and don't need this.
+if(MATSDK_USE_VCPKG_DEPS)
+ install(TARGETS mat
+ EXPORT MSTelemetryTargets
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ )
+ message(STATUS "Library will be installed to ${CMAKE_INSTALL_LIBDIR}")
+
+ # Generate and install CMake package config files
+ install(EXPORT MSTelemetryTargets
+ FILE MSTelemetryTargets.cmake
+ NAMESPACE MSTelemetry::
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/MSTelemetry
+ )
+
+ configure_package_config_file(
+ "${CMAKE_CURRENT_SOURCE_DIR}/../cmake/MSTelemetryConfig.cmake.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/MSTelemetryConfig.cmake"
+ INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/MSTelemetry
+ )
+
+ if(NOT DEFINED MATSDK_BUILD_VERSION OR MATSDK_BUILD_VERSION STREQUAL "")
+ message(FATAL_ERROR "MATSDK_BUILD_VERSION is not set. Cannot generate package version file.")
+ endif()
+
+ write_basic_package_version_file(
+ "${CMAKE_CURRENT_BINARY_DIR}/MSTelemetryConfigVersion.cmake"
+ VERSION ${MATSDK_BUILD_VERSION}
+ COMPATIBILITY AnyNewerVersion
+ )
+
+ install(FILES
+ "${CMAKE_CURRENT_BINARY_DIR}/MSTelemetryConfig.cmake"
+ "${CMAKE_CURRENT_BINARY_DIR}/MSTelemetryConfigVersion.cmake"
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/MSTelemetry
+ )
+else()
+ # Legacy install: just put the library and headers in standard locations
+ install(TARGETS mat
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ )
+ message(STATUS "Library will be installed to ${CMAKE_INSTALL_LIBDIR}")
+endif()
diff --git a/lib/android_build/app/src/main/cpp/CMakeLists.txt b/lib/android_build/app/src/main/cpp/CMakeLists.txt
index 94c5f4b41..895f9030c 100644
--- a/lib/android_build/app/src/main/cpp/CMakeLists.txt
+++ b/lib/android_build/app/src/main/cpp/CMakeLists.txt
@@ -3,7 +3,7 @@
# Sets the minimum version of CMake required to build the native library.
-cmake_minimum_required(VERSION 3.4.1)
+cmake_minimum_required(VERSION 3.4.1...3.5)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
diff --git a/lib/http/HttpClient_Curl.hpp b/lib/http/HttpClient_Curl.hpp
index 972cc4fec..c7a5bdecb 100644
--- a/lib/http/HttpClient_Curl.hpp
+++ b/lib/http/HttpClient_Curl.hpp
@@ -109,6 +109,7 @@ class CurlHttpOperation {
m_callback(callback),
m_method(method),
m_url(url),
+ m_sslCaInfo(sslCaInfo),
// Local vars
requestHeaders(requestHeaders),
@@ -140,8 +141,8 @@ class CurlHttpOperation {
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, sslVerify ? 1L : 0L);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, sslVerify ? 2L : 0L);
- if (!sslCaInfo.empty()) {
- curl_easy_setopt(curl, CURLOPT_CAINFO, sslCaInfo.c_str());
+ if (!m_sslCaInfo.empty()) {
+ curl_easy_setopt(curl, CURLOPT_CAINFO, m_sslCaInfo.c_str());
}
// HTTP/2 please, fallback to HTTP/1.1 if not supported
curl_easy_setopt(curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
@@ -434,6 +435,7 @@ class CurlHttpOperation {
// Request values
std::string m_method;
std::string m_url;
+ std::string m_sslCaInfo;
const std::map& requestHeaders;
const std::vector& requestBody;
struct curl_slist *m_headersChunk = nullptr;
@@ -534,4 +536,3 @@ class CurlHttpOperation {
#endif // HAVE_MAT_DEFAULT_HTTP_CLIENT
#endif // HTTPCLIENTCURL_HPP
-
diff --git a/lib/include/mat/json.hpp b/lib/include/mat/json.hpp
deleted file mode 100644
index 901c90e2f..000000000
--- a/lib/include/mat/json.hpp
+++ /dev/null
@@ -1,24769 +0,0 @@
-// __ _____ _____ _____
-// __| | __| | | | JSON for Modern C++
-// | | |__ | | | | | | version 3.11.3
-// |_____|_____|_____|_|___| https://github.com/nlohmann/json
-//
-// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann
-// SPDX-License-Identifier: MIT
-
-/****************************************************************************\
- * Note on documentation: The source files contain links to the online *
- * documentation of the public API at https://json.nlohmann.me. This URL *
- * contains the most recent documentation and should also be applicable to *
- * previous versions; documentation for deprecated functions is not *
- * removed, but marked deprecated. See "Generate documentation" section in *
- * file docs/README.md. *
-\****************************************************************************/
-
-#ifndef INCLUDE_NLOHMANN_JSON_HPP_
-#define INCLUDE_NLOHMANN_JSON_HPP_
-
-#ifdef _WIN32
-#undef max
-#undef min
-#endif
-
-#include // all_of, find, for_each
-#include // nullptr_t, ptrdiff_t, size_t
-#include // hash, less
-#include // initializer_list
-#ifndef JSON_NO_IO
-#include // istream, ostream
-#endif // JSON_NO_IO
-#include // random_access_iterator_tag
-#include // unique_ptr
-#include // string, stoi, to_string
-#include // declval, forward, move, pair, swap
-#include // vector
-
-// #include
-// __ _____ _____ _____
-// __| | __| | | | JSON for Modern C++
-// | | |__ | | | | | | version 3.11.3
-// |_____|_____|_____|_|___| https://github.com/nlohmann/json
-//
-// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann
-// SPDX-License-Identifier: MIT
-
-
-
-#include
-
-// #include
-// __ _____ _____ _____
-// __| | __| | | | JSON for Modern C++
-// | | |__ | | | | | | version 3.11.3
-// |_____|_____|_____|_|___| https://github.com/nlohmann/json
-//
-// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann
-// SPDX-License-Identifier: MIT
-
-
-
-// This file contains all macro definitions affecting or depending on the ABI
-
-#ifndef JSON_SKIP_LIBRARY_VERSION_CHECK
-#if defined(NLOHMANN_JSON_VERSION_MAJOR) && defined(NLOHMANN_JSON_VERSION_MINOR) && defined(NLOHMANN_JSON_VERSION_PATCH)
-#if NLOHMANN_JSON_VERSION_MAJOR != 3 || NLOHMANN_JSON_VERSION_MINOR != 11 || NLOHMANN_JSON_VERSION_PATCH != 3
-#warning "Already included a different version of the library!"
-#endif
-#endif
-#endif
-
-#define NLOHMANN_JSON_VERSION_MAJOR 3 // NOLINT(modernize-macro-to-enum)
-#define NLOHMANN_JSON_VERSION_MINOR 11 // NOLINT(modernize-macro-to-enum)
-#define NLOHMANN_JSON_VERSION_PATCH 3 // NOLINT(modernize-macro-to-enum)
-
-#ifndef JSON_DIAGNOSTICS
-#define JSON_DIAGNOSTICS 0
-#endif
-
-#ifndef JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON
-#define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 0
-#endif
-
-#if JSON_DIAGNOSTICS
-#define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS _diag
-#else
-#define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS
-#endif
-
-#if JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON
-#define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON _ldvcmp
-#else
-#define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON
-#endif
-
-#ifndef NLOHMANN_JSON_NAMESPACE_NO_VERSION
-#define NLOHMANN_JSON_NAMESPACE_NO_VERSION 0
-#endif
-
-// Construct the namespace ABI tags component
-#define NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b) json_abi ## a ## b
-#define NLOHMANN_JSON_ABI_TAGS_CONCAT(a, b) \
- NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b)
-
-#define NLOHMANN_JSON_ABI_TAGS \
- NLOHMANN_JSON_ABI_TAGS_CONCAT( \
- NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS, \
- NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON)
-
-// Construct the namespace version component
-#define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch) \
- _v ## major ## _ ## minor ## _ ## patch
-#define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(major, minor, patch) \
- NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch)
-
-#if NLOHMANN_JSON_NAMESPACE_NO_VERSION
-#define NLOHMANN_JSON_NAMESPACE_VERSION
-#else
-#define NLOHMANN_JSON_NAMESPACE_VERSION \
- NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(NLOHMANN_JSON_VERSION_MAJOR, \
- NLOHMANN_JSON_VERSION_MINOR, \
- NLOHMANN_JSON_VERSION_PATCH)
-#endif
-
-// Combine namespace components
-#define NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b) a ## b
-#define NLOHMANN_JSON_NAMESPACE_CONCAT(a, b) \
- NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b)
-
-#ifndef NLOHMANN_JSON_NAMESPACE
-#define NLOHMANN_JSON_NAMESPACE \
- nlohmann::NLOHMANN_JSON_NAMESPACE_CONCAT( \
- NLOHMANN_JSON_ABI_TAGS, \
- NLOHMANN_JSON_NAMESPACE_VERSION)
-#endif
-
-#ifndef NLOHMANN_JSON_NAMESPACE_BEGIN
-#define NLOHMANN_JSON_NAMESPACE_BEGIN \
- namespace nlohmann \
- { \
- inline namespace NLOHMANN_JSON_NAMESPACE_CONCAT( \
- NLOHMANN_JSON_ABI_TAGS, \
- NLOHMANN_JSON_NAMESPACE_VERSION) \
- {
-#endif
-
-#ifndef NLOHMANN_JSON_NAMESPACE_END
-#define NLOHMANN_JSON_NAMESPACE_END \
- } /* namespace (inline namespace) NOLINT(readability/namespace) */ \
- } // namespace nlohmann
-#endif
-
-// #include
-// __ _____ _____ _____
-// __| | __| | | | JSON for Modern C++
-// | | |__ | | | | | | version 3.11.3
-// |_____|_____|_____|_|___| https://github.com/nlohmann/json
-//
-// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann
-// SPDX-License-Identifier: MIT
-
-
-
-#include // transform
-#include // array
-#include // forward_list
-#include // inserter, front_inserter, end
-#include