Skip to content

Commit

Permalink
Build: enable -DOGR_ENABLE_DRIVER_GML_PLUGIN=OFF, provided that -DOGR…
Browse files Browse the repository at this point in the history
…_ENABLE_DRIVER_NAS=OFF; make CSW and WFS drivers plugin capable too
  • Loading branch information
rouault committed Oct 1, 2024
1 parent 9660894 commit 0297f72
Show file tree
Hide file tree
Showing 27 changed files with 565 additions and 508 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/cmake_builds.yml
Original file line number Diff line number Diff line change
Expand Up @@ -456,7 +456,7 @@ jobs:
# Build PDF driver as plugin due to the PDFium build including libopenjp2 symbols which would conflict with external libopenjp2
run: |
mkdir -p $GITHUB_WORKSPACE/build
cmake -G "${generator}" -Werror=dev "-DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install-gdal" "-DUSE_CCACHE=ON" "-DCMAKE_PREFIX_PATH=${CONDA}/envs/gdalenv" -DCMAKE_UNITY_BUILD=${CMAKE_UNITY_BUILD} -S "$GITHUB_WORKSPACE" -B "$GITHUB_WORKSPACE/build" -DGDAL_ENABLE_PLUGINS:BOOL=ON -DGDAL_ENABLE_PLUGINS_NO_DEPS:BOOL=ON -DGDAL_USE_PUBLICDECOMPWT:BOOL=ON -DPUBLICDECOMPWT_URL=https://github.com/rouault/PublicDecompWT -DBUILD_JAVA_BINDINGS=OFF -DBUILD_CSHARP_BINDINGS=ON -DGDAL_USE_MYSQL:BOOL=OFF -DCMAKE_C_FLAGS=" /WX" -DCMAKE_CXX_FLAGS=" /WX" -DWERROR_DEV_FLAG="-Werror=dev" -DCMAKE_BUILD_TYPE=Release -DPDFIUM_ROOT=$GITHUB_WORKSPACE/install-pdfium -DGDAL_ENABLE_DRIVER_PDF_PLUGIN:BOOL=ON -DCMAKE_UNITY_BUILD=ON -DOGR_ENABLE_DRIVER_TAB_PLUGIN=OFF -DOGR_ENABLE_DRIVER_GEOJSON_PLUGIN=OFF
cmake -G "${generator}" -Werror=dev "-DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install-gdal" "-DUSE_CCACHE=ON" "-DCMAKE_PREFIX_PATH=${CONDA}/envs/gdalenv" -DCMAKE_UNITY_BUILD=${CMAKE_UNITY_BUILD} -S "$GITHUB_WORKSPACE" -B "$GITHUB_WORKSPACE/build" -DGDAL_ENABLE_PLUGINS:BOOL=ON -DGDAL_ENABLE_PLUGINS_NO_DEPS:BOOL=ON -DGDAL_USE_PUBLICDECOMPWT:BOOL=ON -DPUBLICDECOMPWT_URL=https://github.com/rouault/PublicDecompWT -DBUILD_JAVA_BINDINGS=OFF -DBUILD_CSHARP_BINDINGS=ON -DGDAL_USE_MYSQL:BOOL=OFF -DCMAKE_C_FLAGS=" /WX" -DCMAKE_CXX_FLAGS=" /WX" -DWERROR_DEV_FLAG="-Werror=dev" -DCMAKE_BUILD_TYPE=Release -DPDFIUM_ROOT=$GITHUB_WORKSPACE/install-pdfium -DGDAL_ENABLE_DRIVER_PDF_PLUGIN:BOOL=ON -DCMAKE_UNITY_BUILD=ON -DOGR_ENABLE_DRIVER_TAB_PLUGIN=OFF -DOGR_ENABLE_DRIVER_GEOJSON_PLUGIN=OFF -DOGR_ENABLE_DRIVER_NAS=OFF
- name: Build
shell: bash -l {0}
run: cmake --build $GITHUB_WORKSPACE/build --config Release -j 2
Expand Down
8 changes: 1 addition & 7 deletions frmts/ogcapi/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
add_gdal_driver(TARGET gdal_OGCAPI SOURCES gdalogcapidataset.cpp PLUGIN_CAPABLE NO_DEPS)
gdal_standard_includes(gdal_OGCAPI)
if(NOT DEFINED OGR_ENABLE_DRIVER_GML)
message(FATAL_ERROR "OGR_ENABLE_DRIVER_GML is not defined")
endif()
if(OGR_ENABLE_DRIVER_GML)
target_include_directories(gdal_OGCAPI PRIVATE ${GDAL_VECTOR_FORMAT_SOURCE_DIR}/gml)
target_compile_definitions(gdal_OGCAPI PRIVATE -DOGR_ENABLE_DRIVER_GML)
endif()
target_include_directories(gdal_OGCAPI PRIVATE ${GDAL_VECTOR_FORMAT_SOURCE_DIR}/gmlutils)
9 changes: 1 addition & 8 deletions frmts/ogcapi/gdalogcapidataset.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,7 @@
#include "ogrsf_frmts.h"
#include "ogr_spatialref.h"

#ifdef OGR_ENABLE_DRIVER_GML
#include "parsexsd.h"
#endif

#include <algorithm>
#include <memory>
Expand Down Expand Up @@ -1649,7 +1647,6 @@ GDALColorInterp OGCAPIMapWrapperBand::GetColorInterpretation()
/* ParseXMLSchema() */
/************************************************************************/

#ifdef OGR_ENABLE_DRIVER_GML
static bool
ParseXMLSchema(const std::string &osURL,
std::vector<std::unique_ptr<OGRFieldDefn>> &apoFields,
Expand Down Expand Up @@ -1694,7 +1691,6 @@ ParseXMLSchema(const std::string &osURL,

return false;
}
#endif

/************************************************************************/
/* InitWithTilesAPI() */
Expand Down Expand Up @@ -1966,14 +1962,11 @@ bool OGCAPIDataset::InitWithTilesAPI(GDALOpenInfo *poOpenInfo,
}
}

#ifdef OGR_ENABLE_DRIVER_GML
std::vector<std::unique_ptr<OGRFieldDefn>> apoFields;
bool bGotSchema = false;
if (!osXMLSchemaURL.empty())
{
bGotSchema = ParseXMLSchema(osXMLSchemaURL, apoFields, eGeomType);
ParseXMLSchema(osXMLSchemaURL, apoFields, eGeomType);
}
#endif

for (const auto &tileMatrix : tms->tileMatrixList())
{
Expand Down
2 changes: 1 addition & 1 deletion frmts/wcs/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,4 @@ if(NOT TARGET gdal_WCS)
endif()

gdal_standard_includes(gdal_WCS)
target_include_directories(gdal_WCS PRIVATE ${GDAL_VECTOR_FORMAT_SOURCE_DIR}/gml)
target_include_directories(gdal_WCS PRIVATE ${GDAL_VECTOR_FORMAT_SOURCE_DIR}/gmlutils)
10 changes: 4 additions & 6 deletions ogr/ogr_p.h
Original file line number Diff line number Diff line change
Expand Up @@ -200,12 +200,10 @@ OGRErr CPL_DLL OGRCheckPermutation(const int *panPermutation, int nSize);

/* GML related */

OGRGeometry *GML2OGRGeometry_XMLNode(const CPLXMLNode *psNode,
int nPseudoBoolGetSecondaryGeometryOption,
int nRecLevel = 0, int nSRSDimension = 0,
bool bIgnoreGSG = false,
bool bOrientation = true,
bool bFaceHoleNegative = false);
OGRGeometry CPL_DLL *GML2OGRGeometry_XMLNode(
const CPLXMLNode *psNode, int nPseudoBoolGetSecondaryGeometryOption,
int nRecLevel = 0, int nSRSDimension = 0, bool bIgnoreGSG = false,
bool bOrientation = true, bool bFaceHoleNegative = false);

/************************************************************************/
/* PostGIS EWKB encoding */
Expand Down
6 changes: 6 additions & 0 deletions ogr/ogrsf_frmts/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,13 @@ ogr_optional_driver(vrt "VRT - Virtual Format")
# Caution: if modifying AVC declaration here, also modify it in gdal.cmake
ogr_optional_driver(avc AVC)

add_subdirectory(gmlutils)
ogr_optional_driver(gml GML) # when not found both EXPAT/XercesC, return error in driver, referenced by WCS
if (OGR_ENABLE_DRIVER_GML_PLUGIN AND
((NOT DEFINED OGR_ENABLE_DRIVER_NAS OR OGR_ENABLE_DRIVER_NAS))
)
message(FATAL_ERROR "When building the GML driver as a plugin, the NAS driver must be explicitly disabled with OGR_ENABLE_DRIVER_NAS=OFF")
endif()

# ######################################################################################################################
ogr_optional_driver(csv CSV)
Expand Down
5 changes: 3 additions & 2 deletions ogr/ogrsf_frmts/csw/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
add_gdal_driver(
TARGET ogr_CSW
SOURCES ogrcswdataset.cpp
BUILTIN) # BUILTIN because of GML and WFS dependency
PLUGIN_CAPABLE
NO_DEPS)
gdal_standard_includes(ogr_CSW)
target_include_directories(ogr_CSW PRIVATE $<TARGET_PROPERTY:ogr_GML,SOURCE_DIR> $<TARGET_PROPERTY:ogr_WFS,SOURCE_DIR>)
target_include_directories(ogr_CSW PRIVATE $<TARGET_PROPERTY:gmlutils,SOURCE_DIR>)
3 changes: 2 additions & 1 deletion ogr/ogrsf_frmts/csw/ogrcswdataset.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,9 @@
#include "ogrsf_frmts.h"
#include "cpl_conv.h"
#include "cpl_http.h"
#include "ogr_wfs.h"
#include "ogr_p.h"
#include "ogr_swq.h"
#include "ogrwfsfilter.h"
#include "gmlutils.h"

extern "C" void RegisterOGRCSW();
Expand Down
12 changes: 4 additions & 8 deletions ogr/ogrsf_frmts/gml/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,32 +1,28 @@
add_gdal_driver(
TARGET ogr_GML
SOURCES gfstemplate.cpp
gmlpropertydefn.cpp
gmlreadstate.cpp
gmlutils.h
ogrgmldriver.cpp
resolvexlinks.cpp
gmlfeature.cpp
gmlreader.cpp
gmlregistry.cpp
hugefileresolver.cpp
ogrgmllayer.cpp
xercesc_headers.h
gmlfeatureclass.cpp
gmlreader.h
gmlregistry.h
ogr_gml.h
parsexsd.cpp
gmlhandler.cpp
gmlreaderp.h
gmlutils.cpp
ogrgmldatasource.cpp
parsexsd.h
BUILTIN
PLUGIN_CAPABLE
NO_DEPS
STRONG_CXX_WFLAGS
)
gdal_standard_includes(ogr_GML)

target_include_directories(ogr_GML PRIVATE $<TARGET_PROPERTY:gmlutils,SOURCE_DIR>)

set(GDAL_DATA_FILES
${CMAKE_CURRENT_SOURCE_DIR}/data/gfs.xsd
${CMAKE_CURRENT_SOURCE_DIR}/data/gml_registry.xml
Expand Down
Loading

0 comments on commit 0297f72

Please sign in to comment.