summaryrefslogtreecommitdiff
path: root/config/gr_lib64.m4
blob: 751f774b4fc4fe6a2903f45355f176b7ab2f5829 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
dnl
dnl Copyright 2005,2008 Free Software Foundation, Inc.
dnl 
dnl This file is part of GNU Radio
dnl 
dnl GNU Radio is free software; you can redistribute it and/or modify
dnl it under the terms of the GNU General Public License as published by
dnl the Free Software Foundation; either version 3, or (at your option)
dnl any later version.
dnl 
dnl GNU Radio is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
dnl GNU General Public License for more details.
dnl 
dnl You should have received a copy of the GNU General Public License
dnl along with GNU Radio; see the file COPYING.  If not, write to
dnl the Free Software Foundation, Inc., 51 Franklin Street,
dnl Boston, MA 02110-1301, USA.
dnl 

dnl GR_LIB64()
dnl
dnl Checks to see if we're on a x86_64 or powerpc64 machine, and if so, determine
dnl if libdir should end in "64" or not.
dnl
dnl Sets gr_libdir_suffix to "" or "64" and calls AC_SUBST(gr_libdir_suffix)
dnl May append "64" to libdir.
dnl
dnl The current heuristic is:
dnl   if the host_cpu isn't x86_64 or powerpc64, then ""
dnl   if the host_os isn't linux, then ""
dnl   if we're cross-compiling, ask the linker, by way of the selected compiler
dnl   if we're x86_64 and there's a /lib64 and it's not a symlink, then "64", else ""
dnl   else ask the compiler
dnl
AC_DEFUN([GR_LIB64],[
  AC_REQUIRE([AC_CANONICAL_HOST])
  AC_REQUIRE([AC_PROG_CXX])

  AC_MSG_CHECKING([gr_libdir_suffix])
  gr_libdir_suffix=""
  AC_SUBST(gr_libdir_suffix)

  case "$host_os" in
    linux*) is_linux=yes ;;
    *)      is_linux=no  ;;
  esac

  if test "$is_linux" = no || test "$host_cpu" != "x86_64" && test "$host_cpu" != "powerpc64"; then
    gr_libdir_suffix=""
  elif test "$cross_compiling" = yes; then
    _GR_LIB64_ASK_COMPILER
  elif test "$host_cpu" = "x86_64"; then
    if test -d /lib64 && test ! -L /lib64; then
      gr_libdir_suffix=64
    fi
  else
    _GR_LIB64_ASK_COMPILER  
  fi
  AC_MSG_RESULT([$gr_libdir_suffix])


  AC_MSG_CHECKING([whether to append 64 to libdir])
  t=${libdir##*/lib}
  if test "$t" != 64 && test "$gr_libdir_suffix" = "64"; then
    libdir=${libdir}64
    AC_MSG_RESULT([yes. Setting libdir to $libdir])
  else
    AC_MSG_RESULT([no])
  fi
])

dnl If we're using g++, extract the first SEARCH_DIR("...") entry from the linker script
dnl and see if it contains a suffix after the final .../lib part of the path.
dnl (This works because the linker script varies depending on whether we're generating
dnl 32-bit or 64-bit executables)
dnl
AC_DEFUN([_GR_LIB64_ASK_COMPILER],[
  if test "$ac_cv_cxx_compiler_gnu" = "yes";
  then
    gr_libdir_suffix=`$CXX -Wl,--verbose 2>/dev/null | sed -n -e '/SEARCH_DIR/{s/;.*$//; s,^.*/,,; s/".*$//; s/^lib//; p}'`
  fi
])