diff --git a/G/GDAL/build_tarballs.jl b/G/GDAL/build_tarballs.jl index 485375bbbd9..32188bcfdb7 100644 --- a/G/GDAL/build_tarballs.jl +++ b/G/GDAL/build_tarballs.jl @@ -4,7 +4,7 @@ using BinaryBuilder, Pkg name = "GDAL" upstream_version = v"3.5.1" -version_offset = v"0.0.0" +version_offset = v"0.0.1" version = VersionNumber(upstream_version.major * 100 + version_offset.major, upstream_version.minor * 100 + version_offset.minor, upstream_version.patch * 100 + version_offset.patch) @@ -13,74 +13,42 @@ version = VersionNumber(upstream_version.major * 100 + version_offset.major, sources = [ ArchiveSource("https://github.com/OSGeo/gdal/releases/download/v$upstream_version/gdal-$upstream_version.tar.gz", "7c4406ca010dc8632703a0a326f39e9db25d9f1f6ebaaeca64a963e3fac123d1"), - DirectorySource("./bundled"), ] # Bash recipe for building across all platforms script = raw""" cd $WORKSPACE/srcdir/gdal-*/ +mkdir build +cd build -if [[ ${target} == *mingw* ]]; then - export LDFLAGS="-L${libdir}" - # Apply patch to customise PROJ library - atomic_patch -p1 "$WORKSPACE/srcdir/patches/configure_ac_proj_libs.patch" - autoreconf -vi - export PROJ_LIBS="proj_9_1" -elif [[ "${target}" == *-linux-* ]]; then - # Hint to find libstdc++, required to link against C++ libs when using C compiler - if [[ "${nbits}" == 32 ]]; then - export CFLAGS="-Wl,-rpath-link,/opt/${target}/${target}/lib" - else - export CFLAGS="-Wl,-rpath-link,/opt/${target}/${target}/lib64" - fi - # Use same flags also for GEOS - atomic_patch -p1 "$WORKSPACE/srcdir/patches/geos-m4-extra-cflags.patch" - export EXTRA_GEOS_CFLAGS="${CFLAGS}" - if [[ "${target}" == powerpc64le-* ]]; then - atomic_patch -p1 "$WORKSPACE/srcdir/patches/sqlite3-m4-extra-libs.patch" - export EXTRA_GEOS_LIBS="${EXTRA_GEOS_LIBS} -lm" - export EXTRA_SQLITE3_LIBS="-lm" - # libpthread and libldl are needed for libgdal, so let's always use them - export LDFLAGS="$LDFLAGS -lpthread -ldl" - fi - autoreconf -vi +if [[ "${target}" == *-freebsd* ]]; then + # Our FreeBSD libc has `environ` as undefined symbol, so the linker will + # complain if this symbol is used in the built library, even if this won't + # be a problem at runtime. This flag allows having undefined symbols. + export LDFLAGS="-undefined" fi -# same fix as used for PROJ -if [[ "${target}" == x86_64-linux-musl* ]]; then - export LDFLAGS="$LDFLAGS -lcurl" -fi - -# Clear out `.la` files since they're often wrong and screw us up -rm -f ${prefix}/lib/*.la - -# Read the options in the log file -./configure --help - -./configure --prefix=${prefix} --build=${MACHTYPE} --host=${target} \ - --with-geos=${bindir}/geos-config \ - --with-proj=$prefix \ - --with-tiff=$prefix \ - --with-geotiff=$prefix \ - --with-libz=$prefix \ - --with-expat=$prefix \ - --with-zstd=$prefix \ - --with-sqlite3=$prefix \ - --with-curl=${bindir}/curl-config \ - --with-openjpeg \ - --with-python=no \ - --enable-shared \ - --disable-static - -# Make sure that some important libraries are found -grep "HAVE_GEOS='yes'" config.log -grep "HAVE_SQLITE='yes'" config.log -grep "CURL_SETTING='yes'" config.log -grep "ZSTD_SETTING='yes'" config.log -grep "HAVE_EXPAT='yes'" config.log +cmake -DCMAKE_INSTALL_PREFIX=${prefix} \ + -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TARGET_TOOLCHAIN} \ + -DCMAKE_PREFIX_PATH=${prefix} \ + -DCMAKE_FIND_ROOT_PATH=${prefix} \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_PYTHON_BINDINGS=OFF \ + -DBUILD_JAVA_BINDINGS=OFF \ + -DBUILD_CSHARP_BINDINGS=OFF \ + -DGDAL_USE_CURL=ON \ + -DGDAL_USE_EXPAT=ON \ + -DGDAL_USE_GEOTIFF=ON \ + -DGDAL_USE_GEOS=ON \ + -DGDAL_USE_OPENJPEG=ON \ + -DGDAL_USE_SQLITE3=ON \ + -DGDAL_USE_TIFF=ON \ + -DGDAL_USE_ZLIB=ON \ + -DGDAL_USE_ZSTD=ON \ + .. -make -j${nproc} -make install +cmake --build . -j${nproc} +cmake --build . -j${nproc} --target install """ # These are the platforms we will build for by default, unless further @@ -127,4 +95,4 @@ dependencies = [ # Build the tarballs, and possibly a `build.jl` as well. build_tarballs(ARGS, name, version, sources, script, platforms, products, dependencies; - julia_compat="1.6", preferred_gcc_version=v"7") + julia_compat="1.6", preferred_gcc_version=v"8") diff --git a/G/GDAL/bundled/patches/configure_ac_proj_libs.patch b/G/GDAL/bundled/patches/configure_ac_proj_libs.patch deleted file mode 100644 index ec1aab9adc5..00000000000 --- a/G/GDAL/bundled/patches/configure_ac_proj_libs.patch +++ /dev/null @@ -1,69 +0,0 @@ ---- a/configure.ac -+++ b/configure.ac -@@ -1454,15 +1454,18 @@ if test "x$with_proj" = "xno" ; then - - else - -+ if test -z "$PROJ_LIBS"; then -+ PROJ_LIBS="proj" -+ fi - if test "x$with_proj" = "xyes" -o "x$with_proj" = "x"; then - ORIG_LIBS="$LIBS" -- LIBS="-lproj $with_proj_extra_lib_for_test $ORIG_LIBS" -+ LIBS="-l$PROJ_LIBS $with_proj_extra_lib_for_test $ORIG_LIBS" - AC_LANG_PUSH([C++]) -- AC_CHECK_LIB(proj,proj_create_from_wkt,PROJ_FOUND=yes,PROJ_FOUND=no,) -+ AC_CHECK_LIB($PROJ_LIBS,proj_create_from_wkt,PROJ_FOUND=yes,PROJ_FOUND=no,) - AC_LANG_POP([C++]) - if test "$PROJ_FOUND" = "no"; then - AC_LANG_PUSH([C++]) -- AC_CHECK_LIB(proj,internal_proj_create_from_wkt,PROJ_FOUND=yes,PROJ_FOUND=no,) -+ AC_CHECK_LIB($PROJ_LIBS,internal_proj_create_from_wkt,PROJ_FOUND=yes,PROJ_FOUND=no,) - AC_LANG_POP([C++]) - if test "$PROJ_FOUND" = "yes"; then - PROJ_INCLUDE="-DPROJ_RENAME_SYMBOLS" -@@ -1488,34 +1491,34 @@ else - fi - else - ORIG_LIBS="$LIBS" -- LIBS="-L$with_proj/lib -lproj $with_proj_extra_lib_for_test $ORIG_LIBS" -+ LIBS="-L$with_proj/lib -l$PROJ_LIBS $with_proj_extra_lib_for_test $ORIG_LIBS" - AC_LANG_PUSH([C++]) -- AC_CHECK_LIB(proj,proj_create_from_wkt,PROJ_FOUND=yes,PROJ_FOUND=no,) -+ AC_CHECK_LIB($PROJ_LIBS,proj_create_from_wkt,PROJ_FOUND=yes,PROJ_FOUND=no,) - AC_LANG_POP([C++]) - if test "$PROJ_FOUND" = "no"; then -- LIBS="-L$with_proj/lib -lproj $with_proj_extra_lib_for_test $ORIG_LIBS" -+ LIBS="-L$with_proj/lib -l$PROJ_LIBS $with_proj_extra_lib_for_test $ORIG_LIBS" - unset ac_cv_lib_proj_proj_create_from_wkt - AC_LANG_PUSH([C++]) -- AC_CHECK_LIB(proj,proj_create_from_wkt,PROJ_FOUND=yes,PROJ_FOUND=no,) -+ AC_CHECK_LIB($PROJ_LIBS,proj_create_from_wkt,PROJ_FOUND=yes,PROJ_FOUND=no,) - AC_LANG_POP([C++]) - fi - if test "$PROJ_FOUND" = "no"; then -- LIBS="-L$with_proj/lib64 -lproj $with_proj_extra_lib_for_test $ORIG_LIBS" -+ LIBS="-L$with_proj/lib64 -l$PROJ_LIBS $with_proj_extra_lib_for_test $ORIG_LIBS" - unset ac_cv_lib_proj_proj_create_from_wkt - AC_LANG_PUSH([C++]) -- AC_CHECK_LIB(proj,proj_create_from_wkt,PROJ_FOUND=yes,PROJ_FOUND=no,) -+ AC_CHECK_LIB($PROJ_LIBS,proj_create_from_wkt,PROJ_FOUND=yes,PROJ_FOUND=no,) - AC_LANG_POP([C++]) - fi - if test "$PROJ_FOUND" = "no"; then -- LIBS="-L$with_proj/lib -lproj $with_proj_extra_lib_for_test $ORIG_LIBS" -+ LIBS="-L$with_proj/lib -l$PROJ_LIBS $with_proj_extra_lib_for_test $ORIG_LIBS" - AC_LANG_PUSH([C++]) -- AC_CHECK_LIB(proj,internal_proj_create_from_wkt,PROJ_FOUND=yes,PROJ_FOUND=no,) -+ AC_CHECK_LIB($PROJ_LIBS,internal_proj_create_from_wkt,PROJ_FOUND=yes,PROJ_FOUND=no,) - AC_LANG_POP([C++]) - if test "$PROJ_FOUND" = "no"; then -- LIBS="-L$with_proj/lib -lproj $with_proj_extra_lib_for_test $ORIG_LIBS" -+ LIBS="-L$with_proj/lib -l$PROJ_LIBS $with_proj_extra_lib_for_test $ORIG_LIBS" - unset ac_cv_lib_proj_internal_proj_create_from_wkt - AC_LANG_PUSH([C++]) -- AC_CHECK_LIB(proj,internal_proj_create_from_wkt,PROJ_FOUND=yes,PROJ_FOUND=no,) -+ AC_CHECK_LIB($PROJ_LIBS,internal_proj_create_from_wkt,PROJ_FOUND=yes,PROJ_FOUND=no,) - AC_LANG_POP([C++]) - fi - if test "$PROJ_FOUND" = "yes"; then diff --git a/G/GDAL/bundled/patches/geos-m4-extra-cflags.patch b/G/GDAL/bundled/patches/geos-m4-extra-cflags.patch deleted file mode 100644 index c90eade1a49..00000000000 --- a/G/GDAL/bundled/patches/geos-m4-extra-cflags.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- a/m4/geos.m4 -+++ b/m4/geos.m4 -@@ -125,7 +125,7 @@ - HAVE_GEOS="no" - - GEOS_LIBS="`${GEOS_CONFIG} --ldflags` -lgeos_c" -- GEOS_CFLAGS="`${GEOS_CONFIG} --cflags`" -+ GEOS_CFLAGS="`${GEOS_CONFIG} --cflags` ${EXTRA_GEOS_CFLAGS}" - GEOS_VERSION="`${GEOS_CONFIG} --version`" - - ax_save_LIBS="${LIBS}" -@@ -137,7 +137,7 @@ - [GEOSversion], - [HAVE_GEOS="yes"], - [HAVE_GEOS="no"], -- [] -+ [${EXTRA_GEOS_CFLAGS}] - ) - - if test x"$HAVE_GEOS" = "xno"; then diff --git a/G/GDAL/bundled/patches/sqlite3-m4-extra-libs.patch b/G/GDAL/bundled/patches/sqlite3-m4-extra-libs.patch deleted file mode 100644 index 0a7304b1896..00000000000 --- a/G/GDAL/bundled/patches/sqlite3-m4-extra-libs.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- a/m4/ax_lib_sqlite3.m4 -+++ b/m4/ax_lib_sqlite3.m4 -@@ -77,7 +77,7 @@ - unset ac_cv_lib_sqlite3_sqlite3_open - saved_LIBS="$LIBS" - LIBS="" -- AC_CHECK_LIB(sqlite3,sqlite3_open,LIB_SQLITE3_FOUND=yes,LIB_SQLITE3_FOUND=no,-L$ac_sqlite3_path/lib) -+ AC_CHECK_LIB(sqlite3,sqlite3_open,LIB_SQLITE3_FOUND=yes,LIB_SQLITE3_FOUND=no,-L$ac_sqlite3_path/lib ${EXTRA_SQLITE3_LIBS}) - LIBS="$saved_LIBS" - if test "$LIB_SQLITE3_FOUND" = "yes"; then - ac_sqlite3_ldflags="-L$ac_sqlite3_path/lib" -@@ -101,7 +101,7 @@ - unset ac_cv_lib_sqlite3_sqlite3_open - saved_LIBS="$LIBS" - LIBS="" -- AC_CHECK_LIB(sqlite3,sqlite3_open,LIB_SQLITE3_FOUND=yes,LIB_SQLITE3_FOUND=no,-L$ac_sqlite3_path_tmp/lib) -+ AC_CHECK_LIB(sqlite3,sqlite3_open,LIB_SQLITE3_FOUND=yes,LIB_SQLITE3_FOUND=no,-L$ac_sqlite3_path_tmp/lib ${EXTRA_SQLITE3_LIBS}) - LIBS="$saved_LIBS" - if test "$LIB_SQLITE3_FOUND" = "yes"; then - ac_sqlite3_ldflags="-L$ac_sqlite3_path_tmp/lib"