# autoconf template for the configure script AC_INIT LT_INIT AC_CONFIG_MACRO_DIR([m4]) AC_CANONICAL_SYSTEM #Override the OBJC variable if it is empty and CC is also set. if test -n ""; then if test -z "$OBJC"; then OBJC="$CC" fi fi AC_PROG_CC(clang gcc cc c1 egcs) AC_PROG_CC_C99 AC_PROG_CPP AC_PROG_OBJC(clang gcc objcc objc cc CC) AX_GCC_FUNC_ATTRIBUTE(visibility) if test "$ax_cv_have_func_attribute_visibility" = "yes"; then HAVE_FUNC_ATTRIBUTE_VISIBILITY=1 else HAVE_FUNC_ATTRIBUTE_VISIBILITY=0 fi 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) #-------------------------------------------------------------------- # Check for libdbus #-------------------------------------------------------------------- PKG_CHECK_MODULES(DBUS, dbus-1, HAVE_DBUS=1, HAVE_DBUS=0) AC_SUBST(DBUS_CFLAGS) AC_SUBST(DBUS_LIBS) WARN_FLAGS="-Wall" if test "$HAVE_DBUS" = "0"; then AC_MSG_ERROR(DBusKit requires libdbus.) fi saved_CFLAGS="$CFLAGS" saved_CPPFLAGS="$CPPFLAGS" CFLAGS="$CFLAGS $DBUS_CFLAGS" CPPFLAGS="$CPPFLAGS -Werror $DBUS_CFLAGS" AC_CHECK_HEADERS(dbus/dbus.h,have_dbus_h=yes,have_dbus_h=no) if test "$have_dbus_h" = "no"; then AC_MSG_ERROR(pkg-config claims that libdbus is available but DBusKit is unable to use it.) fi CFLAGS="$saved_CFLAGS" CPPFLAGS="$saved_CPPFLAGS" 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) HAVE_LIBCLANG=0 AC_ARG_ENABLE(libclang, [ --disable-libclang Disable use of libclang.],,) if test "$enable_libclang" != "no"; then AC_CHECK_HEADERS("clang-c/Index.h") if test "$ac_cv_header_clang_c_Index_h" = "yes"; then AC_CHECK_LIB(clang, clang_Cursor_getArgument) if test "$ac_cv_lib_clang_clang_Cursor_getArgument" = "yes"; then HAVE_LIBCLANG=1; MORE_LIBS="$MORE_LIBS -lclang" fi fi if test "$HAVE_LIBCLANG" = "0"; then AC_MSG_WARN([Could not find a usable libclang. Please install libclang to enable advanced DBusKit features.]) fi fi AC_SUBST(HAVE_LIBCLANG) AC_ARG_ENABLE(global-menu-bundle, [ --disable-global-menu-bundle Disable building the global menu bundle.],,) if test "$enable_global_menu_bundle" != "no"; then HAVE_GUI=0; AC_CHECK_LIB(gnustep-gui, NSApplicationMain) if test "$ac_cv_lib_gnustep_gui_NSApplicationMain" = "yes"; then HAVE_GUI=1; BUILD_GLOBAL_MENU_BUNDLE=1; fi if test "$HAVE_GUI" = "0"; then if test "$enable_global_menu_bundle" = "yes"; then AC_MSG_ERROR([Could not find gnustep-gui, required for building the global menu bundle]); else AC_MSG_WARN([Could not find a useable gnustep-gui. Please install gnustep-gui to build global menu bundle]); BUILD_GLOBAL_MENU_BUNDLE=0; fi fi else BUILD_GLOBAL_MENU_BUNDLE=0; fi AC_SUBST(BUILD_GLOBAL_MENU_BUNDLE) AC_ARG_WITH(base-makefile, [ --with-base-makefile=PATH path base.make], BASE_MAKEFILE="$withval", BASE_MAKEFILE="") AC_SUBST(BASE_MAKEFILE) AC_ARG_ENABLE(notification-bundle, [ --disable-notification-bundle Disable building the user notification bundle.],,) if test "$enable_notification_bundle" != "no"; then AC_MSG_CHECKING(for automatic property synthesis) AC_TRY_COMPILE([], [ #if __has_feature(objc_default_synthesize_properties) return 0; #else # error "No default property synthesis" #endif ], HAVE_DEFAULT_SYNTHESIZE_PROPERTIES=yes, HAVE_DEFAULT_SYNTHESIZE_PROPERTIES=no); AC_MSG_RESULT($HAVE_DEFAULT_SYNTHESIZE_PROPERTIES) if test $HAVE_DEFAULT_SYNTHESIZE_PROPERTIES = 'yes'; then BUILD_NOTIFICATION_BUNDLE=1; else if test "$enable_notification_bundle" = "yes"; then AC_MSG_ERROR([Your compiler does not support automatic property synthesis. Please use a recent version of clang]); else AC_MSG_WARN([Your compiler does not support automatic property synthesis. Not building notification bundle]); BUILD_NOTIFICATION_BUNDLE=0; fi fi else BUILD_NOTIFICATION_BUNDLE=0; fi AC_SUBST(BUILD_NOTIFICATION_BUNDLE) # Setup variables for Objective-C tests: 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_CHECK_HEADERS([objc/encoding.h], [have_objc_encoding_h=yes], [have_objc_encoding_h=no], [#ifdef HAVE_OBJC_RUNTIME_H #include #else # ifdef HAVE_OBJECTIVEC2_RUNTIME_H # include # endif #endif ]) if test "$have_objc_encoding_h" = "yes"; then HAVE_OBJC_ENCODING_H=1 else HAVE_OBJC_ENCODING_H=0 fi CPPFLAGS="$saved_CPPFLAGS" # We also need to set the libs because the order does sometimes matter. LIBS=`gnustep-config --objc-libs` AC_CHECK_FUNCS(sel_getType_np, [have_sel_getType_np=yes], [have_sel_getType_np=no; AC_CHECK_FUNCS(sel_getTypeEncoding, [have_sel_getTypeEncoding=yes], [have_sel_getTypeEncoding=no]) ] ) USE_SEL_GETTYPEENCODING=0 DISABLE_TYPED_SELECTORS=0 if test "$have_sel_getType_np" = "no"; then if test "$have_sel_getTypeEncoding" = "yes"; then USE_SEL_GETTYPEENCODING=1; else DISABLE_TYPED_SELECTORS=1 fi fi C99_FLAGS=$ac_cv_prog_cc_c99 AC_SUBST(C99_FLAGS) AC_SUBST(HAVE_OBJC_ENCODING_H) AC_SUBST(OBJC_RUNTIME_H) AC_SUBST(OBJC) AC_SUBST(USE_SEL_GETTYPEENCODING) AC_SUBST(DISABLE_TYPED_SELECTORS) AC_SUBST(HAVE_FUNC_ATTRIBUTE_VISIBILITY) CFLAGS="$saved_CFLAGS" CPPFLAGS="$saved_CPPFLAGS" LDFLAGS="$saved_LDFLAGS" AC_SUBST(MORE_LIBS) AC_CONFIG_FILES([config.make Source/config.h]) AC_OUTPUT