libraries.m4 revision 2024:cc16e2a24f94
138494Sobrien#
2310490Scy# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
338494Sobrien# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
438494Sobrien#
538494Sobrien# This code is free software; you can redistribute it and/or modify it
638494Sobrien# under the terms of the GNU General Public License version 2 only, as
738494Sobrien# published by the Free Software Foundation.  Oracle designates this
838494Sobrien# particular file as subject to the "Classpath" exception as provided
938494Sobrien# by Oracle in the LICENSE file that accompanied this code.
1038494Sobrien#
1138494Sobrien# This code is distributed in the hope that it will be useful, but WITHOUT
1238494Sobrien# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
1338494Sobrien# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
1438494Sobrien# version 2 for more details (a copy is included in the LICENSE file that
1538494Sobrien# accompanied this code).
1638494Sobrien#
1738494Sobrien# You should have received a copy of the GNU General Public License version
1838494Sobrien# 2 along with this work; if not, write to the Free Software Foundation,
19310490Scy# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
2038494Sobrien#
2138494Sobrien# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2238494Sobrien# or visit www.oracle.com if you need additional information or have any
2338494Sobrien# questions.
2438494Sobrien#
2538494Sobrien
2638494Sobrien# Major library component reside in separate files.
2738494Sobrienm4_include([lib-alsa.m4])
2838494Sobrienm4_include([lib-bundled.m4])
2938494Sobrienm4_include([lib-cups.m4])
3038494Sobrienm4_include([lib-ffi.m4])
3138494Sobrienm4_include([lib-freetype.m4])
3238494Sobrienm4_include([lib-std.m4])
3338494Sobrienm4_include([lib-x11.m4])
3438494Sobrien
3538494Sobrien################################################################################
36174294Sobrien# Determine which libraries are needed for this configuration
3738494Sobrien################################################################################
3838494SobrienAC_DEFUN_ONCE([LIB_DETERMINE_DEPENDENCIES],
3938494Sobrien[
4038494Sobrien  # Check if X11 is needed
4138494Sobrien  if test "x$OPENJDK_TARGET_OS" = xwindows || test "x$OPENJDK_TARGET_OS" = xmacosx; then
4238494Sobrien    # No X11 support on windows or macosx
4338494Sobrien    NEEDS_LIB_X11=false
4438494Sobrien  else
4538494Sobrien    if test "x$SUPPORT_HEADFUL" = xno; then
4638494Sobrien      # No X11 support if building headless-only
4738494Sobrien      NEEDS_LIB_X11=false
4838494Sobrien    else
4938494Sobrien      # All other instances need X11
5038494Sobrien      NEEDS_LIB_X11=true
5138494Sobrien    fi
5238494Sobrien  fi
5338494Sobrien
5438494Sobrien  # Check if cups is needed
5538494Sobrien  if test "x$OPENJDK_TARGET_OS" = xwindows; then
5638494Sobrien    # Windows have a separate print system
5738494Sobrien    NEEDS_LIB_CUPS=false
5838494Sobrien  else
5938494Sobrien    NEEDS_LIB_CUPS=true
6038494Sobrien  fi
6138494Sobrien
6238494Sobrien  # Check if freetype is needed
6338494Sobrien  if test "x$OPENJDK" = "xtrue"; then
6438494Sobrien    NEEDS_LIB_FREETYPE=true
6538494Sobrien  else
6638494Sobrien    NEEDS_LIB_FREETYPE=false
6738494Sobrien  fi
6838494Sobrien
6938494Sobrien  # Check if alsa is needed
7038494Sobrien  if test "x$OPENJDK_TARGET_OS" = xlinux; then
7138494Sobrien    NEEDS_LIB_ALSA=true
7238494Sobrien  else
7338494Sobrien    NEEDS_LIB_ALSA=false
7438494Sobrien  fi
7538494Sobrien
7638494Sobrien  # Check if ffi is needed
7738494Sobrien  if HOTSPOT_CHECK_JVM_VARIANT(zero) || HOTSPOT_CHECK_JVM_VARIANT(zeroshark); then
7838494Sobrien    NEEDS_LIB_FFI=true
7938494Sobrien  else
8038494Sobrien    NEEDS_LIB_FFI=false
8138494Sobrien  fi
8238494Sobrien])
8338494Sobrien
8438494Sobrien################################################################################
8538494Sobrien# Parse library options, and setup needed libraries
8638494Sobrien################################################################################
8738494SobrienAC_DEFUN_ONCE([LIB_SETUP_LIBRARIES],
8838494Sobrien[
8938494Sobrien  LIB_SETUP_STD_LIBS
9038494Sobrien  LIB_SETUP_X11
9138494Sobrien  LIB_SETUP_CUPS
9238494Sobrien  LIB_SETUP_FREETYPE
9338494Sobrien  LIB_SETUP_ALSA
9438494Sobrien  LIB_SETUP_LIBFFI
95310490Scy  LIB_SETUP_LLVM
9638494Sobrien  LIB_SETUP_BUNDLED_LIBS
9738494Sobrien  LIB_SETUP_MISC_LIBS
9838494Sobrien])
9938494Sobrien
10038494Sobrien################################################################################
10138494Sobrien# Setup llvm (Low-Level VM)
10238494Sobrien################################################################################
10338494SobrienAC_DEFUN_ONCE([LIB_SETUP_LLVM],
10438494Sobrien[
10538494Sobrien  if HOTSPOT_CHECK_JVM_VARIANT(zeroshark); then
10638494Sobrien    AC_CHECK_PROG([LLVM_CONFIG], [llvm-config], [llvm-config])
10738494Sobrien
10838494Sobrien    if test "x$LLVM_CONFIG" != xllvm-config; then
10942629Sobrien      AC_MSG_ERROR([llvm-config not found in $PATH.])
11038494Sobrien    fi
11138494Sobrien
11238494Sobrien    llvm_components="jit mcjit engine nativecodegen native"
11338494Sobrien    unset LLVM_CFLAGS
11438494Sobrien    for flag in $("$LLVM_CONFIG" --cxxflags); do
11538494Sobrien      if echo "${flag}" | grep -q '^-@<:@ID@:>@'; then
11638494Sobrien        if test "${flag}" != "-D_DEBUG" ; then
11738494Sobrien          if test "${LLVM_CFLAGS}" != "" ; then
11838494Sobrien            LLVM_CFLAGS="${LLVM_CFLAGS} "
11938494Sobrien          fi
12038494Sobrien          LLVM_CFLAGS="${LLVM_CFLAGS}${flag}"
12138494Sobrien        fi
12238494Sobrien      fi
12338494Sobrien    done
12438494Sobrien    llvm_version=$("${LLVM_CONFIG}" --version | sed 's/\.//; s/svn.*//')
12538494Sobrien    LLVM_CFLAGS="${LLVM_CFLAGS} -DSHARK_LLVM_VERSION=${llvm_version}"
12638494Sobrien
12738494Sobrien    unset LLVM_LDFLAGS
12838494Sobrien    for flag in $("${LLVM_CONFIG}" --ldflags); do
12938494Sobrien      if echo "${flag}" | grep -q '^-L'; then
13038494Sobrien        if test "${LLVM_LDFLAGS}" != ""; then
13138494Sobrien          LLVM_LDFLAGS="${LLVM_LDFLAGS} "
13238494Sobrien        fi
13338494Sobrien        LLVM_LDFLAGS="${LLVM_LDFLAGS}${flag}"
13438494Sobrien      fi
13552894Sobrien    done
136310490Scy
13738494Sobrien    unset LLVM_LIBS
13838494Sobrien    for flag in $("${LLVM_CONFIG}" --libs ${llvm_components}); do
13938494Sobrien      if echo "${flag}" | grep -q '^-l'; then
14038494Sobrien        if test "${LLVM_LIBS}" != ""; then
14138494Sobrien          LLVM_LIBS="${LLVM_LIBS} "
14238494Sobrien        fi
14338494Sobrien        LLVM_LIBS="${LLVM_LIBS}${flag}"
14438494Sobrien      fi
14538494Sobrien    done
14638494Sobrien
14738494Sobrien    # Due to https://llvm.org/bugs/show_bug.cgi?id=16902, llvm does not
14838494Sobrien    # always properly detect -ltinfo
14938494Sobrien    LLVM_LIBS="${LLVM_LIBS} -ltinfo"
15038494Sobrien
15138494Sobrien    AC_SUBST(LLVM_CFLAGS)
15238494Sobrien    AC_SUBST(LLVM_LDFLAGS)
15338494Sobrien    AC_SUBST(LLVM_LIBS)
15438494Sobrien  fi
15538494Sobrien])
15651292Sobrien
15738494Sobrien################################################################################
15838494Sobrien# Setup various libraries, typically small system libraries
15938494Sobrien################################################################################
16038494SobrienAC_DEFUN_ONCE([LIB_SETUP_MISC_LIBS],
16138494Sobrien[
16238494Sobrien  # Setup libm (the maths library)
16338494Sobrien  if test "x$OPENJDK_TARGET_OS" != "xwindows"; then
16438494Sobrien    AC_CHECK_LIB(m, cos, [], [
16538494Sobrien        AC_MSG_NOTICE([Maths library was not found])
16638494Sobrien    ])
16738494Sobrien    LIBM="-lm"
16838494Sobrien  else
16938494Sobrien    LIBM=""
17038494Sobrien  fi
17138494Sobrien  AC_SUBST(LIBM)
17238494Sobrien
17338494Sobrien  # Setup libdl (for dynamic library loading)
17438494Sobrien  save_LIBS="$LIBS"
17538494Sobrien  LIBS=""
17638494Sobrien  AC_CHECK_LIB(dl, dlopen)
17738494Sobrien  LIBDL="$LIBS"
17838494Sobrien  AC_SUBST(LIBDL)
17938494Sobrien  LIBS="$save_LIBS"
18038494Sobrien
18138494Sobrien  # Deprecated libraries, keep the flags for backwards compatibility
18238494Sobrien  if test "x$OPENJDK_TARGET_OS" = "xwindows"; then
18338494Sobrien    BASIC_DEPRECATED_ARG_WITH([dxsdk])
18438494Sobrien    BASIC_DEPRECATED_ARG_WITH([dxsdk-lib])
18538494Sobrien    BASIC_DEPRECATED_ARG_WITH([dxsdk-include])
18638494Sobrien  fi
18738494Sobrien
18838494Sobrien  # Control if libzip can use mmap. Available for purposes of overriding.
18938494Sobrien  LIBZIP_CAN_USE_MMAP=true
19038494Sobrien  AC_SUBST(LIBZIP_CAN_USE_MMAP)
19138494Sobrien])
19238494Sobrien