Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
3be84bd
Add CLI tools support and update build scripts for packaging and testing
MaxRev-Dev Jan 28, 2026
8d83c61
Enhance CLI project files with runtime package references and RPath a…
MaxRev-Dev Jan 28, 2026
a7f0238
Update RPath handling in CLI tools and adjust project file generation…
MaxRev-Dev Jan 28, 2026
e34f0d1
Add RestoreSources property to CLI project templates for nuget path
MaxRev-Dev Jan 28, 2026
8201157
Fix RPath handling in CLI test makefiles for macOS, Linux, and Windows
MaxRev-Dev Jan 28, 2026
a96d2b9
Refactor CLI test makefile to use pushd for directory navigation and …
MaxRev-Dev Jan 29, 2026
db8c6a4
Fixing build issues
MaxRev-Dev Jan 29, 2026
e3e2721
Fixing build issues
MaxRev-Dev Jan 29, 2026
83dca2f
Fixing build issues
MaxRev-Dev Jan 29, 2026
b977fc6
Fixing build issues
MaxRev-Dev Jan 29, 2026
daafde9
Fixing build issues
MaxRev-Dev Jan 31, 2026
3229da1
Fixing build issues
MaxRev-Dev Jan 31, 2026
171a961
Fixing build issues
MaxRev-Dev Jan 31, 2026
9b06d69
Fixing build issues on MacOS
MaxRev-Dev Feb 4, 2026
9115c96
Enhance CLI testing framework and build scripts for improved package …
MaxRev-Dev Feb 4, 2026
7e2047e
Add missing scripts
MaxRev-Dev Feb 5, 2026
e3482f2
Bump dotnet in test. Disable terminal logger in CI
MaxRev-Dev Feb 5, 2026
a07ee5a
Update project references and CLI test directory in makefile
MaxRev-Dev Feb 5, 2026
3890d92
Cleanup
MaxRev-Dev Feb 5, 2026
39af5cd
Fix naming
MaxRev-Dev Feb 5, 2026
7ab3630
Debugging paths
MaxRev-Dev Feb 5, 2026
ce473ab
Debugging paths
MaxRev-Dev Feb 5, 2026
a4a5cc2
Debugging paths
MaxRev-Dev Feb 5, 2026
bc446d9
Debugging paths
MaxRev-Dev Feb 6, 2026
2aa6e53
Debugging paths
MaxRev-Dev Feb 6, 2026
fce9140
Cleanup
MaxRev-Dev Feb 6, 2026
de0dc47
One more check
MaxRev-Dev Feb 6, 2026
bf7b0e2
Update docs. Ensure single initialization. Test cleanup.
MaxRev-Dev Feb 6, 2026
793c3da
Update doc [no ci]
MaxRev-Dev Feb 6, 2026
b553d55
Debugging CI output
MaxRev-Dev Feb 6, 2026
f3330d8
Filter out non-executables
MaxRev-Dev Feb 7, 2026
4bc43ab
Add supporters [no ci]
MaxRev-Dev Feb 10, 2026
5b2c7c5
Update readme [no ci]
MaxRev-Dev Feb 10, 2026
006a5b4
Update readme [no ci]
MaxRev-Dev Feb 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ utf8-data/**
!compile/*.*
package-build/
shared/bundle/targets/
!shared/msbuild/**/*.cs

# Created by https://www.toptal.com/developers/gitignore/api/macos,linux,visualstudio,visualstudiocode,windows
# Edit at https://www.toptal.com/developers/gitignore?templates=macos,linux,visualstudio,visualstudiocode,windows

Expand Down
87 changes: 81 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,29 +7,26 @@ Provides a minimal setup without requirements to install heavy [GDAL binaries](h

## Packages (NuGet)

#### C# Bindings and runtime libraries:
[MaxRev.Gdal.Universal](https://www.nuget.org/packages/MaxRev.Gdal.Universal/)
![NuGet Version](https://img.shields.io/nuget/v/MaxRev.Gdal.Universal)
![NuGet Downloads](https://img.shields.io/nuget/dt/MaxRev.Gdal.Universal) <br>

[MaxRev.Gdal.Core](https://www.nuget.org/packages/MaxRev.Gdal.Core/)
![NuGet Version](https://img.shields.io/nuget/v/MaxRev.Gdal.Core)
![NuGet Downloads](https://img.shields.io/nuget/dt/MaxRev.Gdal.Core) <br>

[MaxRev.Gdal.WindowsRuntime.Minimal](https://www.nuget.org/packages/MaxRev.Gdal.WindowsRuntime.Minimal/)
![NuGet Version](https://img.shields.io/nuget/v/MaxRev.Gdal.WindowsRuntime.Minimal)
![NuGet Downloads](https://img.shields.io/nuget/dt/MaxRev.Gdal.WindowsRuntime.Minimal) <br>

[MaxRev.Gdal.LinuxRuntime.Minimal](https://www.nuget.org/packages/MaxRev.Gdal.LinuxRuntime.Minimal/)
![NuGet Version](https://img.shields.io/nuget/v/MaxRev.Gdal.LinuxRuntime.Minimal)
![NuGet Downloads](https://img.shields.io/nuget/dt/MaxRev.Gdal.LinuxRuntime.Minimal) <br>
- [MaxRev.Gdal.LinuxRuntime.Minimal.x64](https://www.nuget.org/packages/MaxRev.Gdal.LinuxRuntime.Minimal.x64/)
- [MaxRev.Gdal.LinuxRuntime.Minimal.x64](https://www.nuget.org/packages/MaxRev.Gdal.LinuxRuntime.Minimal.x64/)
![NuGet Version](https://img.shields.io/nuget/v/MaxRev.Gdal.LinuxRuntime.Minimal.x64)
![NuGet Downloads](https://img.shields.io/nuget/dt/MaxRev.Gdal.LinuxRuntime.Minimal.x64) <br>
- [MaxRev.Gdal.LinuxRuntime.Minimal.arm64](https://www.nuget.org/packages/MaxRev.Gdal.LinuxRuntime.Minimal.arm64/)
![NuGet Version](https://img.shields.io/nuget/v/MaxRev.Gdal.LinuxRuntime.Minimal.arm64)
![NuGet Downloads](https://img.shields.io/nuget/dt/MaxRev.Gdal.LinuxRuntime.Minimal.arm64) <br>


[MaxRev.Gdal.MacosRuntime.Minimal](https://www.nuget.org/packages/MaxRev.Gdal.MacosRuntime.Minimal/)
![NuGet Version](https://img.shields.io/nuget/v/MaxRev.Gdal.MacosRuntime.Minimal)
![NuGet Downloads](https://img.shields.io/nuget/dt/MaxRev.Gdal.MacosRuntime.Minimal) <br>
Expand All @@ -40,6 +37,24 @@ Provides a minimal setup without requirements to install heavy [GDAL binaries](h
![NuGet Version](https://img.shields.io/nuget/v/MaxRev.Gdal.MacosRuntime.Minimal.arm64)
![NuGet Downloads](https://img.shields.io/nuget/dt/MaxRev.Gdal.MacosRuntime.Minimal.arm64)

**CLI Tools** - GDAL command-line utilities (gdalinfo, ogr2ogr, gdal_translate, etc.)

[MaxRev.Gdal.CLI.win-x64](https://www.nuget.org/packages/MaxRev.Gdal.CLI.win-x64/)
![NuGet Version](https://img.shields.io/nuget/v/MaxRev.Gdal.CLI.win-x64)
![NuGet Downloads](https://img.shields.io/nuget/dt/MaxRev.Gdal.CLI.win-x64) <br>
[MaxRev.Gdal.CLI.linux-x64](https://www.nuget.org/packages/MaxRev.Gdal.CLI.linux-x64/)
![NuGet Version](https://img.shields.io/nuget/v/MaxRev.Gdal.CLI.linux-x64)
![NuGet Downloads](https://img.shields.io/nuget/dt/MaxRev.Gdal.CLI.linux-x64) <br>
[MaxRev.Gdal.CLI.linux-arm64](https://www.nuget.org/packages/MaxRev.Gdal.CLI.linux-arm64/)
![NuGet Version](https://img.shields.io/nuget/v/MaxRev.Gdal.CLI.linux-arm64)
![NuGet Downloads](https://img.shields.io/nuget/dt/MaxRev.Gdal.CLI.linux-arm64) <br>
[MaxRev.Gdal.CLI.osx-x64](https://www.nuget.org/packages/MaxRev.Gdal.CLI.osx-x64/)
![NuGet Version](https://img.shields.io/nuget/v/MaxRev.Gdal.CLI.osx-x64)
![NuGet Downloads](https://img.shields.io/nuget/dt/MaxRev.Gdal.CLI.osx-x64) <br>
[MaxRev.Gdal.CLI.osx-arm64](https://www.nuget.org/packages/MaxRev.Gdal.CLI.osx-arm64/)
![NuGet Version](https://img.shields.io/nuget/v/MaxRev.Gdal.CLI.osx-arm64)
![NuGet Downloads](https://img.shields.io/nuget/dt/MaxRev.Gdal.CLI.osx-arm64)

## Table Of Contents

<details>
Expand All @@ -55,6 +70,7 @@ Provides a minimal setup without requirements to install heavy [GDAL binaries](h
+ [Universal package](#universal-package)
+ [Separate core and runtime packages](#separate-core-and-runtime-packages)
+ [Initialize libraries in runtime](#initialize-libraries-in-runtime)
+ [CLI Tools packages](#cli-tools-packages)
* [Supported runtimes](#supported-runtimes)
* [**Using GDAL functions**](#using-gdal-functions)
* [**Development**](#development)
Expand Down Expand Up @@ -140,6 +156,61 @@ GdalBase.ConfigureAll();
```
4. Profit! Use it in ordinary flow. See the section below for more info.

### CLI Tools packages

The CLI packages provide GDAL command-line utilities (`gdalinfo`, `ogr2ogr`, `gdal_translate`, etc.) that can be invoked from your .NET application. Each CLI package automatically references the corresponding runtime package. You don't have to install the runtime package separately if you are using the CLI package - it includes a package reference to the runtime nugets.

1. Install the CLI package for your target platform along with the runtime:
```shell
# Windows
dotnet add package MaxRev.Gdal.CLI.win-x64

# Linux
dotnet add package MaxRev.Gdal.CLI.linux-x64
dotnet add package MaxRev.Gdal.CLI.linux-arm64

# macOS
dotnet add package MaxRev.Gdal.CLI.osx-x64
dotnet add package MaxRev.Gdal.CLI.osx-arm64
```

2. Use the `GdalCli` helper class (automatically included via the package):
```csharp
using MaxRev.Gdal.CLI;

// GdalCli.Run calls EnsureEnvironment() automatically on module load.
// OPTIONAL - You can also call it explicitly if needed:
// GdalCli.EnsureEnvironment();

// Run a GDAL tool and capture output
var exitCode = GdalCli.Run("gdalinfo", new[] { "--version" },
stdout: Console.Write,
stderr: Console.Error.Write);

// Run with file arguments
var result = GdalCli.Run("ogr2ogr",
new[] { "-f", "GeoJSON", "output.geojson", "input.shp" });

// Get the path to a GDAL tool
var toolPath = GdalCli.GetToolPath("gdalinfo");
```

See [tests/MaxRev.Gdal.Core.Tests.CLI](tests/MaxRev.Gdal.Core.Tests.CLI/) for more examples.

#### How it works

The CLI package includes two source files (`GdalCli` helper and `PathInitializer`) that are compiled directly into your project via `buildTransitive` targets. There is no extra assembly dependency - these become part of your application.

On startup, a `[ModuleInitializer]` automatically configures the process environment so the native GDAL tools can locate their shared libraries:
- **Windows**: prepends the native runtime directory to `PATH`
- **Linux**: prepends to `LD_LIBRARY_PATH`
- **macOS**: prepends to `DYLD_LIBRARY_PATH`
- **All platforms**: sets `GDAL_DATA` and `PROJ_LIB` to the bundled data directories

When you call `GdalCli.Run(...)`, it spawns the tool as a child process which inherits these environment variables. The initialization is idempotent - `GdalCli.EnsureEnvironment()` can be called explicitly but will only run once.

You can disable the automatic source inclusion by setting `MaxRevGdalCliEnablePathInitializer` to `false` in your project file if you want to manage environment setup yourself.

## Supported runtimes
- Windows x64 (.NET Framework 4.6.1+, .NET Standard 2.0+, .NET 6/7/8+)
- Linux x64/arm64 (.NET Framework 4.6.1+, .NET Standard 2.0+, .NET 6/7/8+)
Expand Down Expand Up @@ -256,4 +327,8 @@ Enjoy!

## Acknowledgements

As the maintainer of this repository, I want to express my heartfelt thanks to [Verge Agriculture Inc.](https://vergeag.com/). They generously provided the necessary resources that made compiling the **macOS** bindings and the latest versions of GDAL possible.
As the maintainer of this repository, I would like to express my heartfelt thanks to everyone who has supported the development, especially:

[<img height="50" alt="Verge Agriculture Inc." src="https://github.com/user-attachments/assets/c5fe571e-b920-48c5-af31-840b9cc48c4a" />](https://vergeag.com/)
&nbsp;&nbsp;&nbsp;
[<img height="50" alt="StatMap Ltd" src="https://github.com/user-attachments/assets/85701812-9f7b-46f7-849b-11d1edcc2bf8" />](https://www.evo.statmap.co.uk/)
4 changes: 3 additions & 1 deletion ci/Dockerfile.unix.test
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Runs tests from GDAL.NETCORE on Linux
ARG DOTNET_VERSION=9.0
ARG DOTNET_VERSION=10.0
FROM mcr.microsoft.com/dotnet/sdk:$DOTNET_VERSION as base
RUN apt-get update && apt-get install -y \
build-essential
Expand All @@ -26,6 +26,8 @@ RUN if [ $BUILDPLATFORM = "linux/arm64" ]; \
fi

RUN echo "DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1" >> /tmp/gdal-netcore-env;
RUN echo "DOTNET_SYSTEM_CONSOLE_ALLOW_ANSI_COLOR_REDIRECTION=1" >> /tmp/gdal-netcore-env;
RUN echo "TERM=xterm" >> /tmp/gdal-netcore-env;

WORKDIR /build/unix

Expand Down
43 changes: 41 additions & 2 deletions osx/collect-deps-makefile
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ BUILD_BASE_LIB=$(GDAL_BUILD)/lib
SHELL=/bin/bash
BINDINGS_SOURCE=$(BUILD_ROOT)/gdal-cmake-temp/swig/csharp

# codesining requires paid certificate, so we will use ad-hoc signing to avoid issues with macOS Gatekeeper
CODESIGN_IDENTITY?=-

# output helper
define \n

Expand All @@ -18,6 +21,7 @@ endef
all: build

OUTPUT = $(PACKAGE_BUILD_ROOT)/runtimes/$(RID)/native
TOOLS_OUTPUT = $(PACKAGE_BUILD_ROOT)/tools/$(RID)
BUILD_BASE = $(BASE)/bindings
WRAP_TARGETS = $(wildcard $(BINDINGS_SOURCE)/lib*.dylib)

Expand All @@ -34,7 +38,7 @@ build: linkall
@echo "Bindings and drivers are ready to packaging!"
$(MAKE) -f gdal-makefile formats-output

linkall: initdirs copy-projdb collect-bindings copy-deps
linkall: initdirs copy-projdb collect-bindings copy-deps copy-tools
@echo "Libraries patched successfully"

clean:
Expand All @@ -48,6 +52,8 @@ initdirs:
rm -rvf $(OUTPUT)/*.*
mkdir -p $(OUTPUT)
mkdir -p $(NUGET_)
rm -rvf $(TOOLS_OUTPUT)/*
mkdir -p $(TOOLS_OUTPUT)

collect-bindings:
# copy generatated c# sources to project directory
Expand All @@ -65,14 +71,47 @@ copy-deps:
# 2. get deps inlcuding PROJ and LD_LIBRARY_PATH
# 3. copy to output
cp -rfL $(BINDINGS_SOURCE)/*.dylib $(OUTPUT)/
@{ \
gdal_lib=$$(ls "$(OUTPUT)"/libgdal.*.dylib 2>/dev/null | head -n 1); \
if [ -n "$$gdal_lib" ]; then \
gdal_base=$$(basename "$$gdal_lib"); \
gdal_major=$$(echo "$$gdal_base" | sed -E 's/^libgdal\.([0-9]+).*/\1/'); \
if [ -n "$$gdal_major" ]; then \
ln -sf "$$gdal_base" "$(OUTPUT)/libgdal.$$gdal_major.dylib"; \
fi; \
fi; \
};

dylibbundler -b \
$(addprefix -x , $(addprefix $(OUTPUT)/,$(notdir $(WRAP_TARGETS)))) \
-s ${VCPKG_INSTALLED_DYNAMIC}/lib \
-s $(GDAL_BUILD)/lib \
-s $(BUILD_BASE_LIB) \
-s $(PROJ_BUILD)/lib \
-s $(HDF_BUILD)/lib \
-of \
-cd -d $(OUTPUT)/ -p "@loader_path/"
@echo "Removing duplicate RPATH entries..."
@for lib in $(OUTPUT)/*.dylib; do \
if [ -f "$$lib" ]; then \
rpaths=$$(otool -l "$$lib" | grep -A 2 "cmd LC_RPATH" | grep "path " | awk '{print $$2}' | sort | uniq -d); \
for rpath in $$rpaths; do \
echo "Removing duplicate RPATH $$rpath from $$(basename $$lib)"; \
install_name_tool -delete_rpath "$$rpath" "$$lib" 2>/dev/null || true; \
done; \
codesign --remove-signature "$$lib" 2>/dev/null || true; \
codesign --force --sign "$(CODESIGN_IDENTITY)" "$$lib" 2>/dev/null || true; \
fi; \
done
find $(BUILD_BASE_LIB) -maxdepth 1 -type l -name "libgdal.*.dylib" -exec cp -P {} $(OUTPUT)/ \;

copy-tools:
cp -rfL $(GDAL_BUILD)/bin/* $(TOOLS_OUTPUT)/
@for tool in $(TOOLS_OUTPUT)/*; do \
if [ -f "$$tool" ]; then \
codesign --remove-signature "$$tool" 2>/dev/null || true; \
codesign --force --sign "$(CODESIGN_IDENTITY)" "$$tool" 2>/dev/null || true; \
fi; \
done

copy-projdb:
-mkdir -p $(LIBSHARED)
Expand Down
6 changes: 6 additions & 0 deletions osx/gdal-makefile
Original file line number Diff line number Diff line change
Expand Up @@ -97,13 +97,16 @@ check_hdf_sources:
configure_hdf:
@echo "$(TO) HDF Configuring..."

@if [[ -d "$(BUILD_ROOT)/hdf-cmake-temp" ]]; then rm "$(BUILD_ROOT)/hdf-cmake-temp/CMakeCache.txt"; fi;
@if [[ -d "$(BUILD_ROOT)/hdf-build" ]]; then rm -r "$(BUILD_ROOT)/hdf-build"; fi;

-mkdir -p $(HDF_CMAKE_TMP)
@cd $(HDF_CMAKE_TMP) && cmake $(HDF_SOURCE) \
-DCMAKE_INSTALL_PREFIX=$(BUILD_ROOT)/hdf-build -Wno-dev \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_FLAGS="-fPIC -w" \
-DZLIB_INCLUDE_DIR=$(VCPKG_INSTALLED_DYNAMIC)/include \
-DZLIB_LIBRARY_RELEASE=$(VCPKG_INSTALLED_DYNAMIC)/lib/libz.dylib \
-DCMAKE_PREFIX_PATH=$(VCPKG_INSTALLED_DYNAMIC) \
-DCMAKE_OSX_DEPLOYMENT_TARGET=$(OSX_DEPLOYMENT_TARGET) || exit 1

Expand All @@ -120,6 +123,7 @@ configure_gdal:
@cd $(GDAL_ROOT) && \
git apply "$(ROOTDIR_)/shared/patch/CMakeLists.txt.patch" || exit 1

@if [[ -d "$(BUILD_ROOT)/gdal-cmake-temp" ]]; then rm "$(BUILD_ROOT)/gdal-cmake-temp/CMakeCache.txt"; fi;
@if [[ -d "$(BUILD_ROOT)/gdal-build" ]]; then rm -r "$(BUILD_ROOT)/gdal-build"; fi;
@if [[ -d "$(GDAL_ROOT)/autotest" ]]; then rm -r "$(GDAL_ROOT)/autotest"; fi;

Expand Down Expand Up @@ -162,6 +166,8 @@ configure_gdal:

configure_proj:
@echo "$(TO) PROJ Configuring..."

@if [[ -d "$(BUILD_ROOT)/proj-cmake-temp" ]]; then rm "$(BUILD_ROOT)/proj-cmake-temp/CMakeCache.txt"; fi;
@if [[ -d "$(BUILD_ROOT)/proj-build" ]]; then rm -r "$(BUILD_ROOT)/proj-build"; fi;
@if [[ -d "$(PROJ_ROOT)/test" ]]; then rm -r "$(PROJ_ROOT)/test"; fi;
-mkdir -p $(PROJ_CMAKE_TMP)
Expand Down
21 changes: 20 additions & 1 deletion osx/test-makefile
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ CMD_TYPE=dotnet run
endif

MISSING_PACKAGES=MaxRev.Gdal.LinuxRuntime.Minimal MaxRev.Gdal.WindowsRuntime.Minimal MaxRev.Gdal.Universal
CLI_TEST_DIR=$(ROOTDIR_)/tests/MaxRev.Gdal.Core.Tests.CLI
CLI_RID=osx-$(BUILD_ARCH)

any: test

Expand Down Expand Up @@ -38,5 +40,22 @@ test-only: test-restore
cd $(TEST_TARGET) && \
$(CMD_TYPE) --no-restore $(TEST_DIR)/*.csproj

test: test-restore test-update test-only
test-cli:
rm -rf $(CLI_TEST_DIR)/bin $(CLI_TEST_DIR)/obj
cd $(CLI_TEST_DIR) && \
dotnet add package MaxRev.Gdal.CLI.$(CLI_RID) -v "$(GDAL_VERSION).$(PACKAGE_BUILD_NUMBER_OSX)" -s $(NUGET_) --no-restore
cd $(CLI_TEST_DIR) && \
dotnet add package MaxRev.Gdal.MacosRuntime.Minimal.$(BUILD_ARCH) -v "$(GDAL_VERSION).$(PACKAGE_BUILD_NUMBER_OSX)" -s $(NUGET_) --no-restore
cd $(CLI_TEST_DIR) && \
dotnet add package MaxRev.Gdal.Core -v "$(GDAL_VERSION).$(PACKAGE_BUILD_NUMBER_OSX)" -s $(NUGET_) --no-restore
cd $(CLI_TEST_DIR) && \
dotnet restore --ignore-failed-sources -s $(NUGET_)
cd $(CLI_TEST_DIR) && \
dotnet build -c Release --no-restore
cd $(CLI_TEST_DIR) && \
dotnet run -c Release --no-build

test-cli-run: test-cli

test: test-restore test-update test-only test-cli
@exit 0
10 changes: 9 additions & 1 deletion shared/GdalCore.opt
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,9 @@ RUNTIME_PROJECT_WIN=$(ROOTDIR_)/shared/templates/gdalcore.windowsruntime.csproj.
RUNTIME_PROJECT_BUNDLE=$(ROOTDIR_)/shared/templates/gdalcore.bundle.csproj.in
RUNTIME_PROJECT_BUNDLE_UNIX=$(ROOTDIR_)/shared/templates/gdalcore.linuxruntime.bundle.csproj.in
RUNTIME_PROJECT_BUNDLE_OSX=$(ROOTDIR_)/shared/templates/gdalcore.macosruntime.bundle.csproj.in
TOOLS_PROJECT_UNIX=$(ROOTDIR_)/shared/templates/gdalcore.cli.unix.csproj.in
TOOLS_PROJECT_OSX=$(ROOTDIR_)/shared/templates/gdalcore.cli.osx.csproj.in
TOOLS_PROJECT_WIN=$(ROOTDIR_)/shared/templates/gdalcore.cli.win.csproj.in

# Generated project files
GDALCORE_PROJECT_FINAL=$(PACKAGE_BUILD_ROOT)/gdalcore.loader.final.csproj
Expand All @@ -117,16 +120,21 @@ RUNTIME_PROJECT_WIN_FINAL=$(PACKAGE_BUILD_ROOT)/gdalcore.windowsruntime.final.cs
RUNTIME_PROJECT_BUNDLE_FINAL=$(PACKAGE_BUILD_ROOT)/gdalcore.bundle.final.csproj
RUNTIME_PROJECT_BUNDLE_UNIX_FINAL=$(PACKAGE_BUILD_ROOT)/gdalcore.linuxruntime.bundle.final.csproj
RUNTIME_PROJECT_BUNDLE_OSX_FINAL=$(PACKAGE_BUILD_ROOT)/gdalcore.macosruntime.bundle.final.csproj
TOOLS_PROJECT_UNIX_FINAL=$(PACKAGE_BUILD_ROOT)/gdalcore.cli.unix.final.csproj
TOOLS_PROJECT_OSX_FINAL=$(PACKAGE_BUILD_ROOT)/gdalcore.cli.osx.final.csproj
TOOLS_PROJECT_WIN_FINAL=$(PACKAGE_BUILD_ROOT)/gdalcore.cli.win.final.csproj

PACKAGE_NAME_CORE=MaxRev.Gdal.Core
PACKAGE_NAME_RUNTIME=MaxRev.Gdal.$(RUNTIME_PACKAGE_PARTIAL).Minimal
PACKAGE_NAME_CLI=MaxRev.Gdal.CLI
RUNTIME_TARGET_BUNDLE=$(ROOTDIR_)/shared/msbuild/default.targets.in
RUNTIME_TARGET_BUNDLE_FINAL=$(PACKAGE_BUILD_ROOT)/$(PACKAGE_NAME_RUNTIME).$(BUILD_ARCH).targets
RUNTIME_TARGET_BUNDLE_FINAL_WIN=$(PACKAGE_BUILD_ROOT)/$(PACKAGE_NAME_RUNTIME).targets
RUNTIME_TARGET_BUNDLE_FINAL_CORE=$(PACKAGE_BUILD_ROOT)/$(PACKAGE_NAME_CORE).targets
CLI_TARGET_TEMPLATE=$(ROOTDIR_)/shared/msbuild/cli.targets.in

GIT=git
GIT_CLEAN=$(GIT) clean -fqdx
GIT_CLONE_DEPTH=--depth=1
VCPKG_ENSURE_INSTALLED=|| exit 1
# --------------------- !CONFIG! --------------------
# --------------------- !CONFIG! --------------------
Loading