diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/suite/ctor_files/ctor.cc.multi | 60 | ||||
-rw-r--r-- | test/suite/foobar.h | 3 | ||||
-rwxr-xr-x | test/suite/test.sh | 27 |
3 files changed, 90 insertions, 0 deletions
diff --git a/test/suite/ctor_files/ctor.cc.multi b/test/suite/ctor_files/ctor.cc.multi new file mode 100644 index 0000000..d518337 --- /dev/null +++ b/test/suite/ctor_files/ctor.cc.multi @@ -0,0 +1,60 @@ +// -*- c++ -*- +// Distributed under the BSD 2-Clause License. +// See accompanying file LICENSE for details. +#include <libctor.h> +//#include "config.h" + +#include "foobar.h" + +namespace +{ +BuildConfigurations ctorConfigs() +{ + return + { + { + .name = "hello", + .target = "hello", + .sources = { + "hello.cc", + }, + .cxxflags = { + "-std=c++20", + "-O3", + "-g", + "-Wall", + "-Werror", + }, + .externals = {"bar"}, + } + }; +} + +ExternalConfigurations ctorExtConfigs() +{ + return + { + { + .name = "bar", + .cxxflags = { "-D_A_", "-DFOO"}, + .cflags = { "-D_B_" }, + .ldflags = { "-D_C_" }, + .asmflags = { "-D_D_" }, + // Creates --with-foo-prefix arg to configure which will be used for + // -L and -I flags. + // If not specified configure will try to find them in the system paths. + }, +// { +// .name = "bar", +// .type = TargetType::ExternalPkgConfig, +// .min_version = "0.1", +// .max_version = "0.9", +// // cflags, cxxflags and ldflags deduced by pkg-config tool (or parsed +// // directly from .pc if faster) +// }, + }; +} +} + +REG(ctorConfigs); +REG(ctorExtConfigs); diff --git a/test/suite/foobar.h b/test/suite/foobar.h new file mode 100644 index 0000000..e6e274e --- /dev/null +++ b/test/suite/foobar.h @@ -0,0 +1,3 @@ +#pragma once + +// Nothing to see here diff --git a/test/suite/test.sh b/test/suite/test.sh index 8d22206..c980154 100755 --- a/test/suite/test.sh +++ b/test/suite/test.sh @@ -75,3 +75,30 @@ MOD2=`stat -c %Y build/hello-hello_cc.o` [[ $MOD1 == $MOD2 ]] && fail ${LINENO} (echo $MD5C | md5sum --status -c) && fail ${LINENO} (echo $MD5 | md5sum --status -c) && fail ${LINENO} + +cp ctor_files/ctor.cc.multi ctor.cc + +MD5C=`md5sum configuration.cc` +MD5=`md5sum ctor` +MOD1=`stat -c %Y build/hello-hello_cc.o` +sleep 1.1 + +# Run normally to reconfigure, rebuild ctor and rebuild hello.cc +ctor -v + +MOD2=`stat -c %Y build/hello-hello_cc.o` +[[ $MOD1 == $MOD2 ]] && fail ${LINENO} +(echo $MD5C | md5sum --status -c) && fail ${LINENO} +(echo $MD5 | md5sum --status -c) && fail ${LINENO} + +# now touching foobar.h, should retrigger re-configuration +touch foobar.h + +MOD1=`stat -c %Y ctor` +sleep 1.1 + +# Run normally to reconfigure, rebuild ctor and rebuild hello.cc +ctor -v + +MOD2=`stat -c %Y ctor` +[[ $MOD1 == $MOD2 ]] && fail ${LINENO} |