diff options
Diffstat (limited to 'Makefile.am')
-rw-r--r-- | Makefile.am | 300 |
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.% |