1 #
   2 # Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
   3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4 #
   5 # This code is free software; you can redistribute it and/or modify it
   6 # under the terms of the GNU General Public License version 2 only, as
   7 # published by the Free Software Foundation.  Oracle designates this
   8 # particular file as subject to the "Classpath" exception as provided
   9 # by Oracle in the LICENSE file that accompanied this code.
  10 #
  11 # This code is distributed in the hope that it will be useful, but WITHOUT
  12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13 # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14 # version 2 for more details (a copy is included in the LICENSE file that
  15 # accompanied this code).
  16 #
  17 # You should have received a copy of the GNU General Public License version
  18 # 2 along with this work; if not, write to the Free Software Foundation,
  19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20 #
  21 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22 # or visit www.oracle.com if you need additional information or have any
  23 # questions.
  24 #
  25 
  26 # Major library component reside in separate files.
  27 m4_include([lib-alsa.m4])
  28 m4_include([lib-bundled.m4])
  29 m4_include([lib-cups.m4])
  30 m4_include([lib-ffi.m4])
  31 m4_include([lib-freetype.m4])
  32 m4_include([lib-std.m4])
  33 m4_include([lib-x11.m4])
  34 m4_include([lib-fontconfig.m4])
  35 m4_include([lib-tests.m4])
  36 
  37 ################################################################################
  38 # Determine which libraries are needed for this configuration
  39 ################################################################################
  40 AC_DEFUN_ONCE([LIB_DETERMINE_DEPENDENCIES],
  41 [
  42   # Check if X11 is needed
  43   if test "x$OPENJDK_TARGET_OS" = xwindows || test "x$OPENJDK_TARGET_OS" = xmacosx; then
  44     # No X11 support on windows or macosx
  45     NEEDS_LIB_X11=false
  46   else
  47     # All other instances need X11, even if building headless only, libawt still
  48     # needs X11 headers.
  49     NEEDS_LIB_X11=true
  50   fi
  51 
  52   # Check if fontconfig is needed
  53   if test "x$OPENJDK_TARGET_OS" = xwindows || test "x$OPENJDK_TARGET_OS" = xmacosx; then
  54     # No fontconfig support on windows or macosx
  55     NEEDS_LIB_FONTCONFIG=false
  56   else
  57     # All other instances need fontconfig, even if building headless only,
  58     # libawt still needs fontconfig headers.
  59     NEEDS_LIB_FONTCONFIG=true
  60   fi
  61 
  62   # Check if cups is needed
  63   if test "x$OPENJDK_TARGET_OS" = xwindows; then
  64     # Windows have a separate print system
  65     NEEDS_LIB_CUPS=false
  66   else
  67     NEEDS_LIB_CUPS=true
  68   fi
  69 
  70   # A custom hook may have set this already
  71   if test "x$NEEDS_LIB_FREETYPE" = "x"; then
  72     NEEDS_LIB_FREETYPE=true
  73   fi
  74 
  75   # Check if alsa is needed
  76   if test "x$OPENJDK_TARGET_OS" = xlinux; then
  77     NEEDS_LIB_ALSA=true
  78   else
  79     NEEDS_LIB_ALSA=false
  80   fi
  81 
  82   # Check if ffi is needed
  83   if HOTSPOT_CHECK_JVM_VARIANT(zero); then
  84     NEEDS_LIB_FFI=true
  85   else
  86     NEEDS_LIB_FFI=false
  87   fi
  88 ])
  89 
  90 ################################################################################
  91 # Parse library options, and setup needed libraries
  92 ################################################################################
  93 AC_DEFUN_ONCE([LIB_SETUP_LIBRARIES],
  94 [
  95   LIB_SETUP_STD_LIBS
  96   LIB_SETUP_X11
  97   LIB_SETUP_CUPS
  98   LIB_SETUP_FONTCONFIG
  99   LIB_SETUP_FREETYPE
 100   LIB_SETUP_ALSA
 101   LIB_SETUP_LIBFFI
 102   LIB_SETUP_BUNDLED_LIBS
 103   LIB_SETUP_MISC_LIBS
 104   LIB_TESTS_SETUP_GRAALUNIT
 105 
 106   GLOBAL_LIBS=""
 107 
 108   BASIC_JDKLIB_LIBS=""
 109   if test "x$TOOLCHAIN_TYPE" != xmicrosoft; then
 110     BASIC_JDKLIB_LIBS="-ljava -ljvm"
 111   fi
 112 
 113   # Math library
 114   BASIC_JVM_LIBS="$LIBM"
 115 
 116   # Dynamic loading library
 117   if test "x$OPENJDK_TARGET_OS" = xlinux || test "x$OPENJDK_TARGET_OS" = xaix; then
 118     BASIC_JVM_LIBS="$BASIC_JVM_LIBS $LIBDL"
 119   fi
 120 
 121   # Threading library
 122   if test "x$OPENJDK_TARGET_OS" = xlinux || test "x$OPENJDK_TARGET_OS" = xaix; then
 123     BASIC_JVM_LIBS="$BASIC_JVM_LIBS -lpthread"
 124   fi
 125 
 126   # perfstat lib
 127   if test "x$OPENJDK_TARGET_OS" = xaix; then
 128     BASIC_JVM_LIBS="$BASIC_JVM_LIBS -lperfstat"
 129   fi
 130 
 131   if test "x$OPENJDK_TARGET_OS" = xwindows; then
 132     BASIC_JVM_LIBS="$BASIC_JVM_LIBS kernel32.lib user32.lib gdi32.lib winspool.lib \
 133         comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib \
 134         wsock32.lib winmm.lib version.lib psapi.lib"
 135   fi
 136 
 137   JDKLIB_LIBS="$BASIC_JDKLIB_LIBS"
 138   JDKEXE_LIBS=""
 139   JVM_LIBS="$BASIC_JVM_LIBS"
 140   OPENJDK_BUILD_JDKLIB_LIBS="$BASIC_JDKLIB_LIBS"
 141   OPENJDK_BUILD_JVM_LIBS="$BASIC_JVM_LIBS"
 142 
 143   AC_SUBST(JDKLIB_LIBS)
 144   AC_SUBST(JDKEXE_LIBS)
 145   AC_SUBST(JVM_LIBS)
 146   AC_SUBST(OPENJDK_BUILD_JDKLIB_LIBS)
 147   AC_SUBST(OPENJDK_BUILD_JVM_LIBS)
 148   AC_SUBST(GLOBAL_LIBS)
 149 ])
 150 
 151 ################################################################################
 152 # Setup various libraries, typically small system libraries
 153 ################################################################################
 154 AC_DEFUN_ONCE([LIB_SETUP_MISC_LIBS],
 155 [
 156   # Setup libm (the maths library)
 157   if test "x$OPENJDK_TARGET_OS" != "xwindows"; then
 158     AC_CHECK_LIB(m, cos, [], [
 159         AC_MSG_NOTICE([Maths library was not found])
 160     ])
 161     LIBM="-lm"
 162   else
 163     LIBM=""
 164   fi
 165   AC_SUBST(LIBM)
 166 
 167   # Setup libdl (for dynamic library loading)
 168   save_LIBS="$LIBS"
 169   LIBS=""
 170   AC_CHECK_LIB(dl, dlopen)
 171   LIBDL="$LIBS"
 172   AC_SUBST(LIBDL)
 173   LIBS="$save_LIBS"
 174 
 175   # Control if libzip can use mmap. Available for purposes of overriding.
 176   LIBZIP_CAN_USE_MMAP=true
 177   AC_SUBST(LIBZIP_CAN_USE_MMAP)
 178 ])