summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitattributes19
-rw-r--r--.gitignore3
-rw-r--r--buildfile6
-rw-r--r--libmprint/manifest2
-rw-r--r--libprint/.gitignore6
-rw-r--r--libprint/README.md3
-rw-r--r--libprint/build/.gitignore7
-rw-r--r--libprint/build/root.build8
-rw-r--r--libprint/buildfile2
-rw-r--r--libprint/libprint/buildfile29
-rw-r--r--libprint/libprint/export.hxx9
-rw-r--r--libprint/libprint/version.hxx.in1
-rw-r--r--libprint/manifest13
-rw-r--r--libprint/tests/basics/driver.cxx4
-rw-r--r--libprint/tests/build/.gitignore7
-rw-r--r--libprint/tests/build/root.build4
16 files changed, 87 insertions, 36 deletions
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..1631641
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,19 @@
+# This is a good default: files that are auto-detected by git to be text are
+# converted to the platform-native line ending (LF on Unix, CRLF on Windows)
+# in the working tree and to LF in the repository.
+#
+* text=auto
+
+# Use `eol=crlf` for files that should have the CRLF line ending both in the
+# working tree (even on Unix) and in the repository.
+#
+#*.bat text eol=crlf
+
+# Use `eol=lf` for files that should have the LF line ending both in the
+# working tree (even on Windows) and in the repository.
+#
+#*.sh text eol=lf
+
+# Use `binary` to make sure certain files are never auto-detected as text.
+#
+#*.png binary
diff --git a/.gitignore b/.gitignore
index 392d774..dd04439 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,5 @@
.bdep/
+# Local default options files.
+#
+.build2/local/
diff --git a/buildfile b/buildfile
new file mode 100644
index 0000000..c3c8909
--- /dev/null
+++ b/buildfile
@@ -0,0 +1,6 @@
+# Glue buildfile that "pulls" all the packages in the project.
+#
+import pkgs = [dir_paths] $process.run_regex(\
+ cat $src_root/packages.manifest, '\s*location\s*:\s*(\S+)\s*', '\1')
+
+./: $pkgs
diff --git a/libmprint/manifest b/libmprint/manifest
index e5de794..50003bb 100644
--- a/libmprint/manifest
+++ b/libmprint/manifest
@@ -5,7 +5,7 @@ project: hello
summary: The modularized "Hello World" example printer library
license: MIT
tags: c++, world, printer, example, modules
-description: \
+description:\
A simple library that implements the "Hello World" example printer in C++
with modules.
\
diff --git a/libprint/.gitignore b/libprint/.gitignore
index cece09c..1c363a0 100644
--- a/libprint/.gitignore
+++ b/libprint/.gitignore
@@ -3,10 +3,16 @@
*.d
*.t
*.i
+*.i.*
*.ii
+*.ii.*
*.o
*.obj
+*.gcm
+*.pcm
+*.ifc
*.so
+*.dylib
*.dll
*.a
*.lib
diff --git a/libprint/README.md b/libprint/README.md
new file mode 100644
index 0000000..b4312cd
--- /dev/null
+++ b/libprint/README.md
@@ -0,0 +1,3 @@
+# libprint
+
+A simple library that implements the "Hello World" example printer in C++.
diff --git a/libprint/build/.gitignore b/libprint/build/.gitignore
index 4a730a3..974e01d 100644
--- a/libprint/build/.gitignore
+++ b/libprint/build/.gitignore
@@ -1,3 +1,4 @@
-config.build
-root/
-bootstrap/
+/config.build
+/root/
+/bootstrap/
+build/
diff --git a/libprint/build/root.build b/libprint/build/root.build
index 9c83a8a..ae3d2a6 100644
--- a/libprint/build/root.build
+++ b/libprint/build/root.build
@@ -1,3 +1,7 @@
+# Uncomment to suppress warnings coming from external libraries.
+#
+#cxx.internal.scope = current
+
cxx.std = latest
using cxx
@@ -7,6 +11,10 @@ ixx{*}: extension = ixx
txx{*}: extension = txx
cxx{*}: extension = cxx
+# Assume headers are importable unless stated otherwise.
+#
+hxx{*}: cxx.importable = true
+
# The test target for cross-testing (running tests under Wine, etc).
#
test.target = $cxx.target
diff --git a/libprint/buildfile b/libprint/buildfile
index 3ac0526..9a5145b 100644
--- a/libprint/buildfile
+++ b/libprint/buildfile
@@ -1,4 +1,4 @@
-./: {*/ -build/} manifest
+./: {*/ -build/} doc{README.md} manifest
# Don't install tests.
#
diff --git a/libprint/libprint/buildfile b/libprint/libprint/buildfile
index c2a6d79..5bf421a 100644
--- a/libprint/libprint/buildfile
+++ b/libprint/libprint/buildfile
@@ -1,33 +1,26 @@
-int_libs = # Interface dependencies.
-imp_libs = # Implementation dependencies.
-#import imp_libs += libhello%lib{hello}
+intf_libs = # Interface dependencies.
+impl_libs = # Implementation dependencies.
+#import xxxx_libs += libhello%lib{hello}
-lib{print}: {hxx ixx txx cxx}{** -version} hxx{version} $imp_libs $int_libs
+lib{print}: {hxx ixx txx cxx}{** -version} hxx{version} $impl_libs $intf_libs
-# Include the generated version header into the distribution (so that we don't
-# pick up an installed one) and don't remove it when cleaning in src (so that
-# clean results in a state identical to distributed).
-#
hxx{version}: in{version} $src_root/manifest
-hxx{version}:
-{
- dist = true
- clean = ($src_root != $out_root)
-}
+
+hxx{export}@./: cxx.importable = false
# Build options.
#
cxx.poptions =+ "-I$out_root" "-I$src_root"
-obja{*}: cxx.poptions += -DLIBPRINT_STATIC_BUILD
-objs{*}: cxx.poptions += -DLIBPRINT_SHARED_BUILD
+{hbmia obja}{*}: cxx.poptions += -DLIBPRINT_STATIC_BUILD
+{hbmis objs}{*}: cxx.poptions += -DLIBPRINT_SHARED_BUILD
# Export options.
#
lib{print}:
{
cxx.export.poptions = "-I$out_root" "-I$src_root"
- cxx.export.libs = $int_libs
+ cxx.export.libs = $intf_libs
}
liba{print}: cxx.export.poptions += -DLIBPRINT_STATIC
@@ -38,9 +31,9 @@ libs{print}: cxx.export.poptions += -DLIBPRINT_SHARED
# for details on the version.* variable values.
#
if $version.pre_release
- lib{print}: bin.lib.version = @"-$version.project_id"
+ lib{print}: bin.lib.version = "-$version.project_id"
else
- lib{print}: bin.lib.version = @"-$version.major.$version.minor"
+ lib{print}: bin.lib.version = "-$version.major.$version.minor"
# Install into the libprint/ subdirectory of, say, /usr/include/
# recreating subdirectories.
diff --git a/libprint/libprint/export.hxx b/libprint/libprint/export.hxx
index f4b591e..23e59fb 100644
--- a/libprint/libprint/export.hxx
+++ b/libprint/libprint/export.hxx
@@ -27,8 +27,13 @@
#else
// If none of the above macros are defined, then we assume we are being used
// by some third-party build system that cannot/doesn't signal the library
-// type. Note that this fallback works for both static and shared but in case
-// of shared will be sub-optimal compared to having dllimport.
+// type. Note that this fallback works for both static and shared libraries
+// provided the library only exports functions (in other words, no global
+// exported data) and for the shared case the result will be sub-optimal
+// compared to having dllimport. If, however, your library does export data,
+// then you will probably want to replace the fallback with the (commented
+// out) error since it won't work for the shared case.
//
# define LIBPRINT_SYMEXPORT // Using static or shared.
+//# error define LIBPRINT_STATIC or LIBPRINT_SHARED preprocessor macro to signal libprint library type being linked
#endif
diff --git a/libprint/libprint/version.hxx.in b/libprint/libprint/version.hxx.in
index 7d3c9e0..97b5747 100644
--- a/libprint/libprint/version.hxx.in
+++ b/libprint/libprint/version.hxx.in
@@ -22,6 +22,7 @@
#define LIBPRINT_VERSION $libprint.version.project_number$ULL
#define LIBPRINT_VERSION_STR "$libprint.version.project$"
#define LIBPRINT_VERSION_ID "$libprint.version.project_id$"
+#define LIBPRINT_VERSION_FULL "$libprint.version$"
#define LIBPRINT_VERSION_MAJOR $libprint.version.major$
#define LIBPRINT_VERSION_MINOR $libprint.version.minor$
diff --git a/libprint/manifest b/libprint/manifest
index 1c1d292..c70ebe5 100644
--- a/libprint/manifest
+++ b/libprint/manifest
@@ -1,17 +1,16 @@
: 1
name: libprint
-version: 1.0.0+4
+version: 1.0.0+11
+language: c++
project: hello
summary: The "Hello World" example printer library
license: MIT ; MIT License.
topics: hello world example
-description: \
-A simple library that implements the "Hello World" example printer in C++.
-\
+description-file: README.md
url: https://git.build2.org/cgit/hello/libprint
src-url: https://git.build2.org/cgit/hello/libprint/tree/libprint
email: users@build2.org
-build-email: builds@build2.org
+build-warning-email: builds@build2.org
builds: all
-depends: * build2 >= 0.9.0
-depends: * bpkg >= 0.9.0
+depends: * build2 >= 0.16.0-
+depends: * bpkg >= 0.16.0-
diff --git a/libprint/tests/basics/driver.cxx b/libprint/tests/basics/driver.cxx
index e4439f3..5a093dd 100644
--- a/libprint/tests/basics/driver.cxx
+++ b/libprint/tests/basics/driver.cxx
@@ -1,9 +1,11 @@
-#include <cassert>
#include <sstream>
#include <libprint/version.hxx>
#include <libprint/print.hxx>
+#undef NDEBUG
+#include <cassert>
+
int main ()
{
using namespace std;
diff --git a/libprint/tests/build/.gitignore b/libprint/tests/build/.gitignore
index 4a730a3..974e01d 100644
--- a/libprint/tests/build/.gitignore
+++ b/libprint/tests/build/.gitignore
@@ -1,3 +1,4 @@
-config.build
-root/
-bootstrap/
+/config.build
+/root/
+/bootstrap/
+build/
diff --git a/libprint/tests/build/root.build b/libprint/tests/build/root.build
index a67b2fe..8fafbfe 100644
--- a/libprint/tests/build/root.build
+++ b/libprint/tests/build/root.build
@@ -7,6 +7,10 @@ ixx{*}: extension = ixx
txx{*}: extension = txx
cxx{*}: extension = cxx
+# Assume headers are importable unless stated otherwise.
+#
+hxx{*}: cxx.importable = true
+
# Every exe{} in this subproject is by default a test.
#
exe{*}: test = true