-# 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
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 \
sed \
-e 's,[@]PKIDIR[@],$(PKIDIR),g' \
-e 's,[@]LOGDIR[@],$(LOGDIR),g' \
+ -e 's,[@]DBDIR[@],$(DBDIR),g' \
-e 's,[@]PERL[@],$(PERL),g' \
-e 's,[@]PYTHON[@],$(PYTHON),g' \
-e 's,[@]RUNDIR[@],$(RUNDIR),g' \
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: rate-limit-check
+.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).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: check-assert-h-usage
+
+ALL_LOCAL += thread-safety-check
+thread-safety-check:
+ @if test -e '$(srcdir)'/.git && (git --version) >/dev/null 2>&1 && \
+ grep -n -f '$(srcdir)'/build-aux/thread-safety-blacklist \
+ `git ls-files '$(srcdir)' | grep '\.[ch]$$' \
+ | $(EGREP) -v '^datapath|^lib/sflow|^third-party'` \
+ | $(EGREP) -v ':[ ]*/?\*'; \
+ then \
+ echo "See above for list of calls to functions that are"; \
+ echo "blacklisted due to thread safety issues"; \
+ exit 1; \
+ fi
+EXTRA_DIST += build-aux/thread-safety-blacklist
if HAVE_GROFF
ALL_LOCAL += manpage-check
uninstall-local: $(UNINSTALL_LOCAL)
.PHONY: $(DIST_HOOKS) $(CLEAN_LOCAL) $(INSTALL_DATA_LOCAL) $(UNINSTALL_LOCAL)
+modules_install:
+if LINUX_ENABLED
+ cd datapath/linux && $(MAKE) modules_install
+endif
+
include lib/automake.mk
include ofproto/automake.mk
include utilities/automake.mk
include xenserver/automake.mk
include python/automake.mk
include python/compat/automake.mk
+include tutorial/automake.mk