summaryrefslogtreecommitdiff
path: root/test/suite
diff options
context:
space:
mode:
Diffstat (limited to 'test/suite')
-rw-r--r--test/suite/ctor_files/ctor.cc.multi60
-rw-r--r--test/suite/foobar.h3
-rwxr-xr-xtest/suite/test.sh27
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}