diff --git a/.pipelines/copy-include-files.yml b/.pipelines/copy-include-files.yml
index cf5235e4d7..dea461d353 100644
--- a/.pipelines/copy-include-files.yml
+++ b/.pipelines/copy-include-files.yml
@@ -7,49 +7,35 @@ steps:
- task: CopyFiles@2
displayName: 'Copy CesiumUtility include files to upack staging directory'
inputs:
- SourceFolder: "CesiumUtility/include/CesiumUtility"
+ SourceFolder: "$(Build.SourcesDirectory)/cesium-native/CesiumUtility/include/CesiumUtility"
Contents: "**"
- TargetFolder: upack-staging/${{ parameters.platform }}/include/CesiumUtility
+ TargetFolder: $(Build.SourcesDirectory)/cesium-native/upack-staging/${{ parameters.platform }}/include/CesiumUtility
- task: CopyFiles@2
displayName: 'Copy CesiumGltf include files to upack staging directory'
inputs:
- SourceFolder: "CesiumGltf/include/CesiumGltf"
+ SourceFolder: "$(Build.SourcesDirectory)/cesium-native/CesiumGltf/include/CesiumGltf"
Contents: "**"
- TargetFolder: upack-staging/${{ parameters.platform }}/include/CesiumGltf
+ TargetFolder: $(Build.SourcesDirectory)/cesium-native/upack-staging/${{ parameters.platform }}/include/CesiumGltf
- task: CopyFiles@2
displayName: 'Copy CesiumGltf generated include files to upack staging directory'
inputs:
- SourceFolder: "CesiumGltf/generated/include/CesiumGltf"
+ SourceFolder: "$(Build.SourcesDirectory)/cesium-native/CesiumGltf/generated/include/CesiumGltf"
Contents: "**"
- TargetFolder: upack-staging/${{ parameters.platform }}/include/CesiumGltf
+ TargetFolder: $(Build.SourcesDirectory)/cesium-native/upack-staging/${{ parameters.platform }}/include/CesiumGltf
- task: CopyFiles@2
displayName: 'Copy CesiumJsonWriter include files to upack staging directory'
inputs:
- SourceFolder: "CesiumJsonWriter/include/CesiumJsonWriter"
+ SourceFolder: "$(Build.SourcesDirectory)/cesium-native/CesiumJsonWriter/include/CesiumJsonWriter"
Contents: "**"
- TargetFolder: upack-staging/${{ parameters.platform }}/include/CesiumJsonWriter
+ TargetFolder: $(Build.SourcesDirectory)/cesium-native/upack-staging/${{ parameters.platform }}/include/CesiumJsonWriter
- task: CopyFiles@2
displayName: 'Copy CesiumGltfWriter include files to upack staging directory'
inputs:
- SourceFolder: "CesiumGltfWriter/include/CesiumGltfWriter"
+ SourceFolder: "$(Build.SourcesDirectory)/cesium-native/CesiumGltfWriter/include/CesiumGltfWriter"
Contents: "**"
- TargetFolder: upack-staging/${{ parameters.platform }}/include/CesiumGltfWriter
-
- - task: CopyFiles@2
- displayName: 'Copy extern/glm include files to upack staging directory'
- inputs:
- SourceFolder: "extern/glm/glm"
- Contents: "**"
- TargetFolder: upack-staging/${{ parameters.platform }}/include/glm
-
- - task: CopyFiles@2
- displayName: 'Copy extern/GSL include files to upack staging directory'
- inputs:
- SourceFolder: "extern/GSL/include/gsl"
- Contents: "**"
- TargetFolder: upack-staging/${{ parameters.platform }}/include/gsl
+ TargetFolder: $(Build.SourcesDirectory)/cesium-native/upack-staging/${{ parameters.platform }}/include/CesiumGltfWriter
diff --git a/.pipelines/release.yml b/.pipelines/release.yml
index 90863c90b4..a3458f74f1 100644
--- a/.pipelines/release.yml
+++ b/.pipelines/release.yml
@@ -12,6 +12,17 @@ parameters:
displayName: Windows build
type: boolean
default: false
+ - name: DryRun
+ displayName: Dry run (only publish to pipeline artifact)
+ type: boolean
+ default: false
+
+resources:
+ repositories:
+ - repository: vcpkg
+ type: github
+ name: microsoft/vcpkg
+ endpoint: github.com_test
jobs:
- job:
@@ -22,6 +33,11 @@ jobs:
demands: "Agent.OS -equals Linux"
steps:
- checkout: self
+ lfs: true
+ submodules: recursive
+ persistCredentials: true
+
+ - checkout: vcpkg
lfs: true
submodules: recursive
persistCredentials: true
@@ -29,48 +45,87 @@ jobs:
- task: ExtractFiles@1
displayName: 'Extract cmake executable'
inputs:
- archiveFilePatterns: "tools/cmake-linux.zip"
- destinationFolder: "tools"
+ archiveFilePatterns: "$(Build.SourcesDirectory)/cesium-native/tools/cmake-linux.zip"
+ destinationFolder: "$(Build.SourcesDirectory)/cesium-native/tools"
cleanDestinationFolder: false
- - script: chmod +x tools/cmake-linux/bin/cmake
+ - script: chmod +x $(Build.SourcesDirectory)/cesium-native/tools/cmake-linux/bin/cmake
displayName: 'chmod +x on cmake executable'
- - script: tools/cmake-linux/bin/cmake -S $(Build.SourcesDirectory) -B $(Build.SourcesDirectory)/out -D CMAKE_C_COMPILER=/usr/lib/llvm-16/bin/clang -D CMAKE_CXX_COMPILER=/usr/lib/llvm-16/bin/clang++
+ - script: $(Build.SourcesDirectory)/cesium-native/tools/cmake-linux/bin/cmake -S $(Build.SourcesDirectory)/cesium-native -B $(Build.SourcesDirectory)/cesium-native/build -D CMAKE_C_COMPILER=/usr/lib/llvm-16/bin/clang -D CMAKE_CXX_COMPILER=/usr/lib/llvm-16/bin/clang++ -DCMAKE_TOOLCHAIN_FILE=$(Build.SourcesDirectory)/vcpkg/scripts/buildsystems/vcpkg.cmake -DCESIUM_USE_EZVCPKG=OFF -DVCPKG_TARGET_TRIPLET=x64-linux -DVCPKG_HOST_TRIPLET=x64-linux
displayName: 'Generate cmake project'
+ env:
+ GIT_LFS_SKIP_SMUDGE: 1
- - script: tools/cmake-linux/bin/cmake --build $(Build.SourcesDirectory)/out --target CesiumGltfWriter --config Release
+ - script: $(Build.SourcesDirectory)/cesium-native/tools/cmake-linux/bin/cmake --build $(Build.SourcesDirectory)/cesium-native/build --target CesiumGltfWriter --config Release
displayName: 'Build CesiumGltfWriter target'
- template: copy-include-files.yml
parameters:
- platform: linux
+ platform: linux
+
+ - task: CopyFiles@2
+ displayName: 'Copy glm files to upack staging directory'
+ inputs:
+ SourceFolder: "$(Build.SourcesDirectory)/cesium-native/build/vcpkg_installed/x64-linux/include/glm"
+ Contents: "**"
+ TargetFolder: $(Build.SourcesDirectory)/cesium-native/upack-staging/linux/include/glm
+
+ - task: CopyFiles@2
+ displayName: 'Copy GSL include files to upack staging directory'
+ inputs:
+ SourceFolder: "$(Build.SourcesDirectory)/cesium-native/build/vcpkg_installed/x64-linux/include/gsl"
+ Contents: "**"
+ TargetFolder: $(Build.SourcesDirectory)/cesium-native/upack-staging/linux/include/gsl
+
+ - task: CopyFiles@2
+ displayName: 'Copy spdlog include files to upack staging directory'
+ inputs:
+ SourceFolder: "$(Build.SourcesDirectory)/cesium-native/build/vcpkg_installed/x64-linux/include/spdlog"
+ Contents: "**"
+ TargetFolder: $(Build.SourcesDirectory)/cesium-native/upack-staging/linux/include/spdlog
+
+ - task: CopyFiles@2
+ displayName: 'Copy fmt include files to upack staging directory'
+ inputs:
+ SourceFolder: "$(Build.SourcesDirectory)/cesium-native/build/vcpkg_installed/x64-linux/include/fmt"
+ Contents: "**"
+ TargetFolder: $(Build.SourcesDirectory)/cesium-native/upack-staging/linux/include/fmt
- task: CopyFiles@2
displayName: 'Copy CesiumGltfWriter lib to upack staging directory'
inputs:
- SourceFolder: "out/CesiumGltfWriter"
+ SourceFolder: "$(Build.SourcesDirectory)/cesium-native/build/CesiumGltfWriter"
Contents: "*.a"
- TargetFolder: upack-staging/linux/lib
+ TargetFolder: $(Build.SourcesDirectory)/cesium-native/upack-staging/linux/lib
- task: CopyFiles@2
displayName: 'Copy CesiumJsonWriter lib to upack staging directory'
inputs:
- SourceFolder: "out/CesiumJsonWriter"
+ SourceFolder: "$(Build.SourcesDirectory)/cesium-native/build/CesiumJsonWriter"
Contents: "*.a"
- TargetFolder: upack-staging/linux/lib
+ TargetFolder: $(Build.SourcesDirectory)/cesium-native/upack-staging/linux/lib
+
+ - task: CopyFiles@2
+ displayName: 'Copy fmt lib to upack staging directory'
+ inputs:
+ SourceFolder: "$(Build.SourcesDirectory)/cesium-native/build/vcpkg_installed/x64-linux/lib"
+ Contents: "libfmt.a"
+ TargetFolder: $(Build.SourcesDirectory)/cesium-native/upack-staging/linux/lib
# Uncomment this task for testing without having to publish to upack feed
- # - task: PublishPipelineArtifact@1
- # inputs:
- # targetPath: 'upack-staging'
- # artifactName: 'cesium-native_x64_linux'
+ - task: PublishPipelineArtifact@1
+ condition: eq('${{parameters.DryRun}}', true)
+ inputs:
+ targetPath: '$(Build.SourcesDirectory)/cesium-native/upack-staging/linux'
+ artifactName: 'cesium-native_x64_linux'
- task: UniversalPackages@0
+ condition: eq('${{parameters.DryRun}}', false)
displayName: 'Publish cesium-native to Universal Package feed'
inputs:
command: "publish"
- publishDirectory: "upack-staging/linux"
+ publishDirectory: "$(Build.SourcesDirectory)/cesium-native/upack-staging/linux"
feedsToUsePublish: "internal"
vstsFeedPublish: "upack"
vstsFeedPackagePublish: "cesium_native_x64_linux"
@@ -83,52 +138,99 @@ jobs:
displayName: Publish cesium-native on Windows
condition: eq('${{parameters.WindowsBuild}}', true)
pool:
- vmImage: "windows-2019"
+ vmImage: "windows-2022"
steps:
- checkout: self
- lfs: true
+ lfs: false
+ submodules: recursive
+ persistCredentials: true
+
+ - checkout: vcpkg
+ lfs: false
submodules: recursive
persistCredentials: true
+ # vcpkg does not allow enviroment variables to propagate on windows, so we reset the lfs settings to skip smudge and avoid lfs download errors which are not critical for us
+ - powershell: |
+ git lfs uninstall
+ git lfs install --skip-smudge
+
- task: CMake@1
displayName: 'Generate cmake project'
inputs:
- cmakeArgs: -S $(Build.SourcesDirectory) -B $(Build.SourcesDirectory)/out -G "Visual Studio 16 2019"
+ cmakeArgs: -S $(Build.SourcesDirectory)/cesium-native -B $(Build.SourcesDirectory)/cesium-native/build -G "Visual Studio 17 2022" -DCMAKE_TOOLCHAIN_FILE=$(Build.SourcesDirectory)/vcpkg/scripts/buildsystems/vcpkg.cmake -DCESIUM_USE_EZVCPKG=OFF -DVCPKG_TARGET_TRIPLET=x64-windows-static-md -DVCPKG_HOST_TRIPLET=x64-windows-static-md
- task: CMake@1
displayName: 'Build CesiumGltfWriter target'
inputs:
- cmakeArgs: --build $(Build.SourcesDirectory)/out --target CesiumGltfWriter --config Release
+ cmakeArgs: --build $(Build.SourcesDirectory)/cesium-native/build --target CesiumGltfWriter --config Release
- template: copy-include-files.yml
parameters:
platform: windows
+ - task: CopyFiles@2
+ displayName: 'Copy glm files to upack staging directory'
+ inputs:
+ SourceFolder: "$(Build.SourcesDirectory)/cesium-native/build/vcpkg_installed/x64-windows-static-md/include/glm"
+ Contents: "**"
+ TargetFolder: $(Build.SourcesDirectory)/cesium-native/upack-staging/windows/include/glm
+
+ - task: CopyFiles@2
+ displayName: 'Copy GSL include files to upack staging directory'
+ inputs:
+ SourceFolder: "$(Build.SourcesDirectory)/cesium-native/build/vcpkg_installed/x64-windows-static-md/include/gsl"
+ Contents: "**"
+ TargetFolder: $(Build.SourcesDirectory)/cesium-native/upack-staging/windows/include/gsl
+
+ - task: CopyFiles@2
+ displayName: 'Copy spdlog include files to upack staging directory'
+ inputs:
+ SourceFolder: "$(Build.SourcesDirectory)/cesium-native/build/vcpkg_installed/x64-windows-static-md/include/spdlog"
+ Contents: "**"
+ TargetFolder: $(Build.SourcesDirectory)/cesium-native/upack-staging/windows/include/spdlog
+
+ - task: CopyFiles@2
+ displayName: 'Copy fmt include files to upack staging directory'
+ inputs:
+ SourceFolder: "$(Build.SourcesDirectory)/cesium-native/build/vcpkg_installed/x64-windows-static-md/include/fmt"
+ Contents: "**"
+ TargetFolder: $(Build.SourcesDirectory)/cesium-native/upack-staging/windows/include/fmt
+
- task: CopyFiles@2
displayName: 'Copy CesiumGltfWriter lib to upack staging directory'
inputs:
- SourceFolder: "out/CesiumGltfWriter/Release"
+ SourceFolder: "$(Build.SourcesDirectory)/cesium-native/build/CesiumGltfWriter/Release"
Contents: "*.lib"
- TargetFolder: upack-staging/windows/lib
+ TargetFolder: $(Build.SourcesDirectory)/cesium-native/upack-staging/windows/lib
- task: CopyFiles@2
- displayName: 'Copy CesiumGltfWriter lib to upack staging directory'
+ displayName: 'Copy CesiumJsonWriter lib to upack staging directory'
inputs:
- SourceFolder: "out/CesiumJsonWriter/Release"
+ SourceFolder: "$(Build.SourcesDirectory)/cesium-native/build/CesiumJsonWriter/Release"
Contents: "*.lib"
- TargetFolder: upack-staging/windows/lib
+ TargetFolder: $(Build.SourcesDirectory)/cesium-native/upack-staging/windows/lib
+
+ - task: CopyFiles@2
+ displayName: 'Copy fmt lib to upack staging directory'
+ inputs:
+ SourceFolder: "$(Build.SourcesDirectory)/cesium-native/build/vcpkg_installed/x64-windows-static-md/lib"
+ Contents: "fmt.lib"
+ TargetFolder: $(Build.SourcesDirectory)/cesium-native/upack-staging/windows/lib
# Uncomment this task for testing without having to publish to upack feed
- # - task: PublishPipelineArtifact@1
- # inputs:
- # targetPath: 'upack-staging'
- # artifactName: 'cesium-native_x64_win'
+ - task: PublishPipelineArtifact@1
+ condition: eq('${{parameters.DryRun}}', true)
+ inputs:
+ targetPath: '$(Build.SourcesDirectory)/cesium-native/upack-staging/windows'
+ artifactName: 'cesium-native_x64_win'
- - task: UniversalPackages@0
+ - task: UniversalPackages@0
+ condition: eq('${{parameters.DryRun}}', false)
displayName: 'Publish cesium-native to Universal Package feed'
inputs:
command: "publish"
- publishDirectory: "upack-staging/windows"
+ publishDirectory: "$(Build.SourcesDirectory)/cesium-native/upack-staging/windows"
feedsToUsePublish: "internal"
vstsFeedPublish: "upack"
vstsFeedPackagePublish: "cesium_native_x64_win"
diff --git a/CMakePresets.json b/CMakePresets.json
new file mode 100644
index 0000000000..e7963704ff
--- /dev/null
+++ b/CMakePresets.json
@@ -0,0 +1,48 @@
+{
+ "version": 3,
+ "configurePresets": [
+ {
+ "name": "vcpkg",
+ "binaryDir": "${sourceDir}/build",
+ "cacheVariables": {
+ "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",
+ "CESIUM_USE_EZVCPKG": "OFF"
+ },
+ "environment": {
+ "CMAKE_POLICY_VERSION_MINIMUM": "3.5",
+ "VCPKG_KEEP_ENV_VARS": "CMAKE_POLICY_VERSION_MINIMUM"
+ }
+ },
+ {
+ "name": "vcpkg-ninja",
+ "generator": "Ninja",
+ "inherits": ["vcpkg"]
+ },
+ {
+ "name": "vcpkg-ninja-multi",
+ "generator": "Ninja Multi-Config",
+ "inherits": ["vcpkg"]
+ },
+ {
+ "name": "vcpkg-linux",
+ "inherits": ["vcpkg"],
+ "cacheVariables": {
+ "VCPKG_TARGET_TRIPLET": "x64-linux",
+ "VCPKG_HOST_TRIPLET": "x64-linux"
+ }
+ },
+ {
+ "name": "vcpkg-windows",
+ "inherits": ["vcpkg"],
+ "cacheVariables": {
+ "VCPKG_TARGET_TRIPLET": "x64-windows-static-md",
+ "VCPKG_HOST_TRIPLET": "x64-windows-static-md"
+ }
+ },
+ {
+ "name": "vcpkg-windows-vs",
+ "inherits": ["vcpkg-windows"],
+ "generator": "Visual Studio 17 2022"
+ }
+ ]
+}
diff --git a/upack-staging/linux/cesium_native.PartFile.xml b/upack-staging/linux/cesium_native.PartFile.xml
index b00a50819e..f6671511ef 100644
--- a/upack-staging/linux/cesium_native.PartFile.xml
+++ b/upack-staging/linux/cesium_native.PartFile.xml
@@ -9,8 +9,11 @@
+
+
Delivery/$(stlibprefix)CesiumGltfWriter$(stlibext)
Delivery/$(stlibprefix)CesiumJsonWriter$(stlibext)
+ Delivery/$(stlibprefix)fmt$(stlibext)
diff --git a/upack-staging/linux/cesium_native.mke b/upack-staging/linux/cesium_native.mke
index d5e8efcbfb..08edbebc9d 100644
--- a/upack-staging/linux/cesium_native.mke
+++ b/upack-staging/linux/cesium_native.mke
@@ -34,5 +34,12 @@ always:
~linkmultifiles "$(CesiumVendorApi)glm/gtx=$(include)/glm/gtx/*.inl"
~linkmultifiles "$(CesiumVendorApi)glm/simd=$(include)/glm/simd/*.h"
~linkmultifiles "$(CesiumVendorApi)gsl=$(include)/gsl/*"
+ ~linkmultifiles "$(CesiumVendorApi)spdlog=$(include)/spdlog/*"
+ ~linkmultifiles "$(CesiumVendorApi)spdlog/fmt=$(include)/spdlog/fmt/*"
+ ~linkmultifiles "$(CesiumVendorApi)spdlog/cfg=$(include)/spdlog/cfg/*"
+ ~linkmultifiles "$(CesiumVendorApi)spdlog/details=$(include)/spdlog/details/*"
+ ~linkmultifiles "$(CesiumVendorApi)spdlog/sinks=$(include)/spdlog/sinks/*"
+ ~linkmultifiles "$(CesiumVendorApi)fmt=$(include)/fmt/*"
~linkfile "$(ContextDeliveryDir)$(stlibprefix)CesiumGltfWriter$(stlibext)=$(lib)/$(stlibprefix)CesiumGltfWriter$(stlibext)"
~linkfile "$(ContextDeliveryDir)$(stlibprefix)CesiumJsonWriter$(stlibext)=$(lib)/$(stlibprefix)CesiumJsonWriter$(stlibext)"
+ ~linkfile "$(ContextDeliveryDir)$(stlibprefix)fmt$(stlibext)=$(lib)/$(stlibprefix)fmt$(stlibext)"
diff --git a/upack-staging/windows/cesium_native.PartFile.xml b/upack-staging/windows/cesium_native.PartFile.xml
index 135085f4a7..25173967c1 100644
--- a/upack-staging/windows/cesium_native.PartFile.xml
+++ b/upack-staging/windows/cesium_native.PartFile.xml
@@ -9,8 +9,11 @@
+
+
Delivery/$(stlibprefix)CesiumGltfWriter$(stlibext)
Delivery/$(stlibprefix)CesiumJsonWriter$(stlibext)
+ Delivery/$(stlibprefix)fmt$(stlibext)
diff --git a/upack-staging/windows/cesium_native.mke b/upack-staging/windows/cesium_native.mke
index d5e8efcbfb..08edbebc9d 100644
--- a/upack-staging/windows/cesium_native.mke
+++ b/upack-staging/windows/cesium_native.mke
@@ -34,5 +34,12 @@ always:
~linkmultifiles "$(CesiumVendorApi)glm/gtx=$(include)/glm/gtx/*.inl"
~linkmultifiles "$(CesiumVendorApi)glm/simd=$(include)/glm/simd/*.h"
~linkmultifiles "$(CesiumVendorApi)gsl=$(include)/gsl/*"
+ ~linkmultifiles "$(CesiumVendorApi)spdlog=$(include)/spdlog/*"
+ ~linkmultifiles "$(CesiumVendorApi)spdlog/fmt=$(include)/spdlog/fmt/*"
+ ~linkmultifiles "$(CesiumVendorApi)spdlog/cfg=$(include)/spdlog/cfg/*"
+ ~linkmultifiles "$(CesiumVendorApi)spdlog/details=$(include)/spdlog/details/*"
+ ~linkmultifiles "$(CesiumVendorApi)spdlog/sinks=$(include)/spdlog/sinks/*"
+ ~linkmultifiles "$(CesiumVendorApi)fmt=$(include)/fmt/*"
~linkfile "$(ContextDeliveryDir)$(stlibprefix)CesiumGltfWriter$(stlibext)=$(lib)/$(stlibprefix)CesiumGltfWriter$(stlibext)"
~linkfile "$(ContextDeliveryDir)$(stlibprefix)CesiumJsonWriter$(stlibext)=$(lib)/$(stlibprefix)CesiumJsonWriter$(stlibext)"
+ ~linkfile "$(ContextDeliveryDir)$(stlibprefix)fmt$(stlibext)=$(lib)/$(stlibprefix)fmt$(stlibext)"