{
	"includes": [
		"./common.gypi",
		"./libgdal_formats.gypi"
	],
	"targets": [
		{
			"target_name": "libgdal",
			"type": "static_library",
			"includes": [ "../../cpp_17.gypi" ],
			# It would be nice to glob these folders, but there are some exclusions :(
			"sources": [
				"./gdal/apps/ogr2ogr_lib.cpp",
				"./gdal/apps/gdalbuildvrt_lib.cpp",
				"./gdal/apps/gdal_translate_lib.cpp",
				"./gdal/apps/gdal_rasterize_lib.cpp",
				"./gdal/apps/gdalinfo_lib.cpp",
				"./gdal/apps/gdalwarp_lib.cpp",
				"./gdal/apps/gdaldem_lib.cpp",
				"./gdal/apps/gdal_contour_lib.cpp",
				"./gdal/apps/gdal_footprint_lib.cpp",
				"./gdal/apps/gdal_grid_lib.cpp",
				"./gdal/apps/gdalmdiminfo_lib.cpp",
				"./gdal/apps/gdalmdimtranslate_lib.cpp",
				"./gdal/apps/nearblack_lib.cpp",
				"./gdal/apps/ogrinfo_lib.cpp",
				"./gdal/apps/gdalgetgdalpath.cpp",
				"./gdal/apps/nearblack_lib_floodfill.cpp",
				"./gdal/apps/commonutils.cpp",
				"./gdal/apps/gdalargumentparser.cpp",
        "./gdal/apps/gdaltindex_lib.cpp",
				"./gdal/apps/gdal_viewshed.cpp",

        "./gdal/apps/gdalalg_abstract_pipeline.cpp",
        "./gdal/apps/gdalalg_clip_common.cpp",
        "./gdal/apps/gdalalg_convert.cpp",
        "./gdal/apps/gdalalg_dataset.cpp",
        "./gdal/apps/gdalalg_dataset_copy.cpp",
        "./gdal/apps/gdalalg_dataset_delete.cpp",
        "./gdal/apps/gdalalg_dataset_identify.cpp",
        "./gdal/apps/gdalalg_dataset_rename.cpp",
        "./gdal/apps/gdalalg_info.cpp",
        "./gdal/apps/gdalalg_main.cpp",
        "./gdal/apps/gdalalg_materialize.cpp",
        "./gdal/apps/gdalalg_mdim.cpp",
        "./gdal/apps/gdalalg_mdim_convert.cpp",
        "./gdal/apps/gdalalg_mdim_info.cpp",
        "./gdal/apps/gdalalg_mdim_mosaic.cpp",
        "./gdal/apps/gdalalg_pipeline.cpp",
        "./gdal/apps/gdalalg_raster.cpp",
        "./gdal/apps/gdalalg_raster_as_features.cpp",
        "./gdal/apps/gdalalg_raster_aspect.cpp",
        "./gdal/apps/gdalalg_raster_blend.cpp",
        "./gdal/apps/gdalalg_raster_calc.cpp",
        "./gdal/apps/gdalalg_raster_clean_collar.cpp",
        "./gdal/apps/gdalalg_raster_clip.cpp",
        "./gdal/apps/gdalalg_raster_color_map.cpp",
        "./gdal/apps/gdalalg_raster_compare.cpp",
        "./gdal/apps/gdalalg_raster_contour.cpp",
        "./gdal/apps/gdalalg_raster_convert.cpp",
        "./gdal/apps/gdalalg_raster_create.cpp",
        "./gdal/apps/gdalalg_raster_edit.cpp",
        "./gdal/apps/gdalalg_raster_fill_nodata.cpp",
        "./gdal/apps/gdalalg_raster_footprint.cpp",
        "./gdal/apps/gdalalg_raster_hillshade.cpp",
        "./gdal/apps/gdalalg_raster_index.cpp",
        "./gdal/apps/gdalalg_raster_info.cpp",
        "./gdal/apps/gdalalg_raster_mosaic.cpp",
        "./gdal/apps/gdalalg_raster_mosaic_stack_common.cpp",
        "./gdal/apps/gdalalg_raster_neighbors.cpp",
        "./gdal/apps/gdalalg_raster_nodata_to_alpha.cpp",
        "./gdal/apps/gdalalg_raster_overview_add.cpp",
        "./gdal/apps/gdalalg_raster_overview_delete.cpp",
        "./gdal/apps/gdalalg_raster_overview_refresh.cpp",
        "./gdal/apps/gdalalg_raster_pansharpen.cpp",
        "./gdal/apps/gdalalg_raster_pipeline.cpp",
        "./gdal/apps/gdalalg_raster_pixel_info.cpp",
        "./gdal/apps/gdalalg_raster_polygonize.cpp",
        "./gdal/apps/gdalalg_raster_proximity.cpp",
        "./gdal/apps/gdalalg_raster_read.cpp",
        "./gdal/apps/gdalalg_raster_reclassify.cpp",
        "./gdal/apps/gdalalg_raster_reproject.cpp",
        "./gdal/apps/gdalalg_raster_resize.cpp",
        "./gdal/apps/gdalalg_raster_rgb_to_palette.cpp",
        "./gdal/apps/gdalalg_raster_roughness.cpp",
        "./gdal/apps/gdalalg_raster_scale.cpp",
        "./gdal/apps/gdalalg_raster_select.cpp",
        "./gdal/apps/gdalalg_raster_set_type.cpp",
        "./gdal/apps/gdalalg_raster_sieve.cpp",
        "./gdal/apps/gdalalg_raster_slope.cpp",
        "./gdal/apps/gdalalg_raster_stack.cpp",
        "./gdal/apps/gdalalg_raster_tile.cpp",
        "./gdal/apps/gdalalg_raster_tpi.cpp",
        "./gdal/apps/gdalalg_raster_tri.cpp",
        "./gdal/apps/gdalalg_raster_unscale.cpp",
        "./gdal/apps/gdalalg_raster_update.cpp",
        "./gdal/apps/gdalalg_raster_viewshed.cpp",
        "./gdal/apps/gdalalg_raster_write.cpp",
        "./gdal/apps/gdalalg_raster_zonal_stats.cpp",
        "./gdal/apps/gdalalg_tee.cpp",
        "./gdal/apps/gdalalg_vector.cpp",
        "./gdal/apps/gdalalg_vector_buffer.cpp",
        "./gdal/apps/gdalalg_vector_check_coverage.cpp",
        "./gdal/apps/gdalalg_vector_check_geometry.cpp",
        "./gdal/apps/gdalalg_vector_clean_coverage.cpp",
        "./gdal/apps/gdalalg_vector_clip.cpp",
        "./gdal/apps/gdalalg_vector_concat.cpp",
        "./gdal/apps/gdalalg_vector_convert.cpp",
        "./gdal/apps/gdalalg_vector_edit.cpp",
        "./gdal/apps/gdalalg_vector_explode_collections.cpp",
        "./gdal/apps/gdalalg_vector_filter.cpp",
        "./gdal/apps/gdalalg_vector_geom.cpp",
        "./gdal/apps/gdalalg_vector_grid.cpp",
        "./gdal/apps/gdalalg_vector_grid_average.cpp",
        "./gdal/apps/gdalalg_vector_grid_data_metrics.cpp",
        "./gdal/apps/gdalalg_vector_grid_invdist.cpp",
        "./gdal/apps/gdalalg_vector_grid_invdistnn.cpp",
        "./gdal/apps/gdalalg_vector_grid_linear.cpp",
        "./gdal/apps/gdalalg_vector_grid_nearest.cpp",
        "./gdal/apps/gdalalg_vector_index.cpp",
        "./gdal/apps/gdalalg_vector_info.cpp",
        "./gdal/apps/gdalalg_vector_layer_algebra.cpp",
        "./gdal/apps/gdalalg_vector_limit.cpp",
        "./gdal/apps/gdalalg_vector_make_point.cpp",
        "./gdal/apps/gdalalg_vector_make_valid.cpp",
        "./gdal/apps/gdalalg_vector_output_abstract.cpp",
        "./gdal/apps/gdalalg_vector_partition.cpp",
        "./gdal/apps/gdalalg_vector_pipeline.cpp",
        "./gdal/apps/gdalalg_vector_rasterize.cpp",
        "./gdal/apps/gdalalg_vector_read.cpp",
        "./gdal/apps/gdalalg_vector_reproject.cpp",
        "./gdal/apps/gdalalg_vector_segmentize.cpp",
        "./gdal/apps/gdalalg_vector_select.cpp",
        "./gdal/apps/gdalalg_vector_set_field_type.cpp",
        "./gdal/apps/gdalalg_vector_set_geom_type.cpp",
        "./gdal/apps/gdalalg_vector_simplify.cpp",
        "./gdal/apps/gdalalg_vector_simplify_coverage.cpp",
        "./gdal/apps/gdalalg_vector_sql.cpp",
        "./gdal/apps/gdalalg_vector_swap_xy.cpp",
        "./gdal/apps/gdalalg_vector_write.cpp",
        "./gdal/apps/gdalalg_vsi.cpp",
        "./gdal/apps/gdalalg_vsi_copy.cpp",
        "./gdal/apps/gdalalg_vsi_delete.cpp",
        "./gdal/apps/gdalalg_vsi_list.cpp",
        "./gdal/apps/gdalalg_vsi_move.cpp",
        "./gdal/apps/gdalalg_vsi_sozip.cpp",
        "./gdal/apps/gdalalg_vsi_sync.cpp",

				"./gdal/frmts/gdalallregister.cpp",
				"./gdal/frmts/derived/deriveddataset.cpp",
				"./gdal/frmts/derived/derivedlist.c",

				"./gdal/ogr/ogrgeometryfactory.cpp",
				"./gdal/ogr/ogrpoint.cpp",
				"./gdal/ogr/ogrcurve.cpp",
				"./gdal/ogr/ogrlinestring.cpp",
				"./gdal/ogr/ogrlinearring.cpp",
				"./gdal/ogr/ogrpolygon.cpp",
				"./gdal/ogr/ogrtriangle.cpp",
				"./gdal/ogr/ogrutils.cpp",
				"./gdal/ogr/ogrgeomcoordinateprecision.cpp",
				"./gdal/ogr/ogrgeometry.cpp",
				"./gdal/ogr/ogrgeometrycollection.cpp",
				"./gdal/ogr/ogrmultipolygon.cpp",
				"./gdal/ogr/ogrsurface.cpp",
				"./gdal/ogr/ogrpolyhedralsurface.cpp",
				"./gdal/ogr/ogrtriangulatedsurface.cpp",
				"./gdal/ogr/ogrmultipoint.cpp",
				"./gdal/ogr/ogrmultilinestring.cpp",
				"./gdal/ogr/ogrcircularstring.cpp",
				"./gdal/ogr/ogrcompoundcurve.cpp",
				"./gdal/ogr/ogrcurvepolygon.cpp",
				"./gdal/ogr/ogrcurvecollection.cpp",
				"./gdal/ogr/ogrmulticurve.cpp",
				"./gdal/ogr/ogrmultisurface.cpp",
				"./gdal/ogr/ogr_api.cpp",
				"./gdal/ogr/ogrfeature.cpp",
				"./gdal/ogr/ogrfeaturedefn.cpp",
				"./gdal/ogr/ogrfeaturequery.cpp",
				"./gdal/ogr/ogrfeaturestyle.cpp",
				"./gdal/ogr/ogrfielddefn.cpp",
				"./gdal/ogr/ogrspatialreference.cpp",
				"./gdal/ogr/ogr_srsnode.cpp",
				"./gdal/ogr/ogr_fromepsg.cpp",
				"./gdal/ogr/ogrct.cpp",
				"./gdal/ogr/ogr_srs_cf1.cpp",
				"./gdal/ogr/ogr_srs_esri.cpp",
				"./gdal/ogr/ogr_srs_pci.cpp",
				"./gdal/ogr/ogr_srs_usgs.cpp",
				"./gdal/ogr/ogr_srs_dict.cpp",
				"./gdal/ogr/ogr_srs_panorama.cpp",
				"./gdal/ogr/ogr_srs_ozi.cpp",
				"./gdal/ogr/ogr_srs_erm.cpp",
				"./gdal/ogr/swq.cpp",
				"./gdal/ogr/swq_expr_node.cpp",
				"./gdal/ogr/swq_parser.cpp",
				"./gdal/ogr/swq_select.cpp",
				"./gdal/ogr/swq_op_registrar.cpp",
				"./gdal/ogr/swq_op_general.cpp",
				"./gdal/ogr/ogr_srs_xml.cpp",
				"./gdal/ogr/ograssemblepolygon.cpp",
				"./gdal/ogr/ogr2gmlgeometry.cpp",
				"./gdal/ogr/gml2ogrgeometry.cpp",
				"./gdal/ogr/ogr_expat.cpp",
				"./gdal/ogr/ogrpgeogeometry.cpp",
				"./gdal/ogr/ogr_geocoding.cpp",
				"./gdal/ogr/ogrgeomfielddefn.cpp",
				"./gdal/ogr/ograpispy.cpp",
				"./gdal/ogr/ogr_xerces.cpp",
				"./gdal/ogr/ogr_geo_utils.cpp",
				"./gdal/ogr/ogr_proj_p.cpp",
				"./gdal/ogr/ogr_wkb.cpp",
				"./gdal/ogr/ogrvrtgeometrytypes.cpp",
				"./gdal/ogr/ogr2kmlgeometry.cpp",
				"./gdal/ogr/ogrlibjsonutils.cpp",
				"./gdal/ogr/ogrgeojsongeometry.cpp",
				"./gdal/ogr/ogrgeojsonwriter.cpp",
				"./gdal/ogr/ogresrijsongeometry.cpp",
				"./gdal/ogr/ogrmitabspatialref.cpp",
				"./gdal/ogr/mitab_bounds.cpp",
        "./gdal/ogr/ogr_schema_override.cpp",
				"./gdal/ogr/ogrsf_frmts/generic/ogr_gensql.cpp",
				"./gdal/ogr/ogrsf_frmts/generic/ogr_miattrind.cpp",
				"./gdal/ogr/ogrsf_frmts/generic/ogrunionlayer.cpp",
				"./gdal/ogr/ogrsf_frmts/generic/ogrsfdriver.cpp",
				"./gdal/ogr/ogrsf_frmts/generic/ogrregisterall.cpp",
				"./gdal/ogr/ogrsf_frmts/generic/ogreditablelayer.cpp",
				"./gdal/ogr/ogrsf_frmts/generic/ogr_attrind.cpp",
				"./gdal/ogr/ogrsf_frmts/generic/ogrdatasource.cpp",
				"./gdal/ogr/ogrsf_frmts/generic/ogrmutexedlayer.cpp",
				"./gdal/ogr/ogrsf_frmts/generic/ogrwarpedlayer.cpp",
				"./gdal/ogr/ogrsf_frmts/generic/ogrlayerpool.cpp",
				"./gdal/ogr/ogrsf_frmts/generic/ograrrowarrayhelper.cpp",
				"./gdal/ogr/ogrsf_frmts/generic/ogrsfdriverregistrar.cpp",
				"./gdal/ogr/ogrsf_frmts/generic/ogrmutexeddatasource.cpp",
				"./gdal/ogr/ogrsf_frmts/generic/ogrlayer.cpp",
				"./gdal/ogr/ogrsf_frmts/generic/ogrlayerdecorator.cpp",
				"./gdal/ogr/ogrsf_frmts/generic/ogrlayerarrow.cpp",
        "./gdal/ogr/ogrsf_frmts/generic/ogrlayerwithtranslatefeature.cpp",

				'<!@(<(python) ../glob-files.py "./gdal/alg/*.cpp")',
				'<!@(<(python) ../glob-files.py "./gdal/alg/viewshed/*.cpp")',
				'<!@(<(python) ../glob-files.py "./gdal/alg/*.c")',
				'<!@(<(python) ../glob-files.py "./gdal/gcore/*.cpp")',
				'<!@(<(python) ../glob-files.py "./gdal/gcore/mdreader/*.cpp")',

				# "./gdal/port/vsipreload.cpp",
				# "./gdal/port/cpl_vsil_simple.cpp",
				"./gdal/port/cplstringlist.cpp",
				"./gdal/port/cplstring.cpp",
				"./gdal/port/cpl_float.cpp",
				"./gdal/port/cplkeywordparser.cpp",
				"./gdal/port/cplgetsymbol.cpp",
				"./gdal/port/cpl_xml_validate.cpp",
				"./gdal/port/cpl_worker_thread_pool.cpp",
				"./gdal/port/cpl_vsisimple.cpp",
				"./gdal/port/cpl_vsil_win32.cpp",
				"./gdal/port/cpl_vsil_webhdfs.cpp",
				"./gdal/port/cpl_vsil_unix_stdio_64.cpp",
				"./gdal/port/cpl_vsil_tar.cpp",
				"./gdal/port/cpl_vsil_swift.cpp",
				"./gdal/port/cpl_vsil_subfile.cpp",
				"./gdal/port/cpl_vsil_stdout.cpp",
				"./gdal/port/cpl_vsil_stdin.cpp",
				"./gdal/port/cpl_vsil_sparsefile.cpp",
				"./gdal/port/cpl_vsil_s3.cpp",
				"./gdal/port/cpl_vsil_plugin.cpp",
				"./gdal/port/cpl_vsil_oss.cpp",
				"./gdal/port/cpl_vsil_hdfs.cpp",
				"./gdal/port/cpl_vsil_gzip.cpp",
				"./gdal/port/cpl_vsil_gs.cpp",
				"./gdal/port/cpl_vsil_curl_streaming.cpp",
				"./gdal/port/cpl_vsil_curl.cpp",
				"./gdal/port/cpl_vsil_uploadonclose.cpp",
				"./gdal/port/cpl_vsil_crypt.cpp",
				"./gdal/port/cpl_vsil_cache.cpp",
				"./gdal/port/cpl_vsil_buffered_reader.cpp",
				"./gdal/port/cpl_vsil_az.cpp",
				"./gdal/port/cpl_vsil_adls.cpp",
				"./gdal/port/cpl_vsil_abstract_archive.cpp",
				"./gdal/port/cpl_vsil.cpp",
				"./gdal/port/cpl_vsil_chunked_write_handle.cpp",
				"./gdal/port/cpl_vsi_mem.cpp",
				"./gdal/port/cpl_vsi_error.cpp",
				"./gdal/port/cpl_virtualmem.cpp",
				"./gdal/port/cpl_userfaultfd.cpp",
				"./gdal/port/cpl_time.cpp",
				"./gdal/port/cpl_swift.cpp",
				"./gdal/port/cpl_strtod.cpp",
				"./gdal/port/cpl_string.cpp",
				"./gdal/port/cpl_spawn.cpp",
				"./gdal/port/cpl_sha256.cpp",
				"./gdal/port/cpl_sha1.cpp",
				"./gdal/port/cpl_recode_stub.cpp",
				"./gdal/port/cpl_recode_iconv.cpp",
				"./gdal/port/cpl_recode.cpp",
				"./gdal/port/cpl_quad_tree.cpp",
				"./gdal/port/cpl_progress.cpp",
				"./gdal/port/cpl_path.cpp",
				#"./gdal/port/cpl_odbc.cpp",
				"./gdal/port/cpl_multiproc.cpp",
				"./gdal/port/cpl_minizip_zip.cpp",
				"./gdal/port/cpl_minizip_unzip.cpp",
				"./gdal/port/cpl_minizip_ioapi.cpp",
				"./gdal/port/cpl_minixml.cpp",
				"./gdal/port/cpl_md5.cpp",
				"./gdal/port/cpl_list.cpp",
				"./gdal/port/cpl_json_streaming_parser.cpp",
				"./gdal/port/cpl_json.cpp",
				"./gdal/port/cpl_http.cpp",
				"./gdal/port/cpl_hash_set.cpp",
				"./gdal/port/cpl_google_oauth2.cpp",
				"./gdal/port/cpl_google_cloud.cpp",
				"./gdal/port/cpl_getexecpath.cpp",
				"./gdal/port/cpl_findfile.cpp",
				"./gdal/port/cpl_error.cpp",
				"./gdal/port/cpl_csv.cpp",
				"./gdal/port/cpl_cpu_features.cpp",
				"./gdal/port/cpl_conv.cpp",
				"./gdal/port/cpl_base64.cpp",
				"./gdal/port/cpl_azure.cpp",
				"./gdal/port/cpl_aws.cpp",
				"./gdal/port/cpl_aws_win32.cpp",
				"./gdal/port/cpl_atomic_ops.cpp",
				"./gdal/port/cpl_alibaba_oss.cpp",
				"./gdal/port/cpl_vax.cpp",
				"./gdal/port/cpl_compressor.cpp",
        "./gdal/port/cpl_levenshtein.cpp",
        "./gdal/port/cplgetcurrentthreadcount.cpp",
				"./gdal/port/cpl_json_streaming_writer.cpp",
				'<!@(<(python) ../glob-files.py "./gdal/gnm/*.cpp")',
				'<!@(<(python) ../glob-files.py "./gdal/frmts/jpeg/libjpeg/*.c" "./gdal/frmts/jpeg/libjpeg/jstdhuff.c")'
			],
			"include_dirs": [
				"./gdal/alg",
				"./gdal/apps",
				"./gdal/gcore",
				"./gdal/port",
				"./gdal/frmts",
				"./gdal/frmts/vrt",
				"./gdal/frmts/mem",
				"./gdal/frmts/derived",
				"./gdal/ogr",
				"./gdal/ogr/ogrsf_frmts",
				"./gdal/ogr/ogrsf_frmts/mem",
				"./gdal/ogr/ogrsf_frmts/geojson",
				"./gdal/frmts/jpeg/libjpeg",
				"./gdal/alg/marching_squares"
			],
			"dependencies": [
				'<@(gdal_format_gyps)'
			],
			"defines": [
				'<@(gdal_format_defs)'
			],
			"conditions": [
				["runtime == 'electron'", {
					"include_dirs": [
						"./gdal/frmts/zlib"
					]
				}],
				["OS == 'win'", {
					"sources": [
						"./gdal/port/cpl_odbc.cpp"
					],
					"link_settings": {
						"libraries": [
							"-lws2_32.lib",
							"-lodbccp32.lib"
						]
					}
				}]
			],
			"direct_dependent_settings": {
				"include_dirs": [
					"./gdal/alg",
					"./gdal/gcore",
					"./gdal/port",
					"./gdal/apps",
					"./gdal/ogr",
					"./gdal/ogr/ogrsf_frmts"
				],
				"conditions": [
					["OS == 'win'", {
						"include_dirs": ["arch/win"]
					}, {
						"include_dirs": ["arch/unix"]
					}],
					[ "OS == 'mac'", {
							"libraries": [
							"-liconv"
						]
					}]
				],
				"defines": [
					"_LARGEFILE_SOURCE",
					"_FILE_OFFSET_BITS=64"
				]
			}
		}
	]
}
