Merge commit '10a89ef04df5669c5cdd02f786150a7ab8454e01'
[sliver-openvswitch.git] / Makefile.am
index b71ca1f..eed5a74 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012 Nicira, Inc.
+# Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013 Nicira, Inc.
 #
 # Copying and distribution of this file, with or without modification,
 # are permitted in any medium without royalty provided the copyright
@@ -43,18 +43,21 @@ EXTRA_DIST = \
        DESIGN \
        FAQ \
        INSTALL \
+       INSTALL.Debian \
        INSTALL.Fedora \
        INSTALL.KVM \
        INSTALL.Libvirt \
        INSTALL.RHEL \
        INSTALL.SSL \
        INSTALL.XenServer \
-       INSTALL.bridge \
        INSTALL.userspace \
        IntegrationGuide \
        NOTICE \
+       OPENFLOW-1.1+ \
        PORTING \
+       README-OFTest \
        README-gcov \
+       README-lisp \
        REPORTING-BUGS \
        SubmittingPatches \
        WHY-OVS \
@@ -105,6 +108,7 @@ ro_shell = printf '\043 Generated automatically -- do not modify!    -*- buffer-
 
 SUFFIXES += .in
 .in:
+       @mkdir -p $$(dirname $@)
        $(PERL) $(srcdir)/build-aux/soexpand.pl -I$(srcdir) < $< | \
            sed \
                -e 's,[@]PKIDIR[@],$(PKIDIR),g' \
@@ -146,7 +150,7 @@ dist-hook-git: distfiles
          (cd datapath && $(MAKE) distfiles);                               \
          (cat distfiles; sed 's|^|datapath/|' datapath/distfiles) |        \
            sort -u > all-distfiles;                                        \
-         (cd $(srcdir) && git ls-files) | grep -v '\.gitignore$$' |        \
+         (cd $(srcdir) && git ls-files) | grep -vFf $(srcdir)/.non-distfiles |     \
            sort -u > all-gitfiles;                                         \
          comm -1 -3 all-distfiles all-gitfiles > missing-distfiles;        \
          if test -s missing-distfiles; then                                \
@@ -168,17 +172,44 @@ CLEANFILES += distfiles
 endif
 .PHONY: dist-hook-git
 
-# Check that "struct vlog_ratelimit" is always declared "static".
-ALL_LOCAL += rate-limit-check
-rate-limit-check:
+# Check that every .c file includes <config.h>.
+ALL_LOCAL += config-h-check
+config-h-check:
+       @cd $(srcdir); \
+       if test -e .git && (git --version) >/dev/null 2>&1 && \
+          git --no-pager grep -L '#include <config\.h>' `git ls-files | grep '\.c$$' | \
+               grep -vE '^datapath|^lib/sflow|^third-party'`; \
+       then \
+           echo "See above for list of violations of the rule that"; \
+           echo "every C source file must #include <config.h>."; \
+           exit 1; \
+       fi
+.PHONY: config-h-check
+
+# Check that certain data structures are always declared "static".
+ALL_LOCAL += static-check
+static-check:
        @if test -e $(srcdir)/.git && (git --version) >/dev/null 2>&1 && \
-           git --no-pager grep -n -E '^[       ]+struct vlog_rate_limit.*=' $(srcdir); \
+           git --no-pager grep -n -E '^[       ]+(struct vlog_rate_limit|pthread_once_t|struct ovsthread_once).*=' $(srcdir); \
          then \
            echo "See above for list of violations of the rule that "; \
-           echo "'struct vlog_rate_limit' must always be 'static'"; \
+           echo "certain data structures must always be 'static'"; \
+           exit 1; \
+        fi
+.PHONY: static-check
+
+# Check that assert.h is not used outside a whitelist of files.
+ALL_LOCAL += check-assert-h-usage
+check-assert-h-usage:
+       @if test -e $(srcdir)/.git && (git --version) >/dev/null 2>&1 && \
+           (cd $(srcdir) && git --no-pager grep -l -E '[<]assert.h[>]') | \
+           $(EGREP) -v '^lib/(sflow_receiver|vlog|worker).c$$|^tests/'; \
+         then \
+           echo "Files listed above unexpectedly #include <""assert.h"">."; \
+           echo "Please use ovs_assert (from util.h) instead of assert."; \
            exit 1; \
         fi
-.PHONY: rate-limit-check
+.PHONY: check-assert-h-usage
 
 if HAVE_GROFF
 ALL_LOCAL += manpage-check
@@ -229,3 +260,5 @@ include rhel/automake.mk
 include xenserver/automake.mk
 include python/automake.mk
 include python/compat/automake.mk
+include planetlab/automake.mk
+include tutorial/automake.mk