From 3a5c02e8c170bba1384da17938e97ecf0f3eb756 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Mon, 23 Sep 2024 13:03:07 +0200 Subject: [PATCH] Derived driver: make it optional --- .github/workflows/cmake_builds.yml | 2 +- frmts/CMakeLists.txt | 3 ++- frmts/gdalallregister.cpp | 3 +++ gcore/CMakeLists.txt | 4 ++++ gcore/gdaldataset.cpp | 2 ++ 5 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cmake_builds.yml b/.github/workflows/cmake_builds.yml index 2eee98263c9d..39e336353ec9 100644 --- a/.github/workflows/cmake_builds.yml +++ b/.github/workflows/cmake_builds.yml @@ -541,7 +541,7 @@ jobs: shell: bash -l {0} run: | rm -f build/CMakeCache.txt - cmake -A ${architecture} -G "${generator}" "-DCMAKE_PREFIX_PATH=${CONDA}/envs/gdalenv" -Werror=dev "-DCMAKE_CXX_COMPILER_LAUNCHER=clcache" -DCMAKE_UNITY_BUILD=${CMAKE_UNITY_BUILD} -S "$GITHUB_WORKSPACE" -B "$GITHUB_WORKSPACE/build" -DCMAKE_C_FLAGS=" /WX" -DCMAKE_CXX_FLAGS=" /WX" -DGDAL_USE_EXTERNAL_LIBS:BOOL=OFF -DGDAL_USE_PNG_INTERNAL=OFF -DGDAL_USE_JPEG_INTERNAL=OFF -DGDAL_USE_JPEG12_INTERNAL=OFF -DGDAL_USE_GIF_INTERNAL=OFF -DGDAL_USE_LERC_INTERNAL=OFF -DGDAL_USE_LERCV1_INTERNAL=OFF -DGDAL_USE_QHULL_INTERNAL=OFF -DGDAL_USE_OPENCAD_INTERNAL=OFF -DGDAL_BUILD_OPTIONAL_DRIVERS=OFF -DOGR_BUILD_OPTIONAL_DRIVERS=OFF -DWERROR_DEV_FLAG="-Werror=dev" + cmake -A ${architecture} -G "${generator}" "-DCMAKE_PREFIX_PATH=${CONDA}/envs/gdalenv" -Werror=dev "-DCMAKE_CXX_COMPILER_LAUNCHER=clcache" -DCMAKE_UNITY_BUILD=${CMAKE_UNITY_BUILD} -S "$GITHUB_WORKSPACE" -B "$GITHUB_WORKSPACE/build" -DCMAKE_C_FLAGS=" /WX" -DCMAKE_CXX_FLAGS=" /WX" -DGDAL_USE_EXTERNAL_LIBS:BOOL=OFF -DGDAL_USE_PNG_INTERNAL=OFF -DGDAL_USE_JPEG_INTERNAL=OFF -DGDAL_USE_JPEG12_INTERNAL=OFF -DGDAL_USE_GIF_INTERNAL=OFF -DGDAL_USE_LERC_INTERNAL=OFF -DGDAL_USE_LERCV1_INTERNAL=OFF -DGDAL_USE_QHULL_INTERNAL=OFF -DGDAL_USE_OPENCAD_INTERNAL=OFF -DGDAL_BUILD_OPTIONAL_DRIVERS=OFF -DOGR_BUILD_OPTIONAL_DRIVERS=OFF -DGDAL_ENABLE_DRIVER_DERIVED=ON -DWERROR_DEV_FLAG="-Werror=dev" - name: Build shell: bash -l {0} run: cmake --build $GITHUB_WORKSPACE/build --config RelWithDebInfo -j 2 diff --git a/frmts/CMakeLists.txt b/frmts/CMakeLists.txt index d89266d00376..08d3fcaec778 100644 --- a/frmts/CMakeLists.txt +++ b/frmts/CMakeLists.txt @@ -55,8 +55,9 @@ if (NOT GDAL_ENABLE_DRIVER_VRT) # Most of it add_subdirectory(vrt) endif() + # Note: derived is derived of vrt -add_subdirectory(derived) +gdal_optional_format(derived "Derived datasets") gdal_optional_format(gti "GDAL Tile Index") diff --git a/frmts/gdalallregister.cpp b/frmts/gdalallregister.cpp index ee30b082036b..163a77a89b26 100644 --- a/frmts/gdalallregister.cpp +++ b/frmts/gdalallregister.cpp @@ -329,6 +329,9 @@ void CPL_STDCALL GDALAllRegister() #ifdef FRMT_vrt GDALRegister_VRT(); +#endif + +#ifdef FRMT_derived GDALRegister_Derived(); #endif diff --git a/gcore/CMakeLists.txt b/gcore/CMakeLists.txt index a629c7f163b2..d69605e755f2 100644 --- a/gcore/CMakeLists.txt +++ b/gcore/CMakeLists.txt @@ -118,6 +118,10 @@ if (ENABLE_PAM) target_compile_definitions(gcore PRIVATE -DPAM_ENABLED) endif () +if (NOT GDAL_ENABLE_DRIVER_DERIVED) + target_compile_definitions(gcore PRIVATE -DWITHOUT_DERIVED) +endif () + add_subdirectory(mdreader) # External libs now diff --git a/gcore/gdaldataset.cpp b/gcore/gdaldataset.cpp index 2f17d2d69757..c862ffda94e4 100644 --- a/gcore/gdaldataset.cpp +++ b/gcore/gdaldataset.cpp @@ -4681,6 +4681,7 @@ void GDALDataset::ReportErrorV(const char *pszDSName, CPLErr eErrClass, /************************************************************************/ char **GDALDataset::GetMetadata(const char *pszDomain) { +#ifndef WITHOUT_DERIVED if (pszDomain != nullptr && EQUAL(pszDomain, "DERIVED_SUBDATASETS")) { oDerivedMetadataList.Clear(); @@ -4733,6 +4734,7 @@ char **GDALDataset::GetMetadata(const char *pszDomain) } return oDerivedMetadataList.List(); } +#endif return GDALMajorObject::GetMetadata(pszDomain); }