From 821bf2bd7278da4e71fcdcfc03348a712cd0fc90 Mon Sep 17 00:00:00 2001 From: James Peach Date: Sun, 22 Apr 2007 03:17:31 +0000 Subject: r22441: Add automatic dependency tracking. The dependency generation is toolchain independent, but since there's no portable method for doing makefile includes, we can actually use the dependencies with GNU make. It's easy to add this for other makes, but I don't have any to test. This also moves as much m4 as possible into the m4 directory where no-one has to look at it. AFAICT, there's no way to hide depcomp in there too, which is unfortunate. (This used to be commit aa14900f8291a017aa7fab2bbb9a6c79b12889b2) --- source3/Makefile.in | 41 ++- source3/aclocal.m4 | 796 ------------------------------------------- source3/autogen.sh | 2 +- source3/configure.in | 24 +- source3/depcomp | 584 +++++++++++++++++++++++++++++++ source3/m4/aclocal.m4 | 796 +++++++++++++++++++++++++++++++++++++++++++ source3/m4/check_gnu_make.m4 | 78 +++++ source3/m4/cond.m4 | 34 ++ source3/m4/depend.m4 | 158 +++++++++ source3/m4/depout.m4 | 68 ++++ source3/m4/lead-dot.m4 | 21 ++ source3/m4/make.m4 | 51 +++ source3/m4/substnot.m4 | 12 + 13 files changed, 1861 insertions(+), 804 deletions(-) delete mode 100644 source3/aclocal.m4 create mode 100755 source3/depcomp create mode 100644 source3/m4/aclocal.m4 create mode 100644 source3/m4/check_gnu_make.m4 create mode 100644 source3/m4/cond.m4 create mode 100644 source3/m4/depend.m4 create mode 100644 source3/m4/depout.m4 create mode 100644 source3/m4/lead-dot.m4 create mode 100644 source3/m4/make.m4 create mode 100644 source3/m4/substnot.m4 diff --git a/source3/Makefile.in b/source3/Makefile.in index 03ca7931d3..f8efbcd927 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -1007,27 +1007,54 @@ MAKEDIR = || exec false; \ mkdir "$$dir" || \ exec false; fi || exec false +CHECK_CC = $(CC_CHECKER) -I. -I$(srcdir) $(FLAGS) $(PICFLAG) -c $< -o $@ +COMPILE_CC = $(CC) -I. -I$(srcdir) $(FLAGS) $(PICFLAG) -c $< -o $@ + +COMPILE = $(COMPILE_CC) + +# BEGIN GNU make specific +# Rewrite the COMPILE rule to generate dependencies as a side-effect. +# This is is actually toolchain-independent, but making use of the dependency +# files requires GNU make, so it's pointless to have them otherwise. +@ifGNUmake@DEPDIR=. +@ifGNUmake@COMPILE_DEPENDS = source=$< object=$@ libtool=no \ +@ifGNUmake@ tmpdepfile=$(DEPDIR)/$*.TPo depfile=$(DEPDIR)/$*.d \ +@ifGNUmake@ DEPDIR=$(DEPDIR) @CCDEPMODE@ \ +@ifGNUmake@ $(srcdir)/depcomp $(COMPILE_CC) +@ifGNUmake@COMPILE = $(COMPILE_DEPENDS) +# END GNU make specific + .c.o: @if (: >> $@ || : > $@) >/dev/null 2>&1; then rm -f $@; else \ dir=`echo $@ | sed 's,/[^/]*$$,,;s,^$$,.,'` $(MAKEDIR); fi @if test -n "$(CC_CHECKER)"; then \ echo "Checking $*.c with '$(CC_CHECKER)'";\ - $(CC_CHECKER) -I. -I$(srcdir) $(FLAGS) $(PICFLAG) -c $< -o $@;\ + $(CHECK_CC); \ fi @echo Compiling $*.c - @$(CC) -I. -I$(srcdir) $(FLAGS) $(PICFLAG) -c $< -o $@ && exit 0;\ + @$(COMPILE) && exit 0;\ echo "The following command failed:" 1>&2;\ - echo "$(CC) -I. -I$(srcdir) $(FLAGS) $(PICFLAG) -c $< -o $@" 1>&2;\ - $(CC) -I. -I$(srcdir) $(FLAGS) $(PICFLAG) -c $< -o $@ >/dev/null 2>&1 + echo "$(COMPILE_CC)" 1>&2;\ + $(COMPILE_CC) >/dev/null 2>&1 @BROKEN_CC@ -mv `echo $@ | sed 's%^.*/%%g'` $@ +# BEGIN GNU make specific +# Include all the generated dependency files. The sort is done to +# remove duplicates. +@ifGNUmake@DEPENDS_OBJ = $(SMBD_SRV_OBJ) $(NET_OBJ) $(WINBINDD_OBJ) +@ifGNUmake@-include $(patsubst %.o, %.d, $(sort $(DEPENDS_OBJ))) +# END GNU make specific + PRECOMPILED_HEADER = $(builddir)/include/includes.h.gch # this adds support for precompiled headers. To use it, install a snapshot # of gcc-3.4 and run 'make pch' before you do the main build. pch: proto_exists rm -f $(PRECOMPILED_HEADER) - $(CC) -I. -I$(srcdir) $(FLAGS) $(PICFLAG) -c $(srcdir)/include/includes.h -o $(PRECOMPILED_HEADER) + $(MAKE) $(PRECOMPILED_HEADER) + +$(PRECOMPILED_HEADER): $(srcdir)/include/includes.h + $(COMPILE) # These dependencies are only approximately correct: we want to make # sure Samba's paths are updated if ./configure is re-run. Really it @@ -1860,7 +1887,9 @@ TOPFILES=dynconfig.o clean: delheaders python_clean -rm -f $(PRECOMPILED_HEADER) - -rm -f core */*~ *~ */*.o */*/*.o */*/*/*.o \ + -rm -f core */*~ *~ \ + */*.o */*/*.o */*/*/*.o \ + */*.d */*/*.d */*/*/*.d \ */*.@SHLIBEXT@ */*/*.@SHLIBEXT@ */*/*/*.@SHLIBEXT@ \ $(TOPFILES) $(BIN_PROGS) $(SBIN_PROGS) $(ROOT_SBIN_PROGS) \ $(MODULES) $(TORTURE_PROGS) $(LIBSMBCLIENT) $(LIBADDNS) \ diff --git a/source3/aclocal.m4 b/source3/aclocal.m4 deleted file mode 100644 index d36749a5f5..0000000000 --- a/source3/aclocal.m4 +++ /dev/null @@ -1,796 +0,0 @@ -dnl test whether dirent has a d_off member -AC_DEFUN(AC_DIRENT_D_OFF, -[AC_CACHE_CHECK([for d_off in dirent], ac_cv_dirent_d_off, -[AC_TRY_COMPILE([ -#include -#include -#include ], [struct dirent d; d.d_off;], -ac_cv_dirent_d_off=yes, ac_cv_dirent_d_off=no)]) -if test $ac_cv_dirent_d_off = yes; then - AC_DEFINE(HAVE_DIRENT_D_OFF,1,[Whether dirent has a d_off member]) -fi -]) - -dnl Mark specified module as shared -dnl SMB_MODULE(name,static_files,shared_files,subsystem,whatif-static,whatif-shared) -AC_DEFUN(SMB_MODULE, -[ - AC_MSG_CHECKING([how to build $1]) - if test "$[MODULE_][$1]"; then - DEST=$[MODULE_][$1] - elif test "$[MODULE_]translit([$4], [A-Z], [a-z])" -a "$[MODULE_DEFAULT_][$1]"; then - DEST=$[MODULE_]translit([$4], [A-Z], [a-z]) - else - DEST=$[MODULE_DEFAULT_][$1] - fi - - if test x"$DEST" = xSHARED; then - AC_DEFINE([$1][_init], [init_module], [Whether to build $1 as shared module]) - $4_MODULES="$$4_MODULES $3" - AC_MSG_RESULT([shared]) - [$6] - string_shared_modules="$string_shared_modules $1" - elif test x"$DEST" = xSTATIC; then - [init_static_modules_]translit([$4], [A-Z], [a-z])="$[init_static_modules_]translit([$4], [A-Z], [a-z]) $1_init();" - [decl_static_modules_]translit([$4], [A-Z], [a-z])="$[decl_static_modules_]translit([$4], [A-Z], [a-z]) extern NTSTATUS $1_init(void);" - string_static_modules="$string_static_modules $1" - $4_STATIC="$$4_STATIC $2" - AC_SUBST($4_STATIC) - [$5] - AC_MSG_RESULT([static]) - else - string_ignored_modules="$string_ignored_modules $1" - AC_MSG_RESULT([not]) - fi -]) - -AC_DEFUN(SMB_SUBSYSTEM, -[ - AC_SUBST($1_STATIC) - AC_SUBST($1_MODULES) - AC_DEFINE_UNQUOTED([static_init_]translit([$1], [A-Z], [a-z]), [{$init_static_modules_]translit([$1], [A-Z], [a-z])[}], [Static init functions]) - AC_DEFINE_UNQUOTED([static_decl_]translit([$1], [A-Z], [a-z]), [$decl_static_modules_]translit([$1], [A-Z], [a-z]), [Decl of Static init functions]) - ifelse([$2], , :, [rm -f $2]) -]) - -dnl AC_LIBTESTFUNC(lib, function, [actions if found], [actions if not found]) -dnl Check for a function in a library, but don't keep adding the same library -dnl to the LIBS variable. Check whether the function is available in the -dnl current LIBS before adding the library which prevents us spuriously -dnl adding libraries for symbols that are in libc. -dnl -dnl On success, the default actions ensure that HAVE_FOO is defined. The lib -dnl is always added to $LIBS if it was found to be necessary. The caller -dnl can use SMB_REMOVE_LIB to strp this if necessary. -AC_DEFUN([AC_LIBTESTFUNC], -[ - AC_CHECK_FUNCS($2, - [ - # $2 was found in libc or existing $LIBS - m4_ifval([$3], - [ - $3 - ], - [ - AC_DEFINE(translit([HAVE_$2], [a-z], [A-Z]), 1, - [Whether $2 is available]) - ]) - ], - [ - # $2 was not found, try adding lib$1 - case " $LIBS " in - *\ -l$1\ *) - m4_ifval([$4], - [ - $4 - ], - [ - # $2 was not found and we already had lib$1 - # nothing to do here by default - true - ]) - ;; - *) - # $2 was not found, try adding lib$1 - AC_CHECK_LIB($1, $2, - [ - LIBS="-l$1 $LIBS" - m4_ifval([$3], - [ - $3 - ], - [ - AC_DEFINE(translit([HAVE_$2], [a-z], [A-Z]), 1, - [Whether $2 is available]) - ]) - ], - [ - m4_ifval([$4], - [ - $4 - ], - [ - # $2 was not found in lib$1 - # nothing to do here by default - true - ]) - ]) - ;; - esac - ]) -]) - -# AC_CHECK_LIB_EXT(LIBRARY, [EXT_LIBS], [FUNCTION], -# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND], -# [ADD-ACTION-IF-FOUND],[OTHER-LIBRARIES]) -# ------------------------------------------------------ -# -# Use a cache variable name containing both the library and function name, -# because the test really is for library $1 defining function $3, not -# just for library $1. Separate tests with the same $1 and different $3s -# may have different results. -# -# Note that using directly AS_VAR_PUSHDEF([ac_Lib], [ac_cv_lib_$1_$3]) -# is asking for trouble, since AC_CHECK_LIB($lib, fun) would give -# ac_cv_lib_$lib_fun, which is definitely not what was meant. Hence -# the AS_LITERAL_IF indirection. -# -# FIXME: This macro is extremely suspicious. It DEFINEs unconditionally, -# whatever the FUNCTION, in addition to not being a *S macro. Note -# that the cache does depend upon the function we are looking for. -# -# It is on purpose we used `ac_check_lib_ext_save_LIBS' and not just -# `ac_save_LIBS': there are many macros which don't want to see `LIBS' -# changed but still want to use AC_CHECK_LIB_EXT, so they save `LIBS'. -# And ``ac_save_LIBS' is too tempting a name, so let's leave them some -# freedom. -AC_DEFUN([AC_CHECK_LIB_EXT], -[ -AH_CHECK_LIB_EXT([$1]) -ac_check_lib_ext_save_LIBS=$LIBS -LIBS="-l$1 $$2 $7 $LIBS" -AS_LITERAL_IF([$1], - [AS_VAR_PUSHDEF([ac_Lib_ext], [ac_cv_lib_ext_$1])], - [AS_VAR_PUSHDEF([ac_Lib_ext], [ac_cv_lib_ext_$1''])])dnl - -m4_ifval([$3], - [ - AH_CHECK_FUNC_EXT([$3]) - AS_LITERAL_IF([$1], - [AS_VAR_PUSHDEF([ac_Lib_func], [ac_cv_lib_ext_$1_$3])], - [AS_VAR_PUSHDEF([ac_Lib_func], [ac_cv_lib_ext_$1''_$3])])dnl - AC_CACHE_CHECK([for $3 in -l$1], ac_Lib_func, - [AC_TRY_LINK_FUNC($3, - [AS_VAR_SET(ac_Lib_func, yes); - AS_VAR_SET(ac_Lib_ext, yes)], - [AS_VAR_SET(ac_Lib_func, no); - AS_VAR_SET(ac_Lib_ext, no)]) - ]) - AS_IF([test AS_VAR_GET(ac_Lib_func) = yes], - [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_$3))])dnl - AS_VAR_POPDEF([ac_Lib_func])dnl - ],[ - AC_CACHE_CHECK([for -l$1], ac_Lib_ext, - [AC_TRY_LINK_FUNC([main], - [AS_VAR_SET(ac_Lib_ext, yes)], - [AS_VAR_SET(ac_Lib_ext, no)]) - ]) - ]) -LIBS=$ac_check_lib_ext_save_LIBS - -AS_IF([test AS_VAR_GET(ac_Lib_ext) = yes], - [m4_default([$4], - [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_LIB$1)) - case "$$2" in - *-l$1*) - ;; - *) - $2="-l$1 $$2" - ;; - esac]) - [$6] - ], - [$5])dnl -AS_VAR_POPDEF([ac_Lib_ext])dnl -])# AC_CHECK_LIB_EXT - -# AH_CHECK_LIB_EXT(LIBNAME) -# --------------------- -m4_define([AH_CHECK_LIB_EXT], -[AH_TEMPLATE(AS_TR_CPP(HAVE_LIB$1), - [Define to 1 if you have the `]$1[' library (-l]$1[).])]) - -# AC_CHECK_FUNCS_EXT(FUNCTION, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) -# ----------------------------------------------------------------- -dnl check for a function in a $LIBS and $OTHER_LIBS libraries variable. -dnl AC_CHECK_FUNC_EXT(func,OTHER_LIBS,IF-TRUE,IF-FALSE) -AC_DEFUN([AC_CHECK_FUNC_EXT], -[ - AH_CHECK_FUNC_EXT($1) - ac_check_func_ext_save_LIBS=$LIBS - LIBS="$2 $LIBS" - AS_VAR_PUSHDEF([ac_var], [ac_cv_func_ext_$1])dnl - AC_CACHE_CHECK([for $1], ac_var, - [AC_LINK_IFELSE([AC_LANG_FUNC_LINK_TRY([$1])], - [AS_VAR_SET(ac_var, yes)], - [AS_VAR_SET(ac_var, no)])]) - LIBS=$ac_check_func_ext_save_LIBS - AS_IF([test AS_VAR_GET(ac_var) = yes], - [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$1])) $3], - [$4])dnl -AS_VAR_POPDEF([ac_var])dnl -])# AC_CHECK_FUNC - -# AH_CHECK_FUNC_EXT(FUNCNAME) -# --------------------- -m4_define([AH_CHECK_FUNC_EXT], -[AH_TEMPLATE(AS_TR_CPP(HAVE_$1), - [Define to 1 if you have the `]$1[' function.])]) - -dnl Define an AC_DEFINE with ifndef guard. -dnl AC_N_DEFINE(VARIABLE [, VALUE]) -define(AC_N_DEFINE, -[cat >> confdefs.h <<\EOF -[#ifndef] $1 -[#define] $1 ifelse($#, 2, [$2], $#, 3, [$2], 1) -[#endif] -EOF -]) - -dnl Add an #include -dnl AC_ADD_INCLUDE(VARIABLE) -define(AC_ADD_INCLUDE, -[cat >> confdefs.h <<\EOF -[#include] $1 -EOF -]) - -dnl Copied from libtool.m4 -AC_DEFUN(AC_PROG_LD_GNU, -[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld, -[# I'd rather use --version here, but apparently some GNU ld's only accept -v. -if $LD -v 2>&1 &5; then - ac_cv_prog_gnu_ld=yes -else - ac_cv_prog_gnu_ld=no -fi]) -]) - -dnl Removes -I/usr/include/? from given variable -AC_DEFUN(CFLAGS_REMOVE_USR_INCLUDE,[ - ac_new_flags="" - for i in [$]$1; do - case [$]i in - -I/usr/include|-I/usr/include/) ;; - *) ac_new_flags="[$]ac_new_flags [$]i" ;; - esac - done - $1=[$]ac_new_flags -]) - -dnl Removes '-L/usr/lib[/]', '-Wl,-rpath,/usr/lib[/]' -dnl and '-Wl,-rpath -Wl,/usr/lib[/]' from given variable -AC_DEFUN(LIB_REMOVE_USR_LIB,[ - ac_new_flags="" - l="" - for i in [$]$1; do - case [$]l[$]i in - -L/usr/lib) ;; - -L/usr/lib/) ;; - -Wl,-rpath,/usr/lib) ;; - -Wl,-rpath,/usr/lib/) ;; - -Wl,-rpath) l=[$]i;; - -Wl,-rpath-Wl,/usr/lib) l="";; - -Wl,-rpath-Wl,/usr/lib/) l="";; - *) - s=" " - if test x"[$]ac_new_flags" = x""; then - s=""; - fi - if test x"[$]l" = x""; then - ac_new_flags="[$]ac_new_flags[$]s[$]i"; - else - ac_new_flags="[$]ac_new_flags[$]s[$]l [$]i"; - fi - l="" - ;; - esac - done - $1=[$]ac_new_flags -]) - -dnl From Bruno Haible. - -AC_DEFUN(jm_ICONV, -[ - dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and - dnl those with the standalone portable libiconv installed). - AC_MSG_CHECKING(for iconv in $1) - jm_cv_func_iconv="no" - jm_cv_lib_iconv="" - jm_cv_giconv=no - jm_save_LIBS="$LIBS" - - dnl Check for include in funny place but no lib needed - if test "$jm_cv_func_iconv" != yes; then - AC_TRY_LINK([#include -#include ], - [iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd);], - jm_cv_func_iconv=yes - jm_cv_include="giconv.h" - jm_cv_giconv="yes" - jm_cv_lib_iconv="") - - dnl Standard iconv.h include, lib in glibc or libc ... - if test "$jm_cv_func_iconv" != yes; then - AC_TRY_LINK([#include -#include ], - [iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd);], - jm_cv_include="iconv.h" - jm_cv_func_iconv=yes - jm_cv_lib_iconv="") - - if test "$jm_cv_lib_iconv" != yes; then - jm_save_LIBS="$LIBS" - LIBS="$LIBS -lgiconv" - AC_TRY_LINK([#include -#include ], - [iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd);], - jm_cv_lib_iconv=yes - jm_cv_func_iconv=yes - jm_cv_include="giconv.h" - jm_cv_giconv=yes - jm_cv_lib_iconv="giconv") - - LIBS="$jm_save_LIBS" - - if test "$jm_cv_func_iconv" != yes; then - jm_save_LIBS="$LIBS" - LIBS="$LIBS -liconv" - AC_TRY_LINK([#include -#include ], - [iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd);], - jm_cv_include="iconv.h" - jm_cv_func_iconv=yes - jm_cv_lib_iconv="iconv") - LIBS="$jm_save_LIBS" - - if test "$jm_cv_lib_iconv" != yes; then - jm_save_LIBS="$LIBS" - LIBS="$LIBS -lbiconv" - AC_TRY_LINK([#include -#include ], - [iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd);], - jm_cv_lib_iconv=yes - jm_cv_func_iconv=yes - jm_cv_include="biconv.h" - jm_cv_biconv=yes - jm_cv_lib_iconv="biconv") - - LIBS="$jm_save_LIBS" - fi - fi - fi - fi - fi - if test "$jm_cv_func_iconv" = yes; then - if test "$jm_cv_giconv" = yes; then - AC_DEFINE(HAVE_GICONV, 1, [What header to include for iconv() function: giconv.h]) - AC_MSG_RESULT(yes) - ICONV_FOUND=yes - else - if test "$jm_cv_biconv" = yes; then - AC_DEFINE(HAVE_BICONV, 1, [What header to include for iconv() function: biconv.h]) - AC_MSG_RESULT(yes) - ICONV_FOUND=yes - else - AC_DEFINE(HAVE_ICONV, 1, [What header to include for iconv() function: iconv.h]) - AC_MSG_RESULT(yes) - ICONV_FOUND=yes - fi - fi - else - AC_MSG_RESULT(no) - fi -]) - -AC_DEFUN(rjs_CHARSET,[ - dnl Find out if we can convert from $1 to UCS2-LE - AC_MSG_CHECKING([can we convert from $1 to UCS2-LE?]) - AC_TRY_RUN([ -#include <$jm_cv_include> -main(){ - iconv_t cd = iconv_open("$1", "UCS-2LE"); - if (cd == 0 || cd == (iconv_t)-1) { - return -1; - } - return 0; -} - ],ICONV_CHARSET=$1,ICONV_CHARSET=no,ICONV_CHARSET=cross) - AC_MSG_RESULT($ICONV_CHARSET) -]) - -dnl CFLAGS_ADD_DIR(CFLAGS, $INCDIR) -dnl This function doesn't add -I/usr/include into CFLAGS -AC_DEFUN(CFLAGS_ADD_DIR,[ -if test "$2" != "/usr/include" ; then - $1="$$1 -I$2" -fi -]) - -dnl LIB_ADD_DIR(LDFLAGS, $LIBDIR) -dnl This function doesn't add -L/usr/lib into LDFLAGS -AC_DEFUN(LIB_ADD_DIR,[ -if test "$2" != "/usr/lib" ; then - $1="$$1 -L$2" -fi -]) - -dnl AC_ENABLE_SHARED - implement the --enable-shared flag -dnl Usage: AC_ENABLE_SHARED[(DEFAULT)] -dnl Where DEFAULT is either `yes' or `no'. If omitted, it defaults to -dnl `yes'. -AC_DEFUN([AC_ENABLE_SHARED], -[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl -AC_ARG_ENABLE(shared, -changequote(<<, >>)dnl -<< --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT], -changequote([, ])dnl -[p=${PACKAGE-default} -case $enableval in -yes) enable_shared=yes ;; -no) enable_shared=no ;; -*) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," - for pkg in $enableval; do - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - - done - IFS="$ac_save_ifs" - ;; -esac], -enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl -]) - -dnl AC_ENABLE_STATIC - implement the --enable-static flag -dnl Usage: AC_ENABLE_STATIC[(DEFAULT)] -dnl Where DEFAULT is either `yes' or `no'. If omitted, it defaults to -dnl `yes'. -AC_DEFUN([AC_ENABLE_STATIC], -[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl -AC_ARG_ENABLE(static, -changequote(<<, >>)dnl -<< --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT], -changequote([, ])dnl -[p=${PACKAGE-default} -case $enableval in -yes) enable_static=yes ;; -no) enable_static=no ;; -*) - enable_static=no - # Look at the argument we got. We use all the common list separators. - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," - for pkg in $enableval; do - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$ac_save_ifs" - ;; -esac], -enable_static=AC_ENABLE_STATIC_DEFAULT)dnl -]) - -dnl AC_DISABLE_STATIC - set the default static flag to --disable-static -AC_DEFUN([AC_DISABLE_STATIC], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -AC_ENABLE_STATIC(no)]) - -dnl AC_TRY_RUN_STRICT(PROGRAM,CFLAGS,CPPFLAGS,LDFLAGS, -dnl [ACTION-IF-TRUE],[ACTION-IF-FALSE], -dnl [ACTION-IF-CROSS-COMPILING = RUNTIME-ERROR]) -AC_DEFUN( [AC_TRY_RUN_STRICT], -[ - old_CFLAGS="$CFLAGS"; - CFLAGS="$2"; - export CFLAGS; - old_CPPFLAGS="$CPPFLAGS"; - CPPFLAGS="$3"; - export CPPFLAGS; - old_LDFLAGS="$LDFLAGS"; - LDFLAGS="$4"; - export LDFLAGS; - AC_TRY_RUN([$1],[$5],[$6],[$7]) - CFLAGS="$old_CFLAGS"; - old_CFLAGS=""; - export CFLAGS; - CPPFLAGS="$old_CPPFLAGS"; - old_CPPFLAGS=""; - export CPPFLAGS; - LDFLAGS="$old_LDFLAGS"; - old_LDFLAGS=""; - export LDFLAGS; -]) - -dnl SMB_CHECK_SYSCONF(varname) -dnl Tests whether the sysconf(3) variable "varname" is available. -AC_DEFUN([SMB_CHECK_SYSCONF], -[ - AC_CACHE_CHECK([for sysconf($1)], - samba_cv_SYSCONF$1, - [ - AC_TRY_LINK([#include ], - [ return sysconf($1) == -1 ? 1 : 0; ], - [ samba_cv_SYSCONF$1=yes ], - [ samba_cv_SYSCONF$1=no ]) - ]) - - if test x"$samba_cv_SYSCONF$1" = x"yes" ; then - AC_DEFINE(SYSCONF$1, 1, [Whether sysconf($1) is available]) - fi -]) - -dnl SMB_IS_LIBPTHREAD_LINKED([actions if true], [actions if false]) -dnl Test whether the current LIBS results in libpthread being present. -dnl Execute the corresponding user action list. -AC_DEFUN([SMB_IS_LIBPTHREAD_LINKED], -[ - AC_MSG_CHECKING(if libpthread is linked) - AC_TRY_LINK([], - [return pthread_create(0, 0, 0, 0);], - [ - AC_MSG_RESULT(yes) - $1 - ], - [ - AC_MSG_RESULT(no) - $2 - ]) -]) - -dnl SMB_REMOVE_LIB(lib) -dnl Remove the given library from $LIBS -AC_DEFUN([SMB_REMOVE_LIB], -[ - LIBS=`echo $LIBS | sed '-es/-l$1//g'` -]) - -dnl SMB_CHECK_DMAPI([actions if true], [actions if false]) -dnl Check whether DMAPI is available and is a version that we know -dnl how to deal with. The default truth action is to set samba_dmapi_libs -dnl to the list of necessary libraries, and to define USE_DMAPI. -AC_DEFUN([SMB_CHECK_DMAPI], -[ - samba_dmapi_libs="" - - if test x"$samba_dmapi_libs" = x"" ; then - AC_CHECK_LIB(dm, dm_get_eventlist, - [ samba_dmapi_libs="-ldm"], []) - fi - - if test x"$samba_dmapi_libs" = x"" ; then - AC_CHECK_LIB(jfsdm, dm_get_eventlist, - [samba_dmapi_libs="-ljfsdm"], []) - fi - - if test x"$samba_dmapi_libs" = x"" ; then - AC_CHECK_LIB(xdsm, dm_get_eventlist, - [samba_dmapi_libs="-lxdsm"], []) - fi - - if test x"$samba_dmapi_libs" = x"" ; then - AC_CHECK_LIB(dmapi, dm_get_eventlist, - [samba_dmapi_libs="-ldmapi"], []) - fi - - - # Only bother to test ehaders if we have a candidate DMAPI library - if test x"$samba_dmapi_libs" != x"" ; then - AC_CHECK_HEADERS(sys/dmi.h xfs/dmapi.h sys/jfsdmapi.h sys/dmapi.h dmapi.h) - fi - - if test x"$samba_dmapi_libs" != x"" ; then - samba_dmapi_save_LIBS="$LIBS" - LIBS="$LIBS $samba_dmapi_libs" - AC_TRY_LINK( - [ -#include /* needed by Tru64 */ -#include /* needed by AIX */ -#ifdef HAVE_XFS_DMAPI_H -#include -#elif defined(HAVE_SYS_DMI_H) -#include -#elif defined(HAVE_SYS_JFSDMAPI_H) -#include -#elif defined(HAVE_SYS_DMAPI_H) -#include -#elif defined(HAVE_DMAPI_H) -#include -#endif - ], - [ -/* This link test is designed to fail on IRI 6.4, but should - * succeed on Linux, IRIX 6.5 and AIX. - */ - char * version; - dm_eventset_t events; - /* This doesn't take an argument on IRIX 6.4. */ - dm_init_service(&version); - /* IRIX 6.4 expects events to be a pointer. */ - DMEV_ISSET(DM_EVENT_READ, events); - ], - [ - true # DMAPI link test succeeded - ], - [ - # DMAPI link failure - samba_dmapi_libs= - ]) - LIBS="$samba_dmapi_save_LIBS" - fi - - if test x"$samba_dmapi_libs" = x"" ; then - # DMAPI detection failure actions begin - ifelse($2, [], - [ - AC_ERROR(Failed to detect a supported DMAPI implementation) - ], - [ - $2 - ]) - # DMAPI detection failure actions end - else - # DMAPI detection success actions start - ifelse($1, [], - [ - AC_DEFINE(USE_DMAPI, 1, - [Whether we should build DMAPI integration components]) - AC_MSG_NOTICE(Found DMAPI support in $samba_dmapi_libs) - ], - [ - $1 - ]) - # DMAPI detection success actions end - fi - -]) - -dnl SMB_CHECK_CLOCK_ID(clockid) -dnl Test whether the specified clock_gettime clock ID is available. If it -dnl is, we define HAVE_clockid -AC_DEFUN([SMB_CHECK_CLOCK_ID], -[ - AC_MSG_CHECKING(for $1) - AC_TRY_LINK([ -#if TIME_WITH_SYS_TIME -# include -# include -#else -# if HAVE_SYS_TIME_H -# include -# else -# include -# endif -#endif - ], - [ -clockid_t clk = $1; - ], - [ - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_$1, 1, - [Whether the clock_gettime clock ID $1 is available]) - ], - [ - AC_MSG_RESULT(no) - ]) -]) - -dnl SMB_IF_RTSIGNAL_BUG([actions if true], -dnl [actions if false], -dnl [actions if cross compiling]) -dnl Test whether we can call sigaction with RT_SIGNAL_NOTIFY and -dnl RT_SIGNAL_LEASE (also RT_SIGNAL_AIO for good measure, though -dnl I don't believe that triggers any bug. -dnl -dnl See the samba-technical thread titled "Failed to setup -dnl RT_SIGNAL_NOTIFY handler" for details on the bug in question. -AC_DEFUN([SMB_IF_RTSIGNAL_BUG], -[ - rt_signal_notify_works=yes - rt_signal_lease_works=yes - rt_signal_aio_works=yes - - AC_MSG_CHECKING(if sigaction works with realtime signals) - AC_TRY_RUN( - [ -#include -#include -#include - -/* from smbd/notify_kernel.c */ -#ifndef RT_SIGNAL_NOTIFY -#define RT_SIGNAL_NOTIFY (SIGRTMIN+2) -#endif - -/* from smbd/aio.c */ -#ifndef RT_SIGNAL_AIO -#define RT_SIGNAL_AIO (SIGRTMIN+3) -#endif - -/* from smbd/oplock_linux.c */ -#ifndef RT_SIGNAL_LEASE -#define RT_SIGNAL_LEASE (SIGRTMIN+1) -#endif - -static void signal_handler(int sig, siginfo_t *info, void *unused) -{ - int do_nothing = 0; -} - -int main(void) -{ - int result = 0; - struct sigaction act = {0}; - - act.sa_sigaction = signal_handler; - act.sa_flags = SA_SIGINFO; - sigemptyset( &act.sa_mask ); - - if (sigaction(RT_SIGNAL_LEASE, &act, 0) != 0) { - /* Failed to setup RT_SIGNAL_LEASE handler */ - result += 1; - } - - if (sigaction(RT_SIGNAL_NOTIFY, &act, 0) != 0) { - /* Failed to setup RT_SIGNAL_NOTIFY handler */ - result += 10; - } - - if (sigaction(RT_SIGNAL_AIO, &act, 0) != 0) { - /* Failed to setup RT_SIGNAL_AIO handler */ - result += 100; - } - - /* zero on success */ - return result; -} - ], - [ - AC_MSG_RESULT(yes) - $2 - ], - [ - AC_MSG_RESULT(no) - case "$ac_status" in - 1|11|101|111) rt_signal_lease_ok=no ;; - esac - case "$ac_status" in - 10|11|110|111) rt_signal_notify_ok=no ;; - esac - case "$ac_status" in - 100|110|101|111) rt_signal_aio_ok=no ;; - esac - $2 - ], - [ - AC_MSG_RESULT(cross) - $3 - ]) -]) - -m4_include(lib/replace/libreplace.m4) diff --git a/source3/autogen.sh b/source3/autogen.sh index 4d3488c9a4..3a58b29f60 100755 --- a/source3/autogen.sh +++ b/source3/autogen.sh @@ -53,7 +53,7 @@ echo "$0: running script/mkversion.sh" rm -rf autom4te*.cache rm -f configure include/config.h* -IPATHS="-I. -Ilib/replace" +IPATHS="-Im4 -Ilib/replace" echo "$0: running $AUTOHEADER $IPATHS" $AUTOHEADER $IPATHS || exit 1 diff --git a/source3/configure.in b/source3/configure.in index bc5d5184a4..9980d18f43 100644 --- a/source3/configure.in +++ b/source3/configure.in @@ -573,7 +573,29 @@ if test x"$SMB_BUILD_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then PIDL_ARGS="$PIDL_ARGS --uint-enums" fi -dnl Figure out the flags to support named structure initializers +############################################ +# Check whether we can do automatic dependency tracking + +m4_include(m4/substnot.m4) +m4_include(m4/cond.m4) +m4_include(m4/make.m4) +m4_include(m4/depout.m4) +m4_include(m4/lead-dot.m4) +m4_include(m4/check_gnu_make.m4) +m4_include(m4/depend.m4) + +# Using the dependency files requires GNU make until someone adds support +# for Makefile includes for other make implementations. +CHECK_GNU_MAKE() +if test "x$_cv_gnu_make_command" != "x" ; then + AC_SUBST(MAKE, $_cv_gnu_make_command) +fi + +AM_DEP_TRACK() +_AM_DEPENDENCIES(CC) + +############################################ +# Figure out the flags to support named structure initializers LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])]) diff --git a/source3/depcomp b/source3/depcomp new file mode 100755 index 0000000000..ca5ea4e1ef --- /dev/null +++ b/source3/depcomp @@ -0,0 +1,584 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2006-10-15.18 + +# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software +# Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by `PROGRAMS ARGS'. + object Object file output by `PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputing dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> $depfile + echo >> $depfile + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> $depfile + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts `$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + stat=$? + + if test -f "$tmpdepfile"; then : + else + stripped=`echo "$stripped" | sed 's,^.*/,,'` + tmpdepfile="$stripped.u" + fi + + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + if test -f "$tmpdepfile"; then + outname="$stripped.o" + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Intel's C compiler understands `-MD -MF file'. However on + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # ICC 7.0 will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + # ICC 7.1 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using \ : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | + sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" + # Add `dependent.h:' lines. + sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + # With Tru64 cc, shared objects can also be used to make a + # static library. This mechanism is used in libtool 1.4 series to + # handle both shared and static libraries in a single compilation. + # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. + # + # With libtool 1.5 this exception was removed, and libtool now + # generates 2 separate objects for the 2 libraries. These two + # compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 + tmpdepfile2=$dir$base.o.d # libtool 1.5 + tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 + tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.o.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + tmpdepfile4=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for `:' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + "$@" $dashmflag | + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no + for arg in "$@"; do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix="`echo $object | sed 's/^.*\././'`" + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + "$@" || exit $? + IFS=" " + for arg + do + case "$arg" in + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/source3/m4/aclocal.m4 b/source3/m4/aclocal.m4 new file mode 100644 index 0000000000..d36749a5f5 --- /dev/null +++ b/source3/m4/aclocal.m4 @@ -0,0 +1,796 @@ +dnl test whether dirent has a d_off member +AC_DEFUN(AC_DIRENT_D_OFF, +[AC_CACHE_CHECK([for d_off in dirent], ac_cv_dirent_d_off, +[AC_TRY_COMPILE([ +#include +#include +#include ], [struct dirent d; d.d_off;], +ac_cv_dirent_d_off=yes, ac_cv_dirent_d_off=no)]) +if test $ac_cv_dirent_d_off = yes; then + AC_DEFINE(HAVE_DIRENT_D_OFF,1,[Whether dirent has a d_off member]) +fi +]) + +dnl Mark specified module as shared +dnl SMB_MODULE(name,static_files,shared_files,subsystem,whatif-static,whatif-shared) +AC_DEFUN(SMB_MODULE, +[ + AC_MSG_CHECKING([how to build $1]) + if test "$[MODULE_][$1]"; then + DEST=$[MODULE_][$1] + elif test "$[MODULE_]translit([$4], [A-Z], [a-z])" -a "$[MODULE_DEFAULT_][$1]"; then + DEST=$[MODULE_]translit([$4], [A-Z], [a-z]) + else + DEST=$[MODULE_DEFAULT_][$1] + fi + + if test x"$DEST" = xSHARED; then + AC_DEFINE([$1][_init], [init_module], [Whether to build $1 as shared module]) + $4_MODULES="$$4_MODULES $3" + AC_MSG_RESULT([shared]) + [$6] + string_shared_modules="$string_shared_modules $1" + elif test x"$DEST" = xSTATIC; then + [init_static_modules_]translit([$4], [A-Z], [a-z])="$[init_static_modules_]translit([$4], [A-Z], [a-z]) $1_init();" + [decl_static_modules_]translit([$4], [A-Z], [a-z])="$[decl_static_modules_]translit([$4], [A-Z], [a-z]) extern NTSTATUS $1_init(void);" + string_static_modules="$string_static_modules $1" + $4_STATIC="$$4_STATIC $2" + AC_SUBST($4_STATIC) + [$5] + AC_MSG_RESULT([static]) + else + string_ignored_modules="$string_ignored_modules $1" + AC_MSG_RESULT([not]) + fi +]) + +AC_DEFUN(SMB_SUBSYSTEM, +[ + AC_SUBST($1_STATIC) + AC_SUBST($1_MODULES) + AC_DEFINE_UNQUOTED([static_init_]translit([$1], [A-Z], [a-z]), [{$init_static_modules_]translit([$1], [A-Z], [a-z])[}], [Static init functions]) + AC_DEFINE_UNQUOTED([static_decl_]translit([$1], [A-Z], [a-z]), [$decl_static_modules_]translit([$1], [A-Z], [a-z]), [Decl of Static init functions]) + ifelse([$2], , :, [rm -f $2]) +]) + +dnl AC_LIBTESTFUNC(lib, function, [actions if found], [actions if not found]) +dnl Check for a function in a library, but don't keep adding the same library +dnl to the LIBS variable. Check whether the function is available in the +dnl current LIBS before adding the library which prevents us spuriously +dnl adding libraries for symbols that are in libc. +dnl +dnl On success, the default actions ensure that HAVE_FOO is defined. The lib +dnl is always added to $LIBS if it was found to be necessary. The caller +dnl can use SMB_REMOVE_LIB to strp this if necessary. +AC_DEFUN([AC_LIBTESTFUNC], +[ + AC_CHECK_FUNCS($2, + [ + # $2 was found in libc or existing $LIBS + m4_ifval([$3], + [ + $3 + ], + [ + AC_DEFINE(translit([HAVE_$2], [a-z], [A-Z]), 1, + [Whether $2 is available]) + ]) + ], + [ + # $2 was not found, try adding lib$1 + case " $LIBS " in + *\ -l$1\ *) + m4_ifval([$4], + [ + $4 + ], + [ + # $2 was not found and we already had lib$1 + # nothing to do here by default + true + ]) + ;; + *) + # $2 was not found, try adding lib$1 + AC_CHECK_LIB($1, $2, + [ + LIBS="-l$1 $LIBS" + m4_ifval([$3], + [ + $3 + ], + [ + AC_DEFINE(translit([HAVE_$2], [a-z], [A-Z]), 1, + [Whether $2 is available]) + ]) + ], + [ + m4_ifval([$4], + [ + $4 + ], + [ + # $2 was not found in lib$1 + # nothing to do here by default + true + ]) + ]) + ;; + esac + ]) +]) + +# AC_CHECK_LIB_EXT(LIBRARY, [EXT_LIBS], [FUNCTION], +# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND], +# [ADD-ACTION-IF-FOUND],[OTHER-LIBRARIES]) +# ------------------------------------------------------ +# +# Use a cache variable name containing both the library and function name, +# because the test really is for library $1 defining function $3, not +# just for library $1. Separate tests with the same $1 and different $3s +# may have different results. +# +# Note that using directly AS_VAR_PUSHDEF([ac_Lib], [ac_cv_lib_$1_$3]) +# is asking for trouble, since AC_CHECK_LIB($lib, fun) would give +# ac_cv_lib_$lib_fun, which is definitely not what was meant. Hence +# the AS_LITERAL_IF indirection. +# +# FIXME: This macro is extremely suspicious. It DEFINEs unconditionally, +# whatever the FUNCTION, in addition to not being a *S macro. Note +# that the cache does depend upon the function we are looking for. +# +# It is on purpose we used `ac_check_lib_ext_save_LIBS' and not just +# `ac_save_LIBS': there are many macros which don't want to see `LIBS' +# changed but still want to use AC_CHECK_LIB_EXT, so they save `LIBS'. +# And ``ac_save_LIBS' is too tempting a name, so let's leave them some +# freedom. +AC_DEFUN([AC_CHECK_LIB_EXT], +[ +AH_CHECK_LIB_EXT([$1]) +ac_check_lib_ext_save_LIBS=$LIBS +LIBS="-l$1 $$2 $7 $LIBS" +AS_LITERAL_IF([$1], + [AS_VAR_PUSHDEF([ac_Lib_ext], [ac_cv_lib_ext_$1])], + [AS_VAR_PUSHDEF([ac_Lib_ext], [ac_cv_lib_ext_$1''])])dnl + +m4_ifval([$3], + [ + AH_CHECK_FUNC_EXT([$3]) + AS_LITERAL_IF([$1], + [AS_VAR_PUSHDEF([ac_Lib_func], [ac_cv_lib_ext_$1_$3])], + [AS_VAR_PUSHDEF([ac_Lib_func], [ac_cv_lib_ext_$1''_$3])])dnl + AC_CACHE_CHECK([for $3 in -l$1], ac_Lib_func, + [AC_TRY_LINK_FUNC($3, + [AS_VAR_SET(ac_Lib_func, yes); + AS_VAR_SET(ac_Lib_ext, yes)], + [AS_VAR_SET(ac_Lib_func, no); + AS_VAR_SET(ac_Lib_ext, no)]) + ]) + AS_IF([test AS_VAR_GET(ac_Lib_func) = yes], + [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_$3))])dnl + AS_VAR_POPDEF([ac_Lib_func])dnl + ],[ + AC_CACHE_CHECK([for -l$1], ac_Lib_ext, + [AC_TRY_LINK_FUNC([main], + [AS_VAR_SET(ac_Lib_ext, yes)], + [AS_VAR_SET(ac_Lib_ext, no)]) + ]) + ]) +LIBS=$ac_check_lib_ext_save_LIBS + +AS_IF([test AS_VAR_GET(ac_Lib_ext) = yes], + [m4_default([$4], + [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_LIB$1)) + case "$$2" in + *-l$1*) + ;; + *) + $2="-l$1 $$2" + ;; + esac]) + [$6] + ], + [$5])dnl +AS_VAR_POPDEF([ac_Lib_ext])dnl +])# AC_CHECK_LIB_EXT + +# AH_CHECK_LIB_EXT(LIBNAME) +# --------------------- +m4_define([AH_CHECK_LIB_EXT], +[AH_TEMPLATE(AS_TR_CPP(HAVE_LIB$1), + [Define to 1 if you have the `]$1[' library (-l]$1[).])]) + +# AC_CHECK_FUNCS_EXT(FUNCTION, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# ----------------------------------------------------------------- +dnl check for a function in a $LIBS and $OTHER_LIBS libraries variable. +dnl AC_CHECK_FUNC_EXT(func,OTHER_LIBS,IF-TRUE,IF-FALSE) +AC_DEFUN([AC_CHECK_FUNC_EXT], +[ + AH_CHECK_FUNC_EXT($1) + ac_check_func_ext_save_LIBS=$LIBS + LIBS="$2 $LIBS" + AS_VAR_PUSHDEF([ac_var], [ac_cv_func_ext_$1])dnl + AC_CACHE_CHECK([for $1], ac_var, + [AC_LINK_IFELSE([AC_LANG_FUNC_LINK_TRY([$1])], + [AS_VAR_SET(ac_var, yes)], + [AS_VAR_SET(ac_var, no)])]) + LIBS=$ac_check_func_ext_save_LIBS + AS_IF([test AS_VAR_GET(ac_var) = yes], + [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$1])) $3], + [$4])dnl +AS_VAR_POPDEF([ac_var])dnl +])# AC_CHECK_FUNC + +# AH_CHECK_FUNC_EXT(FUNCNAME) +# --------------------- +m4_define([AH_CHECK_FUNC_EXT], +[AH_TEMPLATE(AS_TR_CPP(HAVE_$1), + [Define to 1 if you have the `]$1[' function.])]) + +dnl Define an AC_DEFINE with ifndef guard. +dnl AC_N_DEFINE(VARIABLE [, VALUE]) +define(AC_N_DEFINE, +[cat >> confdefs.h <<\EOF +[#ifndef] $1 +[#define] $1 ifelse($#, 2, [$2], $#, 3, [$2], 1) +[#endif] +EOF +]) + +dnl Add an #include +dnl AC_ADD_INCLUDE(VARIABLE) +define(AC_ADD_INCLUDE, +[cat >> confdefs.h <<\EOF +[#include] $1 +EOF +]) + +dnl Copied from libtool.m4 +AC_DEFUN(AC_PROG_LD_GNU, +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld, +[# I'd rather use --version here, but apparently some GNU ld's only accept -v. +if $LD -v 2>&1 &5; then + ac_cv_prog_gnu_ld=yes +else + ac_cv_prog_gnu_ld=no +fi]) +]) + +dnl Removes -I/usr/include/? from given variable +AC_DEFUN(CFLAGS_REMOVE_USR_INCLUDE,[ + ac_new_flags="" + for i in [$]$1; do + case [$]i in + -I/usr/include|-I/usr/include/) ;; + *) ac_new_flags="[$]ac_new_flags [$]i" ;; + esac + done + $1=[$]ac_new_flags +]) + +dnl Removes '-L/usr/lib[/]', '-Wl,-rpath,/usr/lib[/]' +dnl and '-Wl,-rpath -Wl,/usr/lib[/]' from given variable +AC_DEFUN(LIB_REMOVE_USR_LIB,[ + ac_new_flags="" + l="" + for i in [$]$1; do + case [$]l[$]i in + -L/usr/lib) ;; + -L/usr/lib/) ;; + -Wl,-rpath,/usr/lib) ;; + -Wl,-rpath,/usr/lib/) ;; + -Wl,-rpath) l=[$]i;; + -Wl,-rpath-Wl,/usr/lib) l="";; + -Wl,-rpath-Wl,/usr/lib/) l="";; + *) + s=" " + if test x"[$]ac_new_flags" = x""; then + s=""; + fi + if test x"[$]l" = x""; then + ac_new_flags="[$]ac_new_flags[$]s[$]i"; + else + ac_new_flags="[$]ac_new_flags[$]s[$]l [$]i"; + fi + l="" + ;; + esac + done + $1=[$]ac_new_flags +]) + +dnl From Bruno Haible. + +AC_DEFUN(jm_ICONV, +[ + dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and + dnl those with the standalone portable libiconv installed). + AC_MSG_CHECKING(for iconv in $1) + jm_cv_func_iconv="no" + jm_cv_lib_iconv="" + jm_cv_giconv=no + jm_save_LIBS="$LIBS" + + dnl Check for include in funny place but no lib needed + if test "$jm_cv_func_iconv" != yes; then + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + jm_cv_func_iconv=yes + jm_cv_include="giconv.h" + jm_cv_giconv="yes" + jm_cv_lib_iconv="") + + dnl Standard iconv.h include, lib in glibc or libc ... + if test "$jm_cv_func_iconv" != yes; then + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + jm_cv_include="iconv.h" + jm_cv_func_iconv=yes + jm_cv_lib_iconv="") + + if test "$jm_cv_lib_iconv" != yes; then + jm_save_LIBS="$LIBS" + LIBS="$LIBS -lgiconv" + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + jm_cv_lib_iconv=yes + jm_cv_func_iconv=yes + jm_cv_include="giconv.h" + jm_cv_giconv=yes + jm_cv_lib_iconv="giconv") + + LIBS="$jm_save_LIBS" + + if test "$jm_cv_func_iconv" != yes; then + jm_save_LIBS="$LIBS" + LIBS="$LIBS -liconv" + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + jm_cv_include="iconv.h" + jm_cv_func_iconv=yes + jm_cv_lib_iconv="iconv") + LIBS="$jm_save_LIBS" + + if test "$jm_cv_lib_iconv" != yes; then + jm_save_LIBS="$LIBS" + LIBS="$LIBS -lbiconv" + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + jm_cv_lib_iconv=yes + jm_cv_func_iconv=yes + jm_cv_include="biconv.h" + jm_cv_biconv=yes + jm_cv_lib_iconv="biconv") + + LIBS="$jm_save_LIBS" + fi + fi + fi + fi + fi + if test "$jm_cv_func_iconv" = yes; then + if test "$jm_cv_giconv" = yes; then + AC_DEFINE(HAVE_GICONV, 1, [What header to include for iconv() function: giconv.h]) + AC_MSG_RESULT(yes) + ICONV_FOUND=yes + else + if test "$jm_cv_biconv" = yes; then + AC_DEFINE(HAVE_BICONV, 1, [What header to include for iconv() function: biconv.h]) + AC_MSG_RESULT(yes) + ICONV_FOUND=yes + else + AC_DEFINE(HAVE_ICONV, 1, [What header to include for iconv() function: iconv.h]) + AC_MSG_RESULT(yes) + ICONV_FOUND=yes + fi + fi + else + AC_MSG_RESULT(no) + fi +]) + +AC_DEFUN(rjs_CHARSET,[ + dnl Find out if we can convert from $1 to UCS2-LE + AC_MSG_CHECKING([can we convert from $1 to UCS2-LE?]) + AC_TRY_RUN([ +#include <$jm_cv_include> +main(){ + iconv_t cd = iconv_open("$1", "UCS-2LE"); + if (cd == 0 || cd == (iconv_t)-1) { + return -1; + } + return 0; +} + ],ICONV_CHARSET=$1,ICONV_CHARSET=no,ICONV_CHARSET=cross) + AC_MSG_RESULT($ICONV_CHARSET) +]) + +dnl CFLAGS_ADD_DIR(CFLAGS, $INCDIR) +dnl This function doesn't add -I/usr/include into CFLAGS +AC_DEFUN(CFLAGS_ADD_DIR,[ +if test "$2" != "/usr/include" ; then + $1="$$1 -I$2" +fi +]) + +dnl LIB_ADD_DIR(LDFLAGS, $LIBDIR) +dnl This function doesn't add -L/usr/lib into LDFLAGS +AC_DEFUN(LIB_ADD_DIR,[ +if test "$2" != "/usr/lib" ; then + $1="$$1 -L$2" +fi +]) + +dnl AC_ENABLE_SHARED - implement the --enable-shared flag +dnl Usage: AC_ENABLE_SHARED[(DEFAULT)] +dnl Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +dnl `yes'. +AC_DEFUN([AC_ENABLE_SHARED], +[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE(shared, +changequote(<<, >>)dnl +<< --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT], +changequote([, ])dnl +[p=${PACKAGE-default} +case $enableval in +yes) enable_shared=yes ;; +no) enable_shared=no ;; +*) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + + done + IFS="$ac_save_ifs" + ;; +esac], +enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl +]) + +dnl AC_ENABLE_STATIC - implement the --enable-static flag +dnl Usage: AC_ENABLE_STATIC[(DEFAULT)] +dnl Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +dnl `yes'. +AC_DEFUN([AC_ENABLE_STATIC], +[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE(static, +changequote(<<, >>)dnl +<< --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT], +changequote([, ])dnl +[p=${PACKAGE-default} +case $enableval in +yes) enable_static=yes ;; +no) enable_static=no ;; +*) + enable_static=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac], +enable_static=AC_ENABLE_STATIC_DEFAULT)dnl +]) + +dnl AC_DISABLE_STATIC - set the default static flag to --disable-static +AC_DEFUN([AC_DISABLE_STATIC], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_STATIC(no)]) + +dnl AC_TRY_RUN_STRICT(PROGRAM,CFLAGS,CPPFLAGS,LDFLAGS, +dnl [ACTION-IF-TRUE],[ACTION-IF-FALSE], +dnl [ACTION-IF-CROSS-COMPILING = RUNTIME-ERROR]) +AC_DEFUN( [AC_TRY_RUN_STRICT], +[ + old_CFLAGS="$CFLAGS"; + CFLAGS="$2"; + export CFLAGS; + old_CPPFLAGS="$CPPFLAGS"; + CPPFLAGS="$3"; + export CPPFLAGS; + old_LDFLAGS="$LDFLAGS"; + LDFLAGS="$4"; + export LDFLAGS; + AC_TRY_RUN([$1],[$5],[$6],[$7]) + CFLAGS="$old_CFLAGS"; + old_CFLAGS=""; + export CFLAGS; + CPPFLAGS="$old_CPPFLAGS"; + old_CPPFLAGS=""; + export CPPFLAGS; + LDFLAGS="$old_LDFLAGS"; + old_LDFLAGS=""; + export LDFLAGS; +]) + +dnl SMB_CHECK_SYSCONF(varname) +dnl Tests whether the sysconf(3) variable "varname" is available. +AC_DEFUN([SMB_CHECK_SYSCONF], +[ + AC_CACHE_CHECK([for sysconf($1)], + samba_cv_SYSCONF$1, + [ + AC_TRY_LINK([#include ], + [ return sysconf($1) == -1 ? 1 : 0; ], + [ samba_cv_SYSCONF$1=yes ], + [ samba_cv_SYSCONF$1=no ]) + ]) + + if test x"$samba_cv_SYSCONF$1" = x"yes" ; then + AC_DEFINE(SYSCONF$1, 1, [Whether sysconf($1) is available]) + fi +]) + +dnl SMB_IS_LIBPTHREAD_LINKED([actions if true], [actions if false]) +dnl Test whether the current LIBS results in libpthread being present. +dnl Execute the corresponding user action list. +AC_DEFUN([SMB_IS_LIBPTHREAD_LINKED], +[ + AC_MSG_CHECKING(if libpthread is linked) + AC_TRY_LINK([], + [return pthread_create(0, 0, 0, 0);], + [ + AC_MSG_RESULT(yes) + $1 + ], + [ + AC_MSG_RESULT(no) + $2 + ]) +]) + +dnl SMB_REMOVE_LIB(lib) +dnl Remove the given library from $LIBS +AC_DEFUN([SMB_REMOVE_LIB], +[ + LIBS=`echo $LIBS | sed '-es/-l$1//g'` +]) + +dnl SMB_CHECK_DMAPI([actions if true], [actions if false]) +dnl Check whether DMAPI is available and is a version that we know +dnl how to deal with. The default truth action is to set samba_dmapi_libs +dnl to the list of necessary libraries, and to define USE_DMAPI. +AC_DEFUN([SMB_CHECK_DMAPI], +[ + samba_dmapi_libs="" + + if test x"$samba_dmapi_libs" = x"" ; then + AC_CHECK_LIB(dm, dm_get_eventlist, + [ samba_dmapi_libs="-ldm"], []) + fi + + if test x"$samba_dmapi_libs" = x"" ; then + AC_CHECK_LIB(jfsdm, dm_get_eventlist, + [samba_dmapi_libs="-ljfsdm"], []) + fi + + if test x"$samba_dmapi_libs" = x"" ; then + AC_CHECK_LIB(xdsm, dm_get_eventlist, + [samba_dmapi_libs="-lxdsm"], []) + fi + + if test x"$samba_dmapi_libs" = x"" ; then + AC_CHECK_LIB(dmapi, dm_get_eventlist, + [samba_dmapi_libs="-ldmapi"], []) + fi + + + # Only bother to test ehaders if we have a candidate DMAPI library + if test x"$samba_dmapi_libs" != x"" ; then + AC_CHECK_HEADERS(sys/dmi.h xfs/dmapi.h sys/jfsdmapi.h sys/dmapi.h dmapi.h) + fi + + if test x"$samba_dmapi_libs" != x"" ; then + samba_dmapi_save_LIBS="$LIBS" + LIBS="$LIBS $samba_dmapi_libs" + AC_TRY_LINK( + [ +#include /* needed by Tru64 */ +#include /* needed by AIX */ +#ifdef HAVE_XFS_DMAPI_H +#include +#elif defined(HAVE_SYS_DMI_H) +#include +#elif defined(HAVE_SYS_JFSDMAPI_H) +#include +#elif defined(HAVE_SYS_DMAPI_H) +#include +#elif defined(HAVE_DMAPI_H) +#include +#endif + ], + [ +/* This link test is designed to fail on IRI 6.4, but should + * succeed on Linux, IRIX 6.5 and AIX. + */ + char * version; + dm_eventset_t events; + /* This doesn't take an argument on IRIX 6.4. */ + dm_init_service(&version); + /* IRIX 6.4 expects events to be a pointer. */ + DMEV_ISSET(DM_EVENT_READ, events); + ], + [ + true # DMAPI link test succeeded + ], + [ + # DMAPI link failure + samba_dmapi_libs= + ]) + LIBS="$samba_dmapi_save_LIBS" + fi + + if test x"$samba_dmapi_libs" = x"" ; then + # DMAPI detection failure actions begin + ifelse($2, [], + [ + AC_ERROR(Failed to detect a supported DMAPI implementation) + ], + [ + $2 + ]) + # DMAPI detection failure actions end + else + # DMAPI detection success actions start + ifelse($1, [], + [ + AC_DEFINE(USE_DMAPI, 1, + [Whether we should build DMAPI integration components]) + AC_MSG_NOTICE(Found DMAPI support in $samba_dmapi_libs) + ], + [ + $1 + ]) + # DMAPI detection success actions end + fi + +]) + +dnl SMB_CHECK_CLOCK_ID(clockid) +dnl Test whether the specified clock_gettime clock ID is available. If it +dnl is, we define HAVE_clockid +AC_DEFUN([SMB_CHECK_CLOCK_ID], +[ + AC_MSG_CHECKING(for $1) + AC_TRY_LINK([ +#if TIME_WITH_SYS_TIME +# include +# include +#else +# if HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif + ], + [ +clockid_t clk = $1; + ], + [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_$1, 1, + [Whether the clock_gettime clock ID $1 is available]) + ], + [ + AC_MSG_RESULT(no) + ]) +]) + +dnl SMB_IF_RTSIGNAL_BUG([actions if true], +dnl [actions if false], +dnl [actions if cross compiling]) +dnl Test whether we can call sigaction with RT_SIGNAL_NOTIFY and +dnl RT_SIGNAL_LEASE (also RT_SIGNAL_AIO for good measure, though +dnl I don't believe that triggers any bug. +dnl +dnl See the samba-technical thread titled "Failed to setup +dnl RT_SIGNAL_NOTIFY handler" for details on the bug in question. +AC_DEFUN([SMB_IF_RTSIGNAL_BUG], +[ + rt_signal_notify_works=yes + rt_signal_lease_works=yes + rt_signal_aio_works=yes + + AC_MSG_CHECKING(if sigaction works with realtime signals) + AC_TRY_RUN( + [ +#include +#include +#include + +/* from smbd/notify_kernel.c */ +#ifndef RT_SIGNAL_NOTIFY +#define RT_SIGNAL_NOTIFY (SIGRTMIN+2) +#endif + +/* from smbd/aio.c */ +#ifndef RT_SIGNAL_AIO +#define RT_SIGNAL_AIO (SIGRTMIN+3) +#endif + +/* from smbd/oplock_linux.c */ +#ifndef RT_SIGNAL_LEASE +#define RT_SIGNAL_LEASE (SIGRTMIN+1) +#endif + +static void signal_handler(int sig, siginfo_t *info, void *unused) +{ + int do_nothing = 0; +} + +int main(void) +{ + int result = 0; + struct sigaction act = {0}; + + act.sa_sigaction = signal_handler; + act.sa_flags = SA_SIGINFO; + sigemptyset( &act.sa_mask ); + + if (sigaction(RT_SIGNAL_LEASE, &act, 0) != 0) { + /* Failed to setup RT_SIGNAL_LEASE handler */ + result += 1; + } + + if (sigaction(RT_SIGNAL_NOTIFY, &act, 0) != 0) { + /* Failed to setup RT_SIGNAL_NOTIFY handler */ + result += 10; + } + + if (sigaction(RT_SIGNAL_AIO, &act, 0) != 0) { + /* Failed to setup RT_SIGNAL_AIO handler */ + result += 100; + } + + /* zero on success */ + return result; +} + ], + [ + AC_MSG_RESULT(yes) + $2 + ], + [ + AC_MSG_RESULT(no) + case "$ac_status" in + 1|11|101|111) rt_signal_lease_ok=no ;; + esac + case "$ac_status" in + 10|11|110|111) rt_signal_notify_ok=no ;; + esac + case "$ac_status" in + 100|110|101|111) rt_signal_aio_ok=no ;; + esac + $2 + ], + [ + AC_MSG_RESULT(cross) + $3 + ]) +]) + +m4_include(lib/replace/libreplace.m4) diff --git a/source3/m4/check_gnu_make.m4 b/source3/m4/check_gnu_make.m4 new file mode 100644 index 0000000000..44e1d9aa20 --- /dev/null +++ b/source3/m4/check_gnu_make.m4 @@ -0,0 +1,78 @@ +##### http://autoconf-archive.cryp.to/check_gnu_make.html +# +# SYNOPSIS +# +# CHECK_GNU_MAKE() +# +# DESCRIPTION +# +# This macro searches for a GNU version of make. If a match is found, +# the makefile variable `ifGNUmake' is set to the empty string, +# otherwise it is set to "#". This is useful for including a special +# features in a Makefile, which cannot be handled by other versions +# of make. The variable _cv_gnu_make_command is set to the command to +# invoke GNU make if it exists, the empty string otherwise. +# +# Here is an example of its use: +# +# Makefile.in might contain: +# +# # A failsafe way of putting a dependency rule into a makefile +# $(DEPEND): +# $(CC) -MM $(srcdir)/*.c > $(DEPEND) +# +# @ifGNUmake@ ifeq ($(DEPEND),$(wildcard $(DEPEND))) +# @ifGNUmake@ include $(DEPEND) +# @ifGNUmake@ endif +# +# Then configure.in would normally contain: +# +# CHECK_GNU_MAKE() +# AC_OUTPUT(Makefile) +# +# Then perhaps to cause gnu make to override any other make, we could +# do something like this (note that GNU make always looks for +# GNUmakefile first): +# +# if ! test x$_cv_gnu_make_command = x ; then +# mv Makefile GNUmakefile +# echo .DEFAULT: > Makefile ; +# echo \ $_cv_gnu_make_command \$@ >> Makefile; +# fi +# +# Then, if any (well almost any) other make is called, and GNU make +# also exists, then the other make wraps the GNU make. +# +# LAST MODIFICATION +# +# 2002-01-04 +# +# COPYLEFT +# +# Copyright (c) 2002 John Darrington +# +# Copying and distribution of this file, with or without +# modification, are permitted in any medium without royalty provided +# the copyright notice and this notice are preserved. + +AC_DEFUN( + [CHECK_GNU_MAKE], [ AC_CACHE_CHECK( for GNU make,_cv_gnu_make_command, + _cv_gnu_make_command='' ; +dnl Search all the common names for GNU make + for a in "$MAKE" make gmake gnumake ; do + if test -z "$a" ; then continue ; fi ; + if ( sh -c "$a --version" 2> /dev/null | grep GNU 2>&1 > /dev/null ) ; then + _cv_gnu_make_command=$a ; + break; + fi + done ; + ) ; +dnl If there was a GNU version, then set @ifGNUmake@ to the empty string, '#' otherwise + if test "x$_cv_gnu_make_command" != "x" ; then + ifGNUmake='' ; + else + ifGNUmake='#' ; + AC_MSG_RESULT("Not found"); + fi + AC_SUBST(ifGNUmake) +] ) diff --git a/source3/m4/cond.m4 b/source3/m4/cond.m4 new file mode 100644 index 0000000000..d9a58d2f39 --- /dev/null +++ b/source3/m4/cond.m4 @@ -0,0 +1,34 @@ +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 8 + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ(2.52)dnl + ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) diff --git a/source3/m4/depend.m4 b/source3/m4/depend.m4 new file mode 100644 index 0000000000..fd0937330d --- /dev/null +++ b/source3/m4/depend.m4 @@ -0,0 +1,158 @@ +## -*- Autoconf -*- +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 9 + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "GCJ", or "OBJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], UPC, [depcc="$UPC" am_compiler_list=], + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +]) diff --git a/source3/m4/depout.m4 b/source3/m4/depout.m4 new file mode 100644 index 0000000000..0d9717a100 --- /dev/null +++ b/source3/m4/depout.m4 @@ -0,0 +1,68 @@ +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +#serial 3 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed 10q "$mf" | grep '^#.*generated by automake' > /dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) diff --git a/source3/m4/lead-dot.m4 b/source3/m4/lead-dot.m4 new file mode 100644 index 0000000000..d83bfa0b08 --- /dev/null +++ b/source3/m4/lead-dot.m4 @@ -0,0 +1,21 @@ +## -*- Autoconf -*- +# Copyright (C) 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) diff --git a/source3/m4/make.m4 b/source3/m4/make.m4 new file mode 100644 index 0000000000..0969d9a795 --- /dev/null +++ b/source3/m4/make.m4 @@ -0,0 +1,51 @@ +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) diff --git a/source3/m4/substnot.m4 b/source3/m4/substnot.m4 new file mode 100644 index 0000000000..27d3f1fbef --- /dev/null +++ b/source3/m4/substnot.m4 @@ -0,0 +1,12 @@ +## -*- Autoconf -*- +# Copyright (C) 2006 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputing VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) -- cgit