summaryrefslogtreecommitdiff
path: root/Makefile.am
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile.am')
-rw-r--r--Makefile.am300
1 files changed, 213 insertions, 87 deletions
diff --git a/Makefile.am b/Makefile.am
index 774239eaad2..e71520bf887 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,4 +1,4 @@
-# Copyright (C) 2000-2006 MySQL AB
+# Copyright 2000-2008 MySQL AB, 2009 Sun Microsystems, 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
@@ -21,74 +21,26 @@ AUTOMAKE_OPTIONS = foreign
EXTRA_DIST = INSTALL-SOURCE INSTALL-WIN-SOURCE \
README COPYING EXCEPTIONS-CLIENT CMakeLists.txt
-SUBDIRS = . include @docs_dirs@ @zlib_dir@ @yassl_dir@ \
+SUBDIRS = . include @docs_dirs@ @zlib_dir@ \
@readline_topdir@ sql-common scripts \
- @thread_dirs@ pstack \
- @sql_union_dirs@ @man_dirs@ tests \
+ @pstack_dir@ \
+ @sql_union_dirs@ unittest \
+ @sql_server@ @man_dirs@ tests \
netware @libmysqld_dirs@ \
- @bench_dirs@ support-files @tools_dirs@
-
-DIST_SUBDIRS = . include @docs_dirs@ zlib \
- @readline_topdir@ sql-common \
- @thread_dirs@ pstack \
- @sql_union_dirs@ scripts @man_dirs@ tests SSL\
- BUILD netware os2 @libmysqld_dirs@ \
- @bench_dirs@ support-files @tools_dirs@ win
-
-# Run these targets before any others, also make part of clean target,
-# to make sure we create new links after a clean.
-BUILT_SOURCES = linked_client_sources linked_server_sources \
- @linked_client_targets@ \
- @linked_libmysqld_targets@ \
- linked_include_sources @linked_netware_sources@
-
-# The db.h file is a bit special, see note in "configure.in".
-# In the case we didn't compile with bdb, a dummy file is put
-# there, but will not be removed by the bdb make file becuase
-# it will never be called.
-CLEANFILES = $(BUILT_SOURCES) bdb/build_unix/db.h
+ mysql-test support-files sql-bench @tools_dirs@ \
+ win
+
+DIST_SUBDIRS = . include Docs zlib \
+ cmd-line-utils sql-common scripts \
+ pstack \
+ strings mysys dbug extra regex libmysql libmysql_r client unittest storage plugin \
+ vio sql man tests \
+ netware libmysqld \
+ mysql-test support-files sql-bench server-tools \
+ win \
+ BUILD
DISTCLEANFILES = ac_available_languages_fragment
-# Our current filtering of "sql_yacc.cc" in "sql/Makefile.am" creates
-# a problem, if a VPATH build and "sql_yacc.cc" was part of the source
-# distribution we end up with one "sql_yacc.cc" in the source tree,
-# and one in the build tree. This breaks "distcleancheck", until this
-# is sorted out we redefine the find that scans for files not removed
-
-distcleancheck_listfiles = find . -name sql_yacc.cc -o -type f -print
-
-linked_include_sources:
- cd include; $(MAKE) link_sources
- echo timestamp > linked_include_sources
-
-linked_client_sources: @linked_client_targets@
- cd client; $(MAKE) link_sources
- echo timestamp > linked_client_sources
-
-linked_libmysql_sources:
- cd libmysql; $(MAKE) link_sources
- echo timestamp > linked_libmysql_sources
-
-linked_libmysql_r_sources: linked_libmysql_sources
- cd libmysql_r; $(MAKE) link_sources
- echo timestamp > linked_libmysql_r_sources
-
-linked_libmysqld_sources:
- cd libmysqld; $(MAKE) link_sources
- echo timestamp > linked_libmysqld_sources
-
-linked_libmysqldex_sources:
- cd libmysqld/examples; $(MAKE) link_sources
- echo timestamp > linked_libmysqldex_sources
-
-linked_netware_sources:
- cd @netware_dir@; $(MAKE) link_sources
- echo timestamp > linked_netware_sources
-
-linked_server_sources:
- cd sql; $(MAKE) link_sources
- echo timestamp > linked_server_sources
-
# Create permission databases
init-db: all
$(top_builddir)/scripts/mysql_install_db
@@ -97,15 +49,17 @@ bin-dist: all
$(top_builddir)/scripts/make_binary_distribution @MAKE_BINARY_DISTRIBUTION_OPTIONS@
# Remove BK's "SCCS" subdirectories from source distribution
-# Create initial database files for Windows installations.
+# Create initial database files for Windows installations and check them.
dist-hook:
rm -rf `find $(distdir) -type d -name SCCS -print`
- rm -f `find $(distdir) -type l -print`
mkdir -p $(distdir)/win
scripts/mysql_install_db --no-defaults --cross-bootstrap \
- --basedir=$(top_builddir) \
+ --builddir=$(top_builddir) \
--datadir=$(distdir)/win/data \
--srcdir=$(top_srcdir)
+ storage/myisam/myisamchk --silent --fast $(distdir)/win/data/mysql/*.MYI
+
+all-local: @ABI_CHECK@
tags:
support-files/build-tags
@@ -113,7 +67,9 @@ tags:
.PHONY: init-db bin-dist \
test test-force test-full test-force-full test-force-mem \
test-pl test-force-pl test-full-pl test-force-full-pl test-force-pl-mem \
- test-ps test-ns test-ext-funcs test-ext \
+ test-unit test-ps test-nr test-pr test-ns test-binlog-statement \
+ test-ext-funcs test-ext-rpl test-ext-partitions test-ext-jp \
+ test-ext-stress test-ext test-embedded test-reprepare \
test-fast test-fast-cursor test-fast-view test-fast-prepare \
test-full-qa
@@ -125,18 +81,51 @@ tags:
# will then calculate the various port numbers it needs from this,
# making sure each user use different ports.
+test-unit:
+ cd unittest && $(MAKE) test
+
test-ps:
cd mysql-test ; \
- @PERL@ ./mysql-test-run.pl $(force) $(mem) --ps-protocol
+ @PERL@ ./mysql-test-run.pl $(force) --ps-protocol --mysqld=--binlog-format=mixed
+
+test-nr:
+ cd mysql-test ; \
+ @PERL@ ./mysql-test-run.pl $(force) --mysqld=--binlog-format=row
+
+test-pr:
+ cd mysql-test ; \
+ @PERL@ ./mysql-test-run.pl $(force) $(mem) --ps-protocol --mysqld=--binlog-format=row
test-ns:
cd mysql-test ; \
- @PERL@ ./mysql-test-run.pl $(force) $(mem)
+ @PERL@ ./mysql-test-run.pl $(force) $(mem) --mysqld=--binlog-format=mixed
+
+test-binlog-statement:
+ cd mysql-test ; \
+ @PERL@ ./mysql-test-run.pl $(force) --mysqld=--binlog-format=statement
+
+# This code is duplicated in "test-bt", see the Changeset comment of 2007-Dec-07
+test-embedded:
+ if [ -e bin/mysqltest_embedded -o -e libmysqld/examples/mysqltest_embedded ] ; then \
+ cd mysql-test ; MTR_BUILD_THREAD=auto \
+ @PERL@ ./mysql-test-run.pl --comment=embedded --force --timer \
+ --embedded-server --skip-rpl --skip-ndbcluster ; \
+ else \
+ echo "no program found for 'embedded' tests - skipped testing" ; \
+ fi
+
+test-reprepare:
+ cd mysql-test ; \
+ @PERL@ ./mysql-test-run.pl $(force) $(mem) --ps-protocol \
+ --mysqld=--debug=+d,reprepare_each_statement
-test: test-ns test-ps
+test: test-unit test-ns test-pr
-# To ease script-writing, although in 5.0 it is identical to 'test'
-test-full: test
+smoke:
+ cd mysql-test ; \
+ @PERL@ ./mysql-test-run.pl --do-test=s
+
+test-full: test test-nr test-ps
test-force:
$(MAKE) force=--force test
@@ -150,25 +139,69 @@ test-force-mem:
test-bt:
-cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --force --comment=normal --report-features
+ @PERL@ ./mysql-test-run.pl --comment=normal --force --timer \
+ --skip-ndbcluster --report-features
-cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --force --comment=ps --ps-protocol
+ @PERL@ ./mysql-test-run.pl --comment=ps --force --timer \
+ --skip-ndbcluster --ps-protocol
+ -if [ -e bin/ndbd -o -e storage/ndb/src/kernel/ndbd ] ; then \
+ cd mysql-test ; \
+ MTR_BUILD_THREAD=auto \
+ @PERL@ ./mysql-test-run.pl --comment=ndb+rpl_ndb+ps --force --timer \
+ --ps-protocol --mysqld=--binlog-format=row --suite=ndb,rpl_ndb ; \
+ MTR_BUILD_THREAD=auto \
+ @PERL@ ./mysql-test-run.pl --comment=ndb --force --timer \
+ --with-ndbcluster-only ; \
+ else \
+ echo "no program found for 'ndbcluster' tests - skipped testing" ; \
+ fi
-cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --force --comment=funcs1_ps --ps-protocol --reorder --suite=funcs_1
+ @PERL@ ./mysql-test-run.pl --force --comment=funcs1+ps --ps-protocol --reorder --suite=funcs_1
-cd mysql-test ; MTR_BUILD_THREAD=auto \
@PERL@ ./mysql-test-run.pl --force --comment=funcs2 --suite=funcs_2
+ -cd mysql-test ; MTR_BUILD_THREAD=auto \
+ @PERL@ ./mysql-test-run.pl --force --comment=partitions --suite=parts
+ -cd mysql-test ; MTR_BUILD_THREAD=auto \
+ @PERL@ ./mysql-test-run.pl --force --comment=stress --suite=stress
+ -cd mysql-test ; MTR_BUILD_THREAD=auto \
+ @PERL@ ./mysql-test-run.pl --force --comment=jp --suite=jp
-if [ -d mysql-test/suite/nist ] ; then \
- cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --comment=NIST+normal --force --suite=nist ; \
+ cd mysql-test ; MTR_BUILD_THREAD=auto \
+ @PERL@ ./mysql-test-run.pl --comment=nist --force --suite=nist ; \
fi
-if [ -d mysql-test/suite/nist ] ; then \
- cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --comment=NIST+ps --force --suite=nist --ps-protocol ; \
+ cd mysql-test ; MTR_BUILD_THREAD=auto \
+ @PERL@ ./mysql-test-run.pl --comment=nist+ps --force --suite=nist --ps-protocol ; \
+ fi
+ -if [ -e bin/mysqltest_embedded -o -e libmysqld/examples/mysqltest_embedded ] ; then \
+ cd mysql-test ; MTR_BUILD_THREAD=auto \
+ @PERL@ ./mysql-test-run.pl --comment=embedded --force --timer \
+ --embedded-server --skip-rpl --skip-ndbcluster ; \
+ else \
+ echo "no program found for 'embedded' tests - skipped testing" ; \
fi
+test-bt-fast:
+ -cd mysql-test ; MTR_BUILD_THREAD=auto \
+ @PERL@ ./mysql-test-run.pl --comment=ps --force --timer \
+ --skip-ndbcluster --ps-protocol --report-features
+ -if [ -e bin/ndbd -o -e storage/ndb/src/kernel/ndbd ] ; then \
+ cd mysql-test ; \
+ MTR_BUILD_THREAD=auto \
+ @PERL@ ./mysql-test-run.pl --comment=ndb --force --timer \
+ --with-ndbcluster-only ; \
+ else \
+ echo "no program found for 'ndbcluster' tests - skipped testing" ; \
+ fi
+ -cd mysql-test ; MTR_BUILD_THREAD=auto \
+ @PERL@ ./mysql-test-run.pl --force --comment=stress --suite=stress
+
test-bt-debug:
-cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --force --comment=debug --report-features
+ @PERL@ ./mysql-test-run.pl --comment=debug --force --timer \
+ --skip-ndbcluster --skip-rpl --report-features
+
+test-bt-debug-fast:
# Keep these for a while
test-pl: test
@@ -182,12 +215,29 @@ test-ext-funcs:
@PERL@ ./mysql-test-run.pl --force --reorder --suite=funcs_1 ; \
@PERL@ ./mysql-test-run.pl --force --suite=funcs_2
-test-ext: test-ext-funcs
+test-ext-rpl:
+ cd mysql-test ; \
+ @PERL@ ./mysql-test-run.pl --force --suite=rpl
+
+test-ext-partitions:
+ cd mysql-test ; \
+ @PERL@ ./mysql-test-run.pl --force --suite=parts
+
+test-ext-jp:
+ cd mysql-test ; \
+ @PERL@ ./mysql-test-run.pl --force --suite=jp
+
+test-ext-stress:
+ cd mysql-test ; \
+ @PERL@ ./mysql-test-run.pl --force --big-test --suite=stress
+
+test-ext: test-ext-funcs test-ext-rpl test-ext-partitions test-ext-jp test-ext-stress
test-fast:
cd mysql-test ; \
@PERL@ ./mysql-test-run.pl $(subset) --force --skip-ndb --skip-innodb --skip-im --skip-rpl ; \
- @PERL@ ./mysql-test-run.pl $(subset) --force --suite=funcs_1 --do-test=myisam
+ @PERL@ ./mysql-test-run.pl $(subset) --force --suite=funcs_1 --do-test=myisam ; \
+ @PERL@ ./mysql-test-run.pl $(subset) --force --suite=stress --do-test=ddl_myisam
test-fast-view:
$(MAKE) subset=--view-protocol test-fast
@@ -199,9 +249,85 @@ test-fast-prepare:
$(MAKE) subset=--ps-protocol test-fast
test-full-qa:
- $(MAKE) force=--force test-pl \
- test-ext test-fast-view \
- test-fast-cursor
+ $(MAKE) force=--force test-pr \
+ test-binlog-statement test-ext test-fast-view \
+ test-fast-cursor test-unit
+
+#
+# Headers which need to be checked for abi/api compatibility.
+# API_PREPROCESSOR_HEADER will be used until mysql_priv.h stablizes
+# after which TEST_PREPROCESSOR_HEADER will be used.
+#
+
+API_PREPROCESSOR_HEADER = $(top_srcdir)/include/mysql/plugin.h \
+ $(top_srcdir)/include/mysql.h
+
+TEST_PREPROCESSOR_HEADER = $(top_srcdir)/include/mysql/plugin.h \
+ $(top_srcdir)/sql/mysql_priv.h \
+ $(top_srcdir)/include/mysql.h
+
+#
+# Rules for checking that the abi/api has not changed.
+#
+# The following steps are followed in the do_abi_check rule below
+#
+# 1) Generate preprocessor output for the files that need to
+# be tested for abi/api changes. use -nostdinc to prevent
+# generation of preprocessor output for system headers. This
+# results in messages in stderr saying that these headers
+# were not found. Redirect the stderr output to /dev/null
+# to prevent seeing these messages.
+# 2) sed the output to
+# 2.1) remove blank lines and lines that begin with "# "
+# 2.2) When gcc -E is run on the Mac OS and solaris sparc platforms it
+# introduces a line of output that shows up as a difference between
+# the .pp and .out files. Remove these OS specific preprocessor text
+# inserted by the preprocessor.
+# 3) diff the generated file and the canons (.pp files already in
+# the repository).
+# 4) delete the .out file that is generated.
+#
+# If the diff fails, the generated file is not removed. This will
+# be useful for analysis of ABI differences (e.g. using a visual
+# diff tool).
+#
+# A ABI change that causes a build to fail will always be accompanied
+# by new canons (.out files). The .out files that are not removed will
+# be replaced as the new .pp files.
+#
+# e.g. If include/mysql/plugin.h has an ABI change then this rule would
+# leave a <build directory>/abi_check.out file.
+#
+# A developer with a justified API change will then do a
+# mv <build directory>/abi_check.out include/mysql/plugin.pp
+# to replace the old canons with the new ones.
+#
+
+abi_check: $(API_PREPROCESSOR_HEADER)
+ $(MAKE) abi_headers="$^" do_abi_check
+
+abi_check_all: $(TEST_PREPROCESSOR_HEADER)
+ $(MAKE) abi_headers="$^" do_abi_check
+
+do_abi_check:
+ set -ex; \
+ for file in $(abi_headers); do \
+ @CC@ -E -nostdinc -dI \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/include/mysql \
+ -I$(top_srcdir)/sql \
+ -I$(top_builddir)/include \
+ -I$(top_builddir)/include/mysql \
+ -I$(top_builddir)/sql \
+ $$file 2>/dev/null | \
+ @SED@ -e '/^# /d' \
+ -e '/^[ ]*$$/d' \
+ -e '/^#pragma GCC set_debug_pwd/d' \
+ -e '/^#ident/d' > \
+ $(top_builddir)/abi_check.out; \
+ @DIFF@ -w $$file.pp $(top_builddir)/abi_check.out; \
+ @RM@ $(top_builddir)/abi_check.out; \
+ done
# Don't update the files from bitkeeper
%::SCCS/s.%