X-Git-Url: http://git.samba.org/?a=blobdiff_plain;f=source4%2Fmain.mk;h=38c76bb99c514645914d61c7fc14fc1379680713;hb=77c825f08b516e3e5acf40d0b744a01ce68635fe;hp=8f42554a6bbd78deab47ea372ca8d8957d72c97e;hpb=748decf65bec11263be1900965b78e7a1731b6e6;p=samba.git diff --git a/source4/main.mk b/source4/main.mk index 8f42554a6bb..38c76bb99c5 100644 --- a/source4/main.mk +++ b/source4/main.mk @@ -1,11 +1,11 @@ -all: $(ALL_PREDEP) bin/asn1_compile bin/compile_et binaries libraries modules +default: all include dynconfig.mk include heimdal_build/config.mk include config.mk include dsdb/config.mk -include gtk/config.mk include smbd/config.mk +include cluster/config.mk include smbd/process_model.mk include libnet/config.mk include auth/config.mk @@ -29,12 +29,10 @@ include librpc/config.mk include client/config.mk include libcli/config.mk include scripting/ejs/config.mk -include scripting/swig/config.mk +include scripting/python/config.mk include kdc/config.mk -include passdb/config.mk -DEFAULT_HEADERS = $(srcdir)/include/core.h \ - $(srcdir)/include/dlinklist.h \ +DEFAULT_HEADERS = $(srcdir)/lib/util/dlinklist.h \ $(srcdir)/version.h binaries: $(BINARIES) @@ -42,7 +40,16 @@ libraries: $(STATIC_LIBS) $(SHARED_LIBS) modules: $(SHARED_MODULES) headers: $(PUBLIC_HEADERS) $(DEFAULT_HEADERS) manpages: $(MANPAGES) -everything: all +all: showflags $(ALL_PREDEP) bin/asn1_compile bin/compile_et binaries modules pythonmods +everything: all libraries headers + +LD_LIBPATH_OVERRIDE = $(LIB_PATH_VAR)=$(builddir)/bin/shared + +# 'make testsuite' creates all binaries which are +# needed by samba3's 'make test' and the build-farm +# scripts use that it as fallback in case +# 'make everything' fails +testsuite: bin/smbclient bin/cifsdd bin/smbtorture bin/nmblookup showlayout: @echo 'Samba will be installed into:' @@ -61,28 +68,34 @@ showlayout: @echo ' jsdir: $(JSDIR)' @echo ' swatdir: $(SWATDIR)' @echo ' mandir: $(MANDIR)' + @echo ' torturedir: $(TORTUREDIR)' @echo ' datadir: $(DATADIR)' @echo ' winbindd_socket_dir: $(WINBINDD_SOCKET_DIR)' showflags: @echo 'Samba will be compiled with flags:' - @echo ' CFLAGS = $(CFLAGS)' - @echo ' LDFLAGS = $(LDFLAGS)' + @echo ' CPP = $(CPP)' + @echo ' CPPFLAGS = $(CPPFLAGS)' + @echo ' CC = $(CC)' + @echo ' CFLAGS = $(CFLAGS)' + @echo ' PICFLAG = $(PICFLAG)' + @echo ' BNLD = $(BNLD)' + @echo ' BNLD_FLAGS = $(BNLD_FLAGS)' + @echo ' STLD = $(STLD)' @echo ' STLD_FLAGS = $(STLD_FLAGS)' + @echo ' SHLD = $(SHLD)' @echo ' SHLD_FLAGS = $(SHLD_FLAGS)' - @echo ' LIBS = $(LIBS)' + @echo ' MDLD = $(MDLD)' + @echo ' MDLD_FLAGS = $(MDLD_FLAGS)' + @echo ' SHLIBEXT = $(SHLIBEXT)' + @echo ' srcdir = $(srcdir)' + @echo ' builddir = $(builddir)' + @echo ' pwd = '`/bin/pwd` # The permissions to give the executables INSTALLPERMS = 0755 -# set these to where to find various files -# These can be overridden by command line switches (see smbd(8)) -# or in smb.conf (see smb.conf(5)) -CONFIGFILE = $(CONFIGDIR)/smb.conf -PKGCONFIGDIR = $(LIBDIR)/pkgconfig -LMHOSTSFILE = $(CONFIGDIR)/lmhosts - -install: showlayout installbin installdat installswat installmisc installlib \ +install: showlayout everything installbin installdat installswat installmisc installlib \ installheader installpc installplugins # DESTDIR is used here to prevent packagers wasting their time @@ -98,6 +111,7 @@ installdirs: $(DESTDIR)$(BASEDIR) \ $(DESTDIR)$(BINDIR) \ $(DESTDIR)$(SBINDIR) \ + $(DESTDIR)$(TORTUREDIR) \ $(DESTDIR)$(LIBDIR) \ $(DESTDIR)$(MODULESDIR) \ $(DESTDIR)$(MANDIR) \ @@ -112,7 +126,7 @@ installdirs: $(DESTDIR)$(PKGCONFIGDIR) \ $(DESTDIR)$(CONFIGDIR) \ -installbin: $(SBIN_PROGS) $(BIN_PROGS) installdirs +installbin: $(SBIN_PROGS) $(BIN_PROGS) $(TORTURE_PROGS) installdirs @$(SHELL) $(srcdir)/script/installbin.sh \ $(INSTALLPERMS) \ $(DESTDIR)$(BASEDIR) \ @@ -127,13 +141,17 @@ installbin: $(SBIN_PROGS) $(BIN_PROGS) installdirs $(DESTDIR)$(LIBDIR) \ $(DESTDIR)$(VARDIR) \ $(BIN_PROGS) + @$(SHELL) $(srcdir)/script/installtorture.sh \ + $(INSTALLPERMS) \ + $(DESTDIR)$(TORTUREDIR) \ + $(TORTURE_PROGS) installlib: $(INSTALLABLE_SHARED_LIBS) $(STATIC_LIBS) installdirs @$(SHELL) $(srcdir)/script/installlib.sh $(DESTDIR)$(LIBDIR) "$(SHLIBEXT)" $(INSTALLABLE_SHARED_LIBS) - @$(SHELL) $(srcdir)/script/installlib.sh $(DESTDIR)$(LIBDIR) "$(STLIBEXT)" $(STATIC_LIBS) + #@$(SHELL) $(srcdir)/script/installlib.sh $(DESTDIR)$(LIBDIR) "$(STLIBEXT)" $(STATIC_LIBS) installheader: headers installdirs - @$(PERL) $(srcdir)/script/installheader.pl $(DESTDIR)$(INCLUDEDIR) $(PUBLIC_HEADERS) $(DEFAULT_HEADERS) + @srcdir=$(srcdir) builddir=$(builddir) $(PERL) $(srcdir)/script/installheader.pl $(DESTDIR)$(INCLUDEDIR) $(PUBLIC_HEADERS) $(DEFAULT_HEADERS) installdat: installdirs @$(SHELL) $(srcdir)/script/installdat.sh $(DESTDIR)$(DATADIR) $(srcdir) @@ -159,10 +177,11 @@ uninstallmisc: uninstallbin: @$(SHELL) $(srcdir)/script/uninstallbin.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(SBINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(DESTDIR)$(SBIN_PROGS) @$(SHELL) $(srcdir)/script/uninstallbin.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(BINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(DESTDIR)$(BIN_PROGS) + @$(SHELL) $(srcdir)/script/uninstalltorture.sh $(DESTDIR)$(TORTUREDIR) $(TORTURE_PROGS) uninstalllib: @$(SHELL) $(srcdir)/script/uninstalllib.sh $(DESTDIR)$(LIBDIR) $(SHARED_LIBS) - @$(SHELL) $(srcdir)/script/uninstalllib.sh $(DESTDIR)$(LIBDIR) $(STATIC_LIBS) + #@$(SHELL) $(srcdir)/script/uninstalllib.sh $(DESTDIR)$(LIBDIR) $(STATIC_LIBS) uninstallheader: @$(SHELL) $(srcdir)/script/uninstallheader.sh $(DESTDIR)$(INCLUDEDIR) $(PUBLIC_HEADERS) @@ -182,43 +201,47 @@ ctags: pidl/Makefile: pidl/Makefile.PL cd pidl && $(PERL) Makefile.PL +testcov-html:: pidl-testcov + +pidl-testcov: pidl/Makefile + cd pidl && cover -test + installpidl: pidl/Makefile $(MAKE) -C pidl install uninstallpidl: pidl/Makefile $(MAKE) -C pidl uninstall -include heimdal_build/perl_path_wrapper.sh ../librpc/idl-deps.pl librpc/idl/*.idl| - $(IDL_HEADER_FILES) \ $(IDL_NDR_PARSE_H_FILES) $(IDL_NDR_PARSE_C_FILES) \ $(IDL_NDR_CLIENT_C_FILES) $(IDL_NDR_CLIENT_H_FILES) \ $(IDL_NDR_SERVER_C_FILES) $(IDL_SWIG_FILES) \ $(IDL_NDR_EJS_C_FILES) $(IDL_NDR_EJS_H_FILES): idl -idl_full: pidl/lib/Parse/Pidl/IDL.pm - @CPP="$(CPP)" PERL="$(PERL)" srcdir=$(srcdir) $(srcdir)/script/build_idl.sh FULL $(PIDL_ARGS) +idl_full: pidl/lib/Parse/Pidl/IDL.pm pidl/lib/Parse/Pidl/Expr.pm + @CPP="$(CPP)" PERL="$(PERL)" srcdir=$(srcdir) $(srcdir)/script/build_idl.sh FULL -idl: pidl/lib/Parse/Pidl/IDL.pm - @CPP="$(CPP)" PERL="$(PERL)" srcdir=$(srcdir) $(srcdir)/script/build_idl.sh PARTIAL $(PIDL_ARGS) +idl: pidl/lib/Parse/Pidl/IDL.pm pidl/lib/Parse/Pidl/Expr.pm + @CPP="$(CPP)" PERL="$(PERL)" srcdir=$(srcdir) $(srcdir)/script/build_idl.sh PARTIAL pidl/lib/Parse/Pidl/IDL.pm: pidl/idl.yp - -$(YAPP) -s -m 'Parse::Pidl::IDL' -o pidl/lib/Parse/Pidl/IDL.pm pidl/idl.yp + -$(YAPP) -m 'Parse::Pidl::IDL' -o pidl/lib/Parse/Pidl/IDL.pm pidl/idl.yp ||\ + touch pidl/lib/Parse/Pidl/IDL.pm -smb_interfaces: pidl/smb_interfaces.pm - $(PERL) -Ipidl $(srcdir)/script/build_smb_interfaces.pl \ - include/smb_interfaces.h - -pidl/smb_interfaces.pm: pidl/smb_interfaces.yp - -$(YAPP) -s -m 'smb_interfaces' -o pidl/smb_interfaces.pm pidl/smb_interfaces.yp +pidl/lib/Parse/Pidl/Expr.pm: pidl/idl.yp + -$(YAPP) -m 'Parse::Pidl::Expr' -o pidl/lib/Parse/Pidl/Expr.pm pidl/expr.yp ||\ + touch pidl/lib/Parse/Pidl/Expr.pm include/config.h: @echo "include/config.h not present" @echo "You need to rerun ./autogen.sh and ./configure" @/bin/false -$(srcdir)/version.h: - @$(SHELL) script/mkversion.sh VERSION version.h $(srcdir)/ +$(srcdir)/version.h: $(srcdir)/VERSION + @$(SHELL) script/mkversion.sh VERSION $(srcdir)/version.h $(srcdir)/ + +regen_version: + @$(SHELL) script/mkversion.sh VERSION $(srcdir)/version.h $(srcdir)/ clean_pch: @echo "Removing precompiled headers" @@ -232,11 +255,10 @@ clean:: clean_pch @echo Removing hostcc objects @-find . -name '*.ho' -exec rm -f '{}' \; @echo Removing binaries - @-rm -f $(BIN_PROGS) $(SBIN_PROGS) $(BINARIES) + @-rm -f $(BIN_PROGS) $(SBIN_PROGS) $(BINARIES) $(TORTURE_PROGS) @echo Removing libraries @-rm -f $(STATIC_LIBRARIES) $(SHARED_LIBRARIES) - @-rm -f bin/*.$(SHLIBEXT)* - @-rm -f bin/*.a + @-rm -f bin/static/*.a bin/shared/*.$(SHLIBEXT) @echo Removing modules @-rm -f bin/modules/*/*.$(SHLIBEXT) @-rm -f bin/*_init_module.c @@ -259,44 +281,15 @@ distclean: clean removebackup: -rm -f *.bak *~ */*.bak */*~ */*/*.bak */*/*~ */*/*/*.bak */*/*/*~ -realdistclean: distclean removebackup +realdistclean:: distclean removebackup -rm -f include/config_tmp.h.in -rm -f version.h -rm -f configure -rm -f $(MANPAGES) -test: $(DEFAULT_TEST_TARGET) - -test-swrap: all - $(srcdir)/script/tests/selftest.sh ${selftest_prefix} all SOCKET_WRAPPER - -test-noswrap: all - $(srcdir)/script/tests/selftest.sh ${selftest_prefix} all - -quicktest: all - $(srcdir)/script/tests/selftest.sh ${selftest_prefix} quick SOCKET_WRAPPER - -valgrindtest: valgrindtest-quick +check:: test -valgrindtest-quick: all - SMBD_VALGRIND="xterm -n smbd -e valgrind -q --db-attach=yes --num-callers=30" \ - VALGRIND="valgrind -q --num-callers=30 --log-file=${selftest_prefix}/valgrind.log" \ - $(srcdir)/script/tests/selftest.sh ${selftest_prefix} quick SOCKET_WRAPPER - -valgrindtest-all: all - SMBD_VALGRIND="xterm -n smbd -e valgrind -q --db-attach=yes --num-callers=30" \ - VALGRIND="valgrind -q --num-callers=30 --log-file=${selftest_prefix}/valgrind.log" \ - $(srcdir)/script/tests/selftest.sh ${selftest_prefix} all SOCKET_WRAPPER - -gdbtest: gdbtest-quick - -gdbtest-quick: all - SMBD_VALGRIND="xterm -n smbd -e gdb --args " \ - $(srcdir)/script/tests/selftest.sh ${selftest_prefix} quick SOCKET_WRAPPER - -gdbtest-all: all - SMBD_VALGRIND="xterm -n smbd -e gdb --args " \ - $(srcdir)/script/tests/selftest.sh ${selftest_prefix} all SOCKET_WRAPPER +include selftest/config.mk unused_macros: $(srcdir)/script/find_unused_macros.pl `find . -name "*.[ch]"` | sort @@ -305,35 +298,43 @@ unused_macros: # File types ############################################################################### -.SUFFIXES: .x .c .et .y .l .d .o .h .h.gch .a .so .1 .1.xml .3 .3.xml .5 .5.xml .7 .7.xml .8 .8.xml .ho .idl .hd - -.c.ho: - @echo "Compiling $< with host compiler" - @$(HOSTCC) `$(PERL) $(srcdir)/script/cflags.pl $@` $(CFLAGS) -c $< -o $@ +.SUFFIXES: .x .c .et .y .l .d .o .h .h.gch .a .$(SHLIBEXT) .1 .1.xml .3 .3.xml .5 .5.xml .7 .7.xml .8 .8.xml .ho .idl .hd .c.d: @echo "Generating dependencies for $<" - @$(CC) -M -MG -MP -MT $(<:.c=.o) `$(PERL) $(srcdir)/script/cflags.pl $@` $(CFLAGS) $< -o $@ + @$(DEPENDS) .c.hd: @echo "Generating host-compiler dependencies for $<" - @$(CC) -M -MG -MP -MT $(<:.c=.ho) `$(PERL) $(srcdir)/script/cflags.pl $@` $(CFLAGS) $< -o $@ + @$(HDEPENDS) include/includes.d: include/includes.h @echo "Generating dependencies for $<" - @$(CC) -M -MG -MT include/includes.h.gch $(CFLAGS) $< -o $@ + @$(PCHDEPENDS) .c.o: @if test -n "$(CC_CHECKER)"; then \ echo "Checking $< with '$(CC_CHECKER)'"; \ - $(CC_CHECKER) `$(PERL) $(srcdir)/script/cflags.pl $@` $(CFLAGS) $(PICFLAG) -c $< -o $@; \ + $(CHECK) ; \ fi @echo "Compiling $<" - @$(CC) `$(PERL) $(srcdir)/script/cflags.pl $@` $(CFLAGS) $(PICFLAG) -c $< -o $@ + @-mkdir -p `dirname $@` + @$(COMPILE) && exit 0 ; \ + echo "The following command failed:" 1>&2;\ + echo "$(COMPILE)" 1>&2;\ + $(COMPILE) >/dev/null 2>&1 + +.c.ho: + @echo "Compiling $< with host compiler" + @-mkdir -p `dirname $@` + @$(HCOMPILE) && exit 0;\ + echo "The following command failed:" 1>&2;\ + echo "$(HCOMPILE)" 1>&2;\ + $(HCOMPILE) >/dev/null 2>&1 .h.h.gch: @echo "Precompiling $<" - @$(CC) `$(PERL) $(srcdir)/script/cflags.pl $@` $(CFLAGS) $(PICFLAG) -c $< -o $@ + @$(PCHCOMPILE) .y.c: @echo "Building $< with $(YACC)" @@ -363,12 +364,7 @@ DOCBOOK_MANPAGE_URL = http://docbook.sourceforge.net/release/xsl/current/manpage DEP_FILES = $(patsubst %.ho,%.hd,$(patsubst %.o,%.d,$(ALL_OBJS))) \ include/includes.d -dist:: distclean idl_full manpages configure +dist:: idl_full manpages configure distclean configure: ./autogen.sh - -clean:: - @echo Removing dependency files - @find . -name \*.d -o -name \*.hd | xargs rm -f -