| # | |
| # Copyright (c) 2011, 2024, Oracle and/or its affiliates. All rights reserved. | |
| # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | |
| # | |
| # This code is free software; you can redistribute it and/or modify it | |
| # under the terms of the GNU General Public License version 2 only, as | |
| # published by the Free Software Foundation. Oracle designates this | |
| # particular file as subject to the "Classpath" exception as provided | |
| # by Oracle in the LICENSE file that accompanied this code. | |
| # | |
| # This code is distributed in the hope that it will be useful, but WITHOUT | |
| # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
| # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
| # version 2 for more details (a copy is included in the LICENSE file that | |
| # accompanied this code). | |
| # | |
| # You should have received a copy of the GNU General Public License version | |
| # 2 along with this work; if not, write to the Free Software Foundation, | |
| # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
| # | |
| # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA | |
| # or visit www.oracle.com if you need additional information or have any | |
| # questions. | |
| # | |
| ################################################################################ | |
| # Setup bundled libraries. | |
| # | |
| # For libjpeg, giflib, libpng, lcms2 and zlib the source is present in the | |
| # OpenJDK repository (referred to as "bundled"). Default is to use libjpeg, | |
| # giflib, libpng and lcms2 libraries as "bundled". The default for zlib is | |
| # to use the bundled zlib on Windows and AIX, otherwise the external ("system") | |
| # zlib, if present. However the libs may be replaced by an external ("system") | |
| # version by the user. | |
| ################################################################################ | |
| AC_DEFUN_ONCE([LIB_SETUP_BUNDLED_LIBS], | |
| [ | |
| LIB_SETUP_LIBJPEG | |
| LIB_SETUP_GIFLIB | |
| LIB_SETUP_LIBPNG | |
| LIB_SETUP_ZLIB | |
| LIB_SETUP_LCMS | |
| LIB_SETUP_HARFBUZZ | |
| ]) | |
| ################################################################################ | |
| # Setup libjpeg | |
| ################################################################################ | |
| AC_DEFUN_ONCE([LIB_SETUP_LIBJPEG], | |
| [ | |
| AC_ARG_WITH(libjpeg, [AS_HELP_STRING([--with-libjpeg], | |
| [use libjpeg from build system or OpenJDK source (system, bundled) @<:@bundled@:>@])]) | |
| AC_MSG_CHECKING([for which libjpeg to use]) | |
| # default is bundled | |
| DEFAULT_LIBJPEG=bundled | |
| # if user didn't specify, use DEFAULT_LIBJPEG | |
| if test "x${with_libjpeg}" = "x"; then | |
| with_libjpeg=${DEFAULT_LIBJPEG} | |
| fi | |
| AC_MSG_RESULT(${with_libjpeg}) | |
| if test "x${with_libjpeg}" = "xbundled"; then | |
| USE_EXTERNAL_LIBJPEG=false | |
| LIBJPEG_CFLAGS="" | |
| LIBJPEG_LIBS="" | |
| elif test "x${with_libjpeg}" = "xsystem"; then | |
| PKG_CHECK_MODULES(LIBJPEG, libjpeg, [LIBJPEG_FOUND=yes], [LIBJPEG_FOUND=no]) | |
| if test "x${LIBJPEG_FOUND}" = "xyes"; then | |
| # PKG_CHECK_MODULES will set LIBJPEG_CFLAGS and LIBJPEG_LIBS | |
| USE_EXTERNAL_LIBJPEG=true | |
| else | |
| AC_CHECK_HEADER(jpeglib.h, [], | |
| [ AC_MSG_ERROR([--with-libjpeg=system specified, but jpeglib.h not found!])]) | |
| AC_CHECK_LIB(jpeg, jpeg_CreateDecompress, [], | |
| [ AC_MSG_ERROR([--with-libjpeg=system specified, but no libjpeg found])]) | |
| USE_EXTERNAL_LIBJPEG=true | |
| LIBJPEG_CFLAGS="" | |
| LIBJPEG_LIBS="-ljpeg" | |
| fi | |
| else | |
| AC_MSG_ERROR([Invalid use of --with-libjpeg: ${with_libjpeg}, use 'system' or 'bundled']) | |
| fi | |
| AC_SUBST(USE_EXTERNAL_LIBJPEG) | |
| AC_SUBST(LIBJPEG_CFLAGS) | |
| AC_SUBST(LIBJPEG_LIBS) | |
| ]) | |
| ################################################################################ | |
| # Setup giflib | |
| ################################################################################ | |
| AC_DEFUN_ONCE([LIB_SETUP_GIFLIB], | |
| [ | |
| AC_ARG_WITH(giflib, [AS_HELP_STRING([--with-giflib], | |
| [use giflib from build system or OpenJDK source (system, bundled) @<:@bundled@:>@])]) | |
| AC_ARG_WITH(giflib-include, [AS_HELP_STRING([--with-giflib-include], | |
| [specify directory for the system giflib include files])]) | |
| AC_ARG_WITH(giflib-lib, [AS_HELP_STRING([--with-giflib-lib], | |
| [specify directory for the system giflib library])]) | |
| AC_MSG_CHECKING([for which giflib to use]) | |
| # default is bundled | |
| DEFAULT_GIFLIB=bundled | |
| # if user didn't specify, use DEFAULT_GIFLIB | |
| if test "x${with_giflib}" = "x"; then | |
| with_giflib=${DEFAULT_GIFLIB} | |
| fi | |
| AC_MSG_RESULT(${with_giflib}) | |
| if test "x${with_giflib}" = "xbundled"; then | |
| USE_EXTERNAL_LIBGIF=false | |
| GIFLIB_CFLAGS="" | |
| GIFLIB_LIBS="" | |
| elif test "x${with_giflib}" = "xsystem"; then | |
| GIFLIB_H_FOUND=no | |
| if test "x${with_giflib_include}" != x; then | |
| GIFLIB_CFLAGS="-I${with_giflib_include}" | |
| GIFLIB_H_FOUND=yes | |
| fi | |
| if test "x$GIFLIB_H_FOUND" = xno; then | |
| AC_CHECK_HEADER(gif_lib.h, | |
| [ | |
| GIFLIB_CFLAGS="" | |
| GIFLIB_H_FOUND=yes | |
| ]) | |
| fi | |
| if test "x$GIFLIB_H_FOUND" = xno; then | |
| AC_MSG_ERROR([--with-giflib=system specified, but gif_lib.h not found!]) | |
| fi | |
| GIFLIB_LIB_FOUND=no | |
| if test "x${with_giflib_lib}" != x; then | |
| GIFLIB_LIBS="-L${with_giflib_lib} -lgif" | |
| GIFLIB_LIB_FOUND=yes | |
| fi | |
| if test "x$GIFLIB_LIB_FOUND" = xno; then | |
| AC_CHECK_LIB(gif, DGifGetCode, | |
| [ | |
| GIFLIB_LIBS="-lgif" | |
| GIFLIB_LIB_FOUND=yes | |
| ]) | |
| fi | |
| if test "x$GIFLIB_LIB_FOUND" = xno; then | |
| AC_MSG_ERROR([--with-giflib=system specified, but no giflib found!]) | |
| fi | |
| USE_EXTERNAL_LIBGIF=true | |
| GIFLIB_LIBS=-lgif | |
| else | |
| AC_MSG_ERROR([Invalid value of --with-giflib: ${with_giflib}, use 'system' or 'bundled']) | |
| fi | |
| AC_SUBST(USE_EXTERNAL_LIBGIF) | |
| AC_SUBST(GIFLIB_CFLAGS) | |
| AC_SUBST(GIFLIB_LIBS) | |
| ]) | |
| ################################################################################ | |
| # Setup libpng | |
| ################################################################################ | |
| AC_DEFUN_ONCE([LIB_SETUP_LIBPNG], | |
| [ | |
| AC_ARG_WITH(libpng, [AS_HELP_STRING([--with-libpng], | |
| [use libpng from build system or OpenJDK source (system, bundled) @<:@bundled@:>@])]) | |
| PKG_CHECK_MODULES(PNG, libpng, [LIBPNG_FOUND=yes], [LIBPNG_FOUND=no]) | |
| AC_MSG_CHECKING([for which libpng to use]) | |
| # default is bundled | |
| DEFAULT_LIBPNG=bundled | |
| # if user didn't specify, use DEFAULT_LIBPNG | |
| if test "x${with_libpng}" = "x"; then | |
| with_libpng=${DEFAULT_LIBPNG} | |
| fi | |
| if test "x${with_libpng}" = "xbundled"; then | |
| USE_EXTERNAL_LIBPNG=false | |
| PNG_CFLAGS="" | |
| PNG_LIBS="" | |
| AC_MSG_RESULT([bundled]) | |
| elif test "x${with_libpng}" = "xsystem"; then | |
| if test "x${LIBPNG_FOUND}" = "xyes"; then | |
| # PKG_CHECK_MODULES will set PNG_CFLAGS and PNG_LIBS | |
| USE_EXTERNAL_LIBPNG=true | |
| AC_MSG_RESULT([system]) | |
| else | |
| AC_MSG_RESULT([system not found]) | |
| AC_MSG_ERROR([--with-libpng=system specified, but no libpng found!]) | |
| fi | |
| else | |
| AC_MSG_ERROR([Invalid value of --with-libpng: ${with_libpng}, use 'system' or 'bundled']) | |
| fi | |
| AC_SUBST(USE_EXTERNAL_LIBPNG) | |
| AC_SUBST(PNG_CFLAGS) | |
| AC_SUBST(PNG_LIBS) | |
| ]) | |
| ################################################################################ | |
| # Setup zlib | |
| ################################################################################ | |
| AC_DEFUN_ONCE([LIB_SETUP_ZLIB], | |
| [ | |
| AC_ARG_WITH(zlib, [AS_HELP_STRING([--with-zlib], | |
| [use zlib from build system or OpenJDK source (system, bundled) @<:@bundled@:>@])]) | |
| AC_CHECK_LIB(z, compress, | |
| [ ZLIB_FOUND=yes ], | |
| [ ZLIB_FOUND=no ]) | |
| AC_MSG_CHECKING([for which zlib to use]) | |
| DEFAULT_ZLIB=system | |
| if test "x$OPENJDK_TARGET_OS" = xwindows -o "x$OPENJDK_TARGET_OS" = xaix; then | |
| # On windows and aix default is bundled | |
| DEFAULT_ZLIB=bundled | |
| elif test "x$OPENJDK_TARGET_OS" = xmacosx -a "x$OPENJDK_TARGET_CPU" = xaarch64; then | |
| DEFAULT_ZLIB=bundled | |
| fi | |
| if test "x${ZLIB_FOUND}" != "xyes"; then | |
| # If we don't find any system...set default to bundled | |
| DEFAULT_ZLIB=bundled | |
| fi | |
| # If user didn't specify, use DEFAULT_ZLIB | |
| if test "x${with_zlib}" = "x"; then | |
| with_zlib=${DEFAULT_ZLIB} | |
| fi | |
| if test "x${with_zlib}" = "xbundled"; then | |
| USE_EXTERNAL_LIBZ=false | |
| AC_MSG_RESULT([bundled]) | |
| elif test "x${with_zlib}" = "xsystem"; then | |
| if test "x${ZLIB_FOUND}" = "xyes"; then | |
| USE_EXTERNAL_LIBZ=true | |
| AC_MSG_RESULT([system]) | |
| if test "x$USE_EXTERNAL_LIBPNG" != "xtrue"; then | |
| # If we use bundled libpng, we must verify that we have a proper zlib. | |
| # For instance zlib-ng has had issues with inflateValidate(). | |
| AC_MSG_CHECKING([for system zlib functionality]) | |
| AC_COMPILE_IFELSE( | |
| [AC_LANG_PROGRAM([#include "zlib.h"], [ | |
| #if ZLIB_VERNUM >= 0x1281 | |
| inflateValidate(NULL, 0); | |
| #endif | |
| ])], | |
| [AC_MSG_RESULT([ok])], | |
| [ | |
| AC_MSG_RESULT([not ok]) | |
| AC_MSG_ERROR([System zlib not working correctly]) | |
| ] | |
| ) | |
| fi | |
| else | |
| AC_MSG_RESULT([system not found]) | |
| AC_MSG_ERROR([--with-zlib=system specified, but no zlib found!]) | |
| fi | |
| else | |
| AC_MSG_ERROR([Invalid value for --with-zlib: ${with_zlib}, use 'system' or 'bundled']) | |
| fi | |
| LIBZ_CFLAGS="" | |
| LIBZ_LIBS="" | |
| if test "x$USE_EXTERNAL_LIBZ" = "xfalse"; then | |
| LIBZ_CFLAGS="$LIBZ_CFLAGS -I$TOPDIR/src/java.base/share/native/libzip/zlib" | |
| if test "x$OPENJDK_TARGET_OS" = xmacosx; then | |
| LIBZ_CFLAGS="$LIBZ_CFLAGS -DHAVE_UNISTD_H" | |
| fi | |
| else | |
| LIBZ_LIBS="-lz" | |
| fi | |
| AC_SUBST(USE_EXTERNAL_LIBZ) | |
| AC_SUBST(LIBZ_CFLAGS) | |
| AC_SUBST(LIBZ_LIBS) | |
| ]) | |
| ################################################################################ | |
| # Setup lcms (Little CMS) | |
| ################################################################################ | |
| AC_DEFUN_ONCE([LIB_SETUP_LCMS], | |
| [ | |
| AC_ARG_WITH(lcms, [AS_HELP_STRING([--with-lcms], | |
| [use lcms2 from build system or OpenJDK source (system, bundled) @<:@bundled@:>@])]) | |
| AC_MSG_CHECKING([for which lcms to use]) | |
| DEFAULT_LCMS=bundled | |
| # If user didn't specify, use DEFAULT_LCMS | |
| if test "x${with_lcms}" = "x"; then | |
| with_lcms=${DEFAULT_LCMS} | |
| fi | |
| if test "x${with_lcms}" = "xbundled"; then | |
| USE_EXTERNAL_LCMS=false | |
| LCMS_CFLAGS="" | |
| LCMS_LIBS="" | |
| AC_MSG_RESULT([bundled]) | |
| elif test "x${with_lcms}" = "xsystem"; then | |
| AC_MSG_RESULT([system]) | |
| PKG_CHECK_MODULES([LCMS], [lcms2], [LCMS_FOUND=yes], [LCMS_FOUND=no]) | |
| if test "x${LCMS_FOUND}" = "xyes"; then | |
| # PKG_CHECK_MODULES will set LCMS_CFLAGS and LCMS_LIBS | |
| USE_EXTERNAL_LCMS=true | |
| else | |
| AC_MSG_ERROR([--with-lcms=system specified, but no lcms found!]) | |
| fi | |
| else | |
| AC_MSG_ERROR([Invalid value for --with-lcms: ${with_lcms}, use 'system' or 'bundled']) | |
| fi | |
| AC_SUBST(USE_EXTERNAL_LCMS) | |
| AC_SUBST(LCMS_CFLAGS) | |
| AC_SUBST(LCMS_LIBS) | |
| ]) | |
| ################################################################################ | |
| # Setup harfbuzz | |
| ################################################################################ | |
| AC_DEFUN_ONCE([LIB_SETUP_HARFBUZZ], | |
| [ | |
| AC_ARG_WITH(harfbuzz, [AS_HELP_STRING([--with-harfbuzz], | |
| [use harfbuzz from build system or OpenJDK source (system, bundled) @<:@bundled@:>@])]) | |
| AC_MSG_CHECKING([for which harfbuzz to use]) | |
| DEFAULT_HARFBUZZ=bundled | |
| # If user didn't specify, use DEFAULT_HARFBUZZ | |
| if test "x${with_harfbuzz}" = "x"; then | |
| with_harfbuzz=${DEFAULT_HARFBUZZ} | |
| fi | |
| if test "x${with_harfbuzz}" = "xbundled"; then | |
| USE_EXTERNAL_HARFBUZZ=false | |
| HARFBUZZ_CFLAGS="" | |
| HARFBUZZ_LIBS="" | |
| AC_MSG_RESULT([bundled]) | |
| elif test "x${with_harfbuzz}" = "xsystem"; then | |
| AC_MSG_RESULT([system]) | |
| PKG_CHECK_MODULES([HARFBUZZ], [harfbuzz], [HARFBUZZ_FOUND=yes], [HARFBUZZ_FOUND=no]) | |
| if test "x${HARFBUZZ_FOUND}" = "xyes"; then | |
| # PKG_CHECK_MODULES will set HARFBUZZ_CFLAGS and HARFBUZZ_LIBS | |
| USE_EXTERNAL_HARFBUZZ=true | |
| else | |
| HELP_MSG_MISSING_DEPENDENCY([harfbuzz]) | |
| AC_MSG_ERROR([--with-harfbuzz=system specified, but no harfbuzz found! $HELP_MSG]) | |
| fi | |
| else | |
| AC_MSG_ERROR([Invalid value for --with-harfbuzz: ${with_harfbuzz}, use 'system' or 'bundled']) | |
| fi | |
| AC_SUBST(USE_EXTERNAL_HARFBUZZ) | |
| AC_SUBST(HARFBUZZ_CFLAGS) | |
| AC_SUBST(HARFBUZZ_LIBS) | |
| ]) |