File: configure.ac

package info (click to toggle)
dbuskit 0.1.1-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd, stretch
  • size: 3,552 kB
  • sloc: objc: 10,309; sh: 9,443; ansic: 200; makefile: 20
file content (159 lines) | stat: -rw-r--r-- 4,979 bytes parent folder | download | duplicates (4)
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
# autoconf template for the configure script

AC_INIT
AC_CANONICAL_SYSTEM

#Override the OBJC variable if it is empty and CC is also set.
if test -n "$CC"; then
  if test -z "$OBJC"; then
    OBJC="$CC"
  fi
fi 

AC_PROG_CC(clang gcc cc c1 egcs)
AC_PROG_CPP
AC_PROG_OBJC(clang gcc objcc objc cc CC)
AC_LANG(Objective C)
PKG_PROG_PKG_CONFIG([])
AC_LANG_PUSH(C)
AC_MSG_CHECKING([whether the compiler supports atomic operations]);
  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[typedef int atomic;]],
    [[atomic x; atomic y; __sync_bool_compare_and_swap(&x, y, y + 1);]])],
  have_atomic=yes,
have_atomic=no);
  if test "$have_atomic" = "yes"; then
    AC_MSG_RESULT([yes]);
  else
      AC_MSG_RESULT([no]);
      AC_MSG_ERROR([Please use a compiler that supports atomic operations.]);
  fi
if test "$CC" = "gcc"; then
  saved_CFLAGS="$CFLAGS";
  ATOMIC_CFLAGS="";
  case "$target_cpu" in
    i586*|i686*|i786*)
      ATOMIC_CFLAGS="-march=i586";
      CFLAGS="$saved_CFLAGS $ATOMIC_CFLAGS";
  esac
  AC_MSG_CHECKING([checking whether atomic operations require an external library]);
    AC_LINK_IFELSE([AC_LANG_PROGRAM([[typedef int atomic;]],
      [[atomic x; atomic y; __sync_bool_compare_and_swap(&x, y, y + 1);]])],
    need_linkage=no,
  need_linkage=yes);

  if test "$need_linkage" = "no"; then
    AC_MSG_RESULT([no]);
  else
    AC_MSG_RESULT([yes]);
    saved_LDFLAGS="$LDFLAGS";
    LDFLAGS="$saved_LDFLAGS -lgcc";
    AC_MSG_CHECKING([checking for atomic operations from libgcc]);
      AC_LINK_IFELSE([AC_LANG_PROGRAM([[typedef int atomic;]],
        [[atomic x; atomic y; __sync_bool_compare_and_swap(&x, y, y + 1);]])],
      atomic_in_libgcc=yes,
    atomic_in_libgcc=no);
    if test "$atomic_in_libgcc" = "yes"; then
      AC_MSG_RESULT([yes]);
      MORE_LIBS="$MORE_LIBS -lgcc";
    else
      LDFLAGS="$saved_LDFLAGS";
      AC_MSG_RESULT([no]);
      AC_MSG_ERROR([Could not find library to link for atomic operations.]);
    fi
  fi     
fi
AC_LANG_POP(C)

# FIXME: We need a proper test for libobjc2 for some advanced features (e.g.
# the declared-properties - dbus-properties bridge).
# AC_CHECK_FUNCS(objc_setProperty)
# if test $ac_cv_func_objc_setProperty = yes ; then
#   HAVE_OBJC2=1
# else
#   HAVE_OBJC2=0
# fi

#--------------------------------------------------------------------
# Check for libdbus
#--------------------------------------------------------------------
PKG_CHECK_MODULES(DBUS, dbus-1, HAVE_DBUS=1, HAVE_DBUS=0)
AC_SUBST(DBUS_CFLAGS)
AC_SUBST(DBUS_LIBS)

#--------------------------------------------------------------------
# Check for -Wdeclaration-after-statement (adopted from gnustep-base) 
# TODO: Doing it this way looks really ugly because there is a bunch
#       of other tests executed before the result of the test is
#       printed.
#--------------------------------------------------------------------
AC_MSG_CHECKING(whether the compiler supports -Wdeclaration-after-statement)

saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -Wdeclaration-after-statement"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],HAS_W_DECL_AFTER_STATEMENT=yes,HAS_W_DECL_AFTER_STATEMENT=no)
CFLAGS="$saved_CFLAGS"

AC_MSG_RESULT($HAS_W_DECL_AFTER_STATEMENT)

if test x"$HAS_W_DECL_AFTER_STATEMENT" = x"yes"; then
  WARN_FLAGS="-Wall -Wdeclaration-after-statement"
else
  WARN_FLAGS="-Wall"
fi

AC_MSG_CHECKING(whether the compiler supports -Wno-deprecated-declarations)
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -Wno-deprecated-declarations"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],HAS_W_NO_DEPRECATED_DECL=yes,HAS_W_NO_DEPRECATED_DECL=no)
CFLAGS="$saved_CFLAGS"

AC_MSG_RESULT($HAS_W_NO_DEPRECATED_DECL)

if test x"$HAS_W_NO_DEPRECATED_DECL" = x"yes"; then
  WARN_FLAGS="$WARN_FLAGS -Wno-deprecated-declarations"
fi

AC_SUBST(WARN_FLAGS)
AC_SUBST(ATOMIC_CFLAGS)

# Setup variables:

saved_CFLAGS="$CFLAGS"
saved_CPPFLAGS="$CPPFLAGS$"
saved_LDFLAGS="$LDFLAGS"
GS_OBJCFLAGS=`gnustep-config --objc-flags`
CFLAGS="$CFLAGS $GS_OBJCFLAGS"
CPPFLAGS="$CPPFLAGS $GS_OBJCFLAGS"
GS_LDFLAGS=`gnustep-config --objc-libs`
LDFLAGS="$LDFLAGS $GS_LDFLAGS"



#--------------------------------------------------------------------
# Check whether we get runtime.h from libobjc2 or from the ObjectiveC2
# framework
#--------------------------------------------------------------------

CPPFLAGS="$CPPFLAGS -Werror"
AC_CHECK_HEADERS(ObjectiveC2/runtime.h,have_objectivec2_runtime_h=yes,have_objectivec2_runtime_h=no)
if test "$have_objectivec2_runtime_h" = "yes"; then
  OBJC_RUNTIME_H="ObjectiveC2/runtime.h"
else
  AC_CHECK_HEADERS(objc/runtime.h,have_libobjc2_runtime_h=yes,have_libobjc2_runtime_h=no)
  if test "$have_libobjc2_runtime_h" = "yes"; then
    OBJC_RUNTIME_H="objc/runtime.h"
  else
    AC_MSG_ERROR("could not find runtime.h. DBusKit requires gnustep-base >=1.20.")
  fi
fi

AC_SUBST(OBJC_RUNTIME_H)
AC_SUBST(OBJC)
CFLAGS="$saved_CFLAGS"
CPPFLAGS="$saved_CPPFLAGS"
LDFLAGS="$saved_LDFLAGS"

AC_SUBST(MORE_LIBS)
AC_CONFIG_FILES([config.make Source/config.h])

AC_OUTPUT