configure.ac revision 3d05230f
1ed6f5d66Smrgdnl 2ed6f5d66Smrgdnl Copyright © 2013 Keith Packard 3ed6f5d66Smrgdnl 4ed6f5d66Smrgdnl Permission to use, copy, modify, distribute, and sell this software and its 5ed6f5d66Smrgdnl documentation for any purpose is hereby granted without fee, provided that 6ed6f5d66Smrgdnl the above copyright notice appear in all copies and that both that copyright 7ed6f5d66Smrgdnl notice and this permission notice appear in supporting documentation, and 8ed6f5d66Smrgdnl that the name of the copyright holders not be used in advertising or 9ed6f5d66Smrgdnl publicity pertaining to distribution of the software without specific, 10ed6f5d66Smrgdnl written prior permission. The copyright holders make no representations 11ed6f5d66Smrgdnl about the suitability of this software for any purpose. It is provided "as 12ed6f5d66Smrgdnl is" without express or implied warranty. 13ed6f5d66Smrgdnl 14ed6f5d66Smrgdnl THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 15ed6f5d66Smrgdnl INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO 16ed6f5d66Smrgdnl EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR 17ed6f5d66Smrgdnl CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 18ed6f5d66Smrgdnl DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 19ed6f5d66Smrgdnl TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 20ed6f5d66Smrgdnl OF THIS SOFTWARE. 21ed6f5d66Smrgdnl 22ed6f5d66Smrgdnl 23ed6f5d66Smrgdnl Process this file with autoconf to create configure. 24ed6f5d66Smrg 25ed6f5d66SmrgAC_PREREQ([2.60]) 263d05230fSmrgAC_INIT([libxshmfence], [1.3.1], 273d05230fSmrg [https://gitlab.freedesktop.org/xorg/lib/libxshmfence/-/issues], 283d05230fSmrg [libxshmfence]) 29ed6f5d66SmrgAC_CONFIG_SRCDIR([Makefile.am]) 30ed6f5d66SmrgAC_CONFIG_HEADERS([config.h]) 31ed6f5d66Smrg 32fbc03982SmrgAC_USE_SYSTEM_EXTENSIONS 33fbc03982Smrg 34ed6f5d66Smrg# Initialize Automake 353d05230fSmrgAM_INIT_AUTOMAKE([foreign dist-xz]) 36ed6f5d66Smrg 37ed6f5d66Smrg# Initialize libtool 38ed6f5d66SmrgAC_PROG_LIBTOOL 39ed6f5d66Smrg 40ed6f5d66Smrg# Require xorg-macros: XORG_DEFAULT_OPTIONS, XORG_WITH_LINT 41ed6f5d66Smrgm4_ifndef([XORG_MACROS_VERSION], 42ed6f5d66Smrg [m4_fatal([must install xorg-macros 1.3 or later before running autoconf/autogen])]) 43ed6f5d66SmrgXORG_MACROS_VERSION(1.3) 44ed6f5d66SmrgXORG_DEFAULT_OPTIONS 45ed6f5d66Smrg 46ed6f5d66Smrgdnl Allow checking code with lint, sparse, etc. 47ed6f5d66SmrgXORG_WITH_LINT 48ed6f5d66SmrgLINT_FLAGS="${LINT_FLAGS} ${FONTENC_CFLAGS}" 49ed6f5d66Smrg 50ed6f5d66Smrg 51ed6f5d66Smrgdnl 523d05230fSmrgdnl Locate a suitable tmp file system for creating shared memory files 53ed6f5d66Smrgdnl 54ed6f5d66Smrg 55ed6f5d66SmrgAC_ARG_ENABLE(futex, AS_HELP_STRING([--enable-futex], [Enable futexes (default: auto)]), 56ed6f5d66Smrg [FUTEX=$enableval], [FUTEX=auto]) 57ed6f5d66Smrg 58ed6f5d66Smrgif test "x$FUTEX" = "xauto"; then 59ed6f5d66Smrg AC_CHECK_HEADER([linux/futex.h], [FUTEX=yes]) 60ed6f5d66Smrgfi 61ed6f5d66Smrg 62ed6f5d66Smrgif test "x$FUTEX" = "xauto"; then 63ed6f5d66Smrg AC_CHECK_HEADER([sys/umtx.h], [FUTEX=yes], [FUTEX=no], 64ed6f5d66Smrg [#include <errno.h> 65ed6f5d66Smrg #include <sys/types.h>]) 66ed6f5d66Smrg if test "x$FUTEX" = "xyes"; then 67ed6f5d66Smrg AC_DEFINE(HAVE_UMTX, 1, [Use umtx]) 68ed6f5d66Smrg fi 69ed6f5d66Smrgfi 70ed6f5d66Smrg 71ed6f5d66Smrgif test "x$FUTEX" = "xyes"; then 72ed6f5d66Smrg PTHREAD=no 73ed6f5d66Smrg AC_DEFINE(HAVE_FUTEX,1,[Use futexes]) 74ed6f5d66Smrgelse 75ed6f5d66Smrg PTHREAD=yes 76ed6f5d66Smrg AC_DEFINE(HAVE_PTHREAD,1,[Use pthread primitives]) 77ed6f5d66Smrgfi 78ed6f5d66Smrg 79ed6f5d66SmrgPTHREAD_LIBS= 80ed6f5d66Smrgif test "x$PTHREAD" = "xyes"; then 81ed6f5d66Smrg AC_CHECK_LIB(pthread,pthread_create,[PTHREAD_LIBS=-lpthread],[PTHREAD_LIBS=]) 82ed6f5d66Smrgfi 83ed6f5d66Smrg 84ed6f5d66SmrgAC_SUBST([PTHREAD_LIBS]) 85ed6f5d66Smrg 86ed6f5d66SmrgAM_CONDITIONAL([FUTEX], [test x"$FUTEX" = xyes]) 87ed6f5d66SmrgAM_CONDITIONAL([PTHREAD], [test x"$PTHREAD" = xyes]) 88ed6f5d66Smrg 89ed6f5d66SmrgPKG_CHECK_MODULES(XPROTO, xproto) 90ed6f5d66Smrg 91ed6f5d66SmrgAC_SUBST([XPROTO_CFLAGS]) 92ed6f5d66Smrg 93ed6f5d66SmrgCFLAGS="$CFLAGS $XPROTO_CFLAGS" 94ed6f5d66Smrg 953d05230fSmrgAC_CHECK_FUNCS(memfd_create mkostemp) 96ed6f5d66Smrg 97ed6f5d66SmrgAC_CHECK_DECLS([__NR_memfd_create], [], [], [[#include <asm/unistd.h>]]) 98ed6f5d66Smrg 99ed6f5d66SmrgAC_CHECK_HEADERS([sys/memfd.h], [AC_DEFINE([HAVE_MEMFD_H], 1, [Has sys/memfd.h header])]) 100ed6f5d66Smrg 101ed6f5d66SmrgAC_ARG_ENABLE(visibility, AC_HELP_STRING([--enable-visibility], [Enable symbol visibility (default: auto)]), 102ed6f5d66Smrg [SYMBOL_VISIBILITY=$enableval], 103ed6f5d66Smrg [SYMBOL_VISIBILITY=auto]) 104ed6f5d66Smrg 105ed6f5d66Smrgdnl ================================================================== 106ed6f5d66Smrgdnl symbol visibility 107ed6f5d66Smrgsymbol_visibility= 108ed6f5d66Smrghave_visibility=disabled 109ed6f5d66Smrgif test x$SYMBOL_VISIBILITY != xno; then 110ed6f5d66Smrg AC_MSG_CHECKING(for symbol visibility support) 111ed6f5d66Smrg if test x$GCC = xyes; then 112ed6f5d66Smrg VISIBILITY_CFLAGS="-fvisibility=hidden" 113ed6f5d66Smrg else 114ed6f5d66Smrg if test x$SUNCC = xyes; then 115ed6f5d66Smrg VISIBILITY_CFLAGS="-xldscope=hidden" 116ed6f5d66Smrg else 117ed6f5d66Smrg have_visibility=no 118ed6f5d66Smrg fi 119ed6f5d66Smrg fi 120ed6f5d66Smrg if test x$have_visibility != xno; then 121ed6f5d66Smrg AC_TRY_COMPILE( 122ed6f5d66Smrg [#include <X11/Xfuncproto.h> 123ed6f5d66Smrg extern _X_HIDDEN int hidden_int; 124ed6f5d66Smrg extern _X_EXPORT int public_int; 125ed6f5d66Smrg extern _X_HIDDEN int hidden_int_func(void); 126ed6f5d66Smrg extern _X_EXPORT int public_int_func(void);], 127ed6f5d66Smrg [], 128ed6f5d66Smrg have_visibility=yes, 129ed6f5d66Smrg have_visibility=no) 130ed6f5d66Smrg fi 131ed6f5d66Smrg AC_MSG_RESULT([$have_visibility]) 132ed6f5d66Smrg if test x$have_visibility != xno; then 133ed6f5d66Smrg symbol_visibility=$VISIBILITY_CFLAGS 134ed6f5d66Smrg CFLAGS="$CFLAGS $VISIBILITY_CFLAGS" 135ed6f5d66Smrg fi 136ed6f5d66Smrgfi 137ed6f5d66Smrg 138ed6f5d66SmrgAC_ARG_WITH(shared-memory-dir, AS_HELP_STRING([--with-shared-memory-dir=PATH], [Path to directory in a world-writable temporary directory for anonymous shared memory (default: auto)]), 139ed6f5d66Smrg[], 140ed6f5d66Smrg[with_shared_memory_dir=yes]) 141ed6f5d66Smrg 142ed6f5d66Smrgshmdirs="/run/shm /dev/shm /var/tmp /tmp" 143ed6f5d66Smrg 144ed6f5d66Smrgcase x"$with_shared_memory_dir" in 145ed6f5d66Smrgxyes) 146ed6f5d66Smrg for dir in $shmdirs; do 147ed6f5d66Smrg case x"$with_shared_memory_dir" in 148ed6f5d66Smrg xyes) 149ed6f5d66Smrg echo Checking temp dir "$dir" 150ed6f5d66Smrg if test -d "$dir"; then 151ed6f5d66Smrg with_shared_memory_dir="$dir" 152ed6f5d66Smrg fi 153ed6f5d66Smrg ;; 154ed6f5d66Smrg esac 155ed6f5d66Smrg done 156ed6f5d66Smrg ;; 157ed6f5d66Smrgx/*) 158ed6f5d66Smrg ;; 159ed6f5d66Smrgxno) 160ed6f5d66Smrg ;; 161ed6f5d66Smrg*) 162ed6f5d66Smrg AC_MSG_ERROR([Invalid directory specified for --with-shared-memory-dir: $with_shared_memory_dir]) 163ed6f5d66Smrg ;; 164ed6f5d66Smrgesac 165ed6f5d66Smrg 166ed6f5d66Smrgcase x"$with_shared_memory_dir" in 167ed6f5d66Smrgxyes) 168ed6f5d66Smrg AC_MSG_ERROR([No directory found for shared memory temp files.]) 169ed6f5d66Smrg ;; 170ed6f5d66Smrgxno) 171ed6f5d66Smrg ;; 172ed6f5d66Smrg*) 173ed6f5d66Smrg AC_DEFINE_UNQUOTED(SHMDIR, ["$with_shared_memory_dir"], [Directory for shared memory temp files]) 174ed6f5d66Smrg ;; 175ed6f5d66Smrgesac 176ed6f5d66Smrg 177ed6f5d66SmrgAC_CONFIG_FILES([Makefile 178ed6f5d66Smrg src/Makefile 179ed6f5d66Smrg test/Makefile 180ed6f5d66Smrg xshmfence.pc]) 181ed6f5d66SmrgAC_OUTPUT 182