Skip to content

[GDAL] On Linux completly broken #9068

@Neumann-A

Description

@Neumann-A

This port does not build correctly on linux. (even though it builds succesfully)
It does not pass any option of 3rd party libraries and the configure discovery of libraries of this port is terrible broken which can be seen by simply looking at the config-x64-linux-(rel|dbg)-out.log.

As an example: gdal depents on sqlite3 but the configure log tells:

checking for sqlite3_open in -lsqlite3... no

the reason why configure fails is due to undefined symbols due to not linking pthread and dl in the test (the script even sets LIBS='' for the test so i cannot pass those via the LIBS variable).

To solve the problem all libraries must be passed via -with-<package>=${CURRENT_INSTALLED_DIR}/(debug/) in addition to that the configure script itself must be patched. Furthermore the configure file in the debug build must be changed so that every occourence of -with-<package>/include is replaced by -with-<package>/../include due to additional header existence checks (WTF?!? Why? You already did compiler/linker checks .....)

(and that might not be all)

Here is a list of all gdal configure options for reference:

Defaults for the options are specified in brackets.

Configuration:
  -h, --help              display this help and exit
      --help=short        display options specific to this package
      --help=recursive    display the short help of all the included packages
  -V, --version           display version information and exit
  -q, --quiet, --silent   do not print \`checking ...' messages
      --cache-file=FILE   cache test results in FILE [disabled]
  -C, --config-cache      alias for \`--cache-file=config.cache'
  -n, --no-create         do not create output files
      --srcdir=DIR        find the sources in DIR [configure dir or \`..']

Installation directories:
  --prefix=PREFIX         install architecture-independent files in PREFIX
                          [$ac_default_prefix]
  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                          [PREFIX]

By default, \`make install' will install all the files in
\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
an installation prefix other than \`$ac_default_prefix' using \`--prefix',
for instance \`--prefix=\$HOME'.

For better control, use the options below.

Fine tuning of the installation directories:
  --bindir=DIR            user executables [EPREFIX/bin]
  --sbindir=DIR           system admin executables [EPREFIX/sbin]
  --libexecdir=DIR        program executables [EPREFIX/libexec]
  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
  --libdir=DIR            object code libraries [EPREFIX/lib]
  --includedir=DIR        C header files [PREFIX/include]
  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
  --infodir=DIR           info documentation [DATAROOTDIR/info]
  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
  --mandir=DIR            man documentation [DATAROOTDIR/man]
  --docdir=DIR            documentation root [DATAROOTDIR/doc/PACKAGE]
  --htmldir=DIR           html documentation [DOCDIR]
  --dvidir=DIR            dvi documentation [DOCDIR]
  --pdfdir=DIR            pdf documentation [DOCDIR]
  --psdir=DIR             ps documentation [DOCDIR]
_ACEOF

  cat <<\_ACEOF

System types:
  --build=BUILD     configure for building on BUILD [guessed]
  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
_ACEOF
fi

if test -n "$ac_init_help"; then

  cat <<\_ACEOF

Optional Features:
  --disable-option-checking  ignore unrecognized --enable/--with options
  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
  --enable-shared[=PKGS]  build shared libraries [default=yes]
  --enable-static[=PKGS]  build static libraries [default=yes]
  --enable-fast-install[=PKGS]
                          optimize for fast installation [default=yes]
  --disable-libtool-lock  avoid locking (might break parallel builds)
  --enable-debug          enable debugging (disabled by default)
  --enable-lto            enable LTO(link time optimization) (disabled by
                          default)
  --disable-rpath         do not hardcode runtime library paths
  --enable-pdf-plugin     enable PDF driver as a plugin (included in libgdal
                          by default)

Optional Packages:
  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
  --with-cpp14            Enable C++14 compiler options
  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
                          both]
  --with-aix-soname=aix|svr4|both
                          shared library versioning (aka "SONAME") variant to
                          provide on AIX, [default=aix].
  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
  --with-sysroot[=DIR]    Search for dependent libraries within DIR (or the
                          compiler's sysroot if not specified).
  --without-libtool     Don't use libtool to build the library
  --without-ld-shared   Disable shared library support
  --with-unix-stdio-64=ARG Utilize 64 stdio api (yes/no)
  --with-sse=ARG        Detect SSE availability for some optimized routines (ARG=yes(default), no)
  --with-ssse3=ARG        Detect SSSE3 availability for some optimized routines (ARG=yes(default), no)
  --with-avx=ARG        Detect AVX availability for some optimized routines (ARG=yes(default), no)
  --with-hide-internal-symbols=ARG Try to hide internal symbols (ARG=yes/no)
  --with-rename-internal-libtiff-symbols=ARG Prefix internal libtiff symbols with gdal_ (ARG=yes/no)
  --with-rename-internal-libgeotiff-symbols=ARG Prefix internal libgeotiff symbols with gdal_ (ARG=yes/no)
  --with-rename-internal-shapelib-symbols=ARG Prefix internal shapelib symbols with gdal_ (ARG=yes/no)
  --with-local=dir      Include /usr/local or other local tree for INCLUDE/LIBS
  --with-threads=ARG    Include thread safe support (ARG=yes(default), no or linkopt)
  --with-libz=ARG       Include libz support (ARG=internal or libz directory)
  --with-gnu-ld           assume the C compiler uses GNU ld default=no
  --with-libiconv-prefix[=DIR]  search for libiconv in DIR/include and DIR/lib
  --without-libiconv-prefix     don't search for libiconv in includedir and libdir
  --with-liblzma=ARG       Include liblzma support (ARG=yes/no)
  --with-zstd=ARG       Include zstd support (ARG=yes/no/installation_prefix)
  --with-pg=ARG           Include PostgreSQL GDAL/OGR Support (ARG=path to
                          pg_config)
  --with-grass=ARG      Include GRASS support (GRASS 5.7+, ARG=GRASS install tree dir)
  --with-libgrass=ARG   Include GRASS support based on libgrass (GRASS 5.0+)
  --with-cfitsio=ARG    Include FITS support (ARG=no or libcfitsio path)
  --with-pcraster=ARG   Include PCRaster (libcsf) support (ARG=internal, no or path)
  --with-png=ARG        Include PNG support (ARG=internal, no or path)
  --with-dds=ARG        Include DDS support (ARG=no, or path)
  --with-gta=ARG        Include GTA support (ARG=no or libgta tree prefix)
  --with-pcidsk=ARG     Path to external PCIDSK SDK or internal (default)
  --with-libtiff=ARG    Libtiff library to use (ARG=internal, yes or path)
  --with-geotiff=ARG    Libgeotiff library to use (ARG=internal, yes or path)
  --with-jpeg=ARG       Include JPEG support (ARG=internal, no or path)
  --with-charls           Include JPEG-Lossless support
  --without-jpeg12        Disable JPEG 8/12bit TIFF support
  --with-gif=ARG        Include GIF support (ARG=internal, no or path)
  --with-ogdi=ARG       Include OGDI support (ARG=path)
  --with-fme=ARG        Include FMEObjects support (ARG=FME_HOME path)
  --with-sosi=ARG        Include SOSI support (ARG=SOSI lib Path, yes or no)
  --with-mongocxx=ARG        Include MongoCXX support (ARG=Path, yes or no)
  --with-boost-lib-path=ARG   Path to boost libraries for mongocxx client
  --with-hdf4=ARG       Include HDF4 support (ARG=path)
  --with-hdf5=ARG       Include HDF5 support (ARG=path)
  --with-kea=ARG      Include kealib (ARG=path to kea-config) [default=yes]
  --with-netcdf=ARG     Include netCDF support (ARG=no or netCDF tree prefix)
  --with-jasper=ARG     Include JPEG-2000 support via JasPer library (ARG=path)
  --with-openjpeg     Include JPEG-2000 support via OpenJPEG 2.x library
  --with-fgdb=ARG        Include ESRI File Geodatabase support (ARG=FGDP API Path, yes or no)
  --with-ecw=ARG        Include ECW support (ARG=ECW SDK Path, yes or no)
  --with-kakadu=ARG     Include Kakadu/JPEG2000 support
  --with-mrsid=ARG      Include MrSID support (ARG=path to MrSID DSDK or no)
  --with-jp2mrsid=ARG   Enable MrSID JPEG2000 support (ARG=yes/no)
  --with-mrsid_lidar=ARG      Include MrSID/MG4 LiDAR support (ARG=path to LizardTech LiDAR SDK or no)
  --with-j2lura=ARG    Include JP2Lua support (ARG=no, lura SDK install path)
  --with-msg=ARG          Enable MSG driver (ARG=yes or no)
  --without-bsb           Disable BSB driver (legal issues pending
  --with-oci=[ARG]        use Oracle OCI API from given Oracle home
                          (ARG=path); use existing ORACLE_HOME (ARG=yes);
                          disable Oracle OCI support (ARG=no)
  --with-oci-include=[DIR]
                          use Oracle OCI API headers from given path
  --with-oci-lib=[DIR]    use Oracle OCI API libraries from given path
  --without-grib          Disable GRIB driver
  --with-gnm            Build GNM into shared library
  --with-mysql=ARG      Include MySQL (ARG=path to mysql_config) [default=no]
  --with-ingres=ARG     Include Ingres (ARG=$II_SYSTEM)
  --with-xerces=[ARG]     use Xerces C++ Parser from given prefix (ARG=path);
                          check standard prefixes (ARG=yes); disable (ARG=no)
  --with-xerces-inc=[DIR] path to Xerces C++ Parser headers
  --with-xerces-lib=[ARG] link options for Xerces C++ Parser libraries
  --with-expat=[ARG]      use Expat XML Parser from given prefix (ARG=path);
                          check standard prefixes (ARG=yes); disable (ARG=no)
  --with-expat-inc=[DIR]  path to Expat XML Parser headers
  --with-expat-lib=[ARG]  link options for Expat XML Parser libraries
  --with-libkml=[ARG]     use Google libkml from given prefix (ARG=path);
                          check standard prefixes (ARG=yes); disable (ARG=no)
  --with-libkml-inc=[DIR] path to Google libkml headers
  --with-libkml-lib=[ARG] link options for Google libkml libraries
  --with-odbc=ARG       Include ODBC support (ARG=no or path)
  --with-dods-root=ARG  Include DODS support (ARG=no or absolute path)
  --with-curl=ARG       Include curl (ARG=path to curl-config.)
  --with-xml2=ARG       Include libxml2 (ARG=path to xml2-config.)
  --with-spatialite=ARG Include SpatiaLite support (ARG=no(default), yes, dlopen (only supported for Spatialite >= 4.1.2) or path)
  --with-spatialite-soname=ARG Spatialite shared object name (e.g. libspatialite.so), only used if --with-spatiliate=dlopen
  --with-sqlite3=[ARG]    use SQLite 3 library [default=yes], optionally
                          specify the prefix for sqlite3 library
  --with-rasterlite2=ARG Include RasterLite2 support (ARG=no(default), yes or path)
  --with-pcre             Include libpcre support (REGEXP support for SQLite)
  --with-teigha=path Include Teigha DWG/DGN support
  --with-teigha-plt=platform Teigha platform
  --with-idb=DIR        Include Informix DataBlade support (DIR points to Informix root)
  --with-sde=DIR        Include ESRI SDE support (DIR is SDE's install dir).
  --with-sde-version=VERSION NUMBER  Set ESRI SDE version number (Default is 80).
  --with-epsilon=ARG    Include EPSILON support (ARG=no, yes or libepsilon install root path)
  --with-webp=ARG    Include WEBP support (ARG=no, yes or libwebp install root path)
  --with-geos=ARG         Include GEOS support (ARG=yes, no or geos-config
                          path)
  --with-sfcgal=ARG       Include SFCGAL support (ARG=yes, no or sfcgal-config
                          path)
  --with-qhull=ARG     Include QHull support (ARG=no, yes, internal)
  --with-opencl=ARG       Include OpenCL (GPU) support
  --with-opencl-include=ARG OpenCL Include directory (with a CL subdirectory)
  --with-opencl-lib=ARG   OpenCL Link Flags (i.e. -L/xxx -lOpenCL)
  --with-freexl=ARG    Include freexl support (ARG=no, yes (default) or libfreexl install path)
  --with-libjson-c=ARG       Include libjson-c support (ARG=internal or libjson-c directory)
  --without-pam         Disable PAM (.aux.xml) support
  --with-poppler=ARG    Include poppler(for PDF) support (ARG=no(default), yes or poppler install path)
  --with-podofo=ARG    Include podofo(for PDF) support (ARG=no(default), yes or podofo install path)
  --with-podofo-lib=ARG   podofo Link Flags (i.e. -L/xxx -lpodofo ...). Mainly for static libpodofo
  --with-podofo-extra-lib-for-test=ARG   Additional libraries to pass the detection test, but not used for libgdal linking (i.e. -ljpeg ...). Mainly for static libpodofo
  --with-pdfium=ARG    Include pdfium (for PDF) support (ARG=no(default), yes or pdfium install path)
  --with-pdfium-lib=ARG   pdfium Link Flags (i.e. -L/xxx -lpdfium ...). Mainly for static libpdfium
  --with-pdfium-extra-lib-for-test=ARG   Additional libraries to pass the detection test, but not used for libgdal linking (i.e. -ljpeg ...). Mainly for static libpdfium
  --with-proj=ARG Compile with PROJ.x (ARG=no or path)
  --with-proj5-api=ARG Allow using PROJ.5 new API  (ARG=no/yes, default to yes)
  --with-static-proj4=ARG Compile with PROJ.4 statically (deprecated, use --with-proj instead) (ARG=no or path)
  --with-gdal-ver=ARG   Override GDAL version
  --with-macosx-framework         Build and install GDAL as a Mac OS X Framework
  --with-perl           Enable perl bindings
  --with-python=ARG   Enable python bindings (ARG=yes, no, or path to python binary)
  --with-java       Include Java support (ARG=yes, no or JDK home path)  [default=no]
  --with-hdfs=ARG        Include HDFS support (ARG=Path or no)
  --with-mdb       Include MDB driver
  --with-jvm-lib=ARG        ARG is dlopen or points to Java libjvm path
  --with-jvm-lib-add-rpath    Add the libjvm path to the RPATH (no by default)
  --with-rasdaman=DIR        Include rasdaman support (DIR is rasdaman's install dir).
  --with-armadillo=ARG       Include Armadillo support for faster TPS transform computation (ARG=yes/no/path to armadillo install root) [default=no]
  --with-cryptopp=ARG       Include cryptopp support (ARG=yes, no or path)
  --with-crypto=ARG       Include crypto (from openssl) support (ARG=yes, no or path)
  --without-mrf           Disable MRF driver
  --without-lerc          Disable LERC library
  --with-null             Enable NULL driver (only useful for development
                          purposes

Some influential environment variables:
  CC          C compiler command
  CFLAGS      C compiler flags
  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
              nonstandard directory <lib dir>
  LIBS        libraries to pass to the linker, e.g. -l<library>
  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
              you have headers in a nonstandard directory <include dir>
  CXX         C++ compiler command
  CXXFLAGS    C++ compiler flags
  LT_SYS_LIBRARY_PATH
              User-defined run-time library search path.
  CPP         C preprocessor
  CXXCPP      C++ preprocessor
  PKG_CONFIG  path to pkg-config utility
  OGDI_CFLAGS C compiler flags for OGDI, overriding pkg-config
  OGDI_LIBS   linker flags for OGDI, overriding pkg-config
  HDF5_CFLAGS C compiler flags for HDF5, overriding pkg-config
  HDF5_LIBS   linker flags for HDF5, overriding pkg-config
  OPENJPEG_CFLAGS
              C compiler flags for OPENJPEG, overriding pkg-config
  OPENJPEG_LIBS
              linker flags for OPENJPEG, overriding pkg-config
  LIBKML_CFLAGS
              C compiler flags for LIBKML, overriding pkg-config
  LIBKML_LIBS linker flags for LIBKML, overriding pkg-config
  POPPLER_CFLAGS
              C compiler flags for POPPLER, overriding pkg-config
  POPPLER_LIBS
              linker flags for POPPLER, overriding pkg-config

Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.

Finally, I think we should break the build of the port on linux completly instead of allowing this mess.

Metadata

Metadata

Labels

category:port-bugThe issue is with a library, which is something the port should already support

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions