diff options
-rw-r--r-- | .gitattributes | 19 | ||||
-rw-r--r-- | buildfile | 6 | ||||
-rw-r--r-- | libhello/.gitignore | 6 | ||||
-rw-r--r-- | libhello/README.md | 4 | ||||
-rw-r--r-- | libhello/build/.gitignore | 7 | ||||
-rw-r--r-- | libhello/build/root.build | 8 | ||||
-rw-r--r-- | libhello/buildfile | 2 | ||||
-rw-r--r-- | libhello/libhello/buildfile | 28 | ||||
-rw-r--r-- | libhello/libhello/export.hxx | 9 | ||||
-rw-r--r-- | libhello/libhello/version.hxx.in | 1 | ||||
-rw-r--r-- | libhello/manifest | 14 | ||||
-rw-r--r-- | libhello/tests/basics/driver.cxx | 4 | ||||
-rw-r--r-- | libhello/tests/build/.gitignore | 7 | ||||
-rw-r--r-- | libhello/tests/build/root.build | 4 | ||||
-rw-r--r-- | libmhello/manifest | 2 |
15 files changed, 85 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/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/libhello/.gitignore b/libhello/.gitignore index cece09c..1c363a0 100644 --- a/libhello/.gitignore +++ b/libhello/.gitignore @@ -3,10 +3,16 @@ *.d *.t *.i +*.i.* *.ii +*.ii.* *.o *.obj +*.gcm +*.pcm +*.ifc *.so +*.dylib *.dll *.a *.lib diff --git a/libhello/README.md b/libhello/README.md new file mode 100644 index 0000000..3dab9aa --- /dev/null +++ b/libhello/README.md @@ -0,0 +1,4 @@ +# libhello + +A simple library that implements the "Hello World" example in C++. Its primary +goal is to show a canonical `build2`/`bpkg` project/package. diff --git a/libhello/build/.gitignore b/libhello/build/.gitignore index 4a730a3..974e01d 100644 --- a/libhello/build/.gitignore +++ b/libhello/build/.gitignore @@ -1,3 +1,4 @@ -config.build -root/ -bootstrap/ +/config.build +/root/ +/bootstrap/ +build/ diff --git a/libhello/build/root.build b/libhello/build/root.build index 9c83a8a..ae3d2a6 100644 --- a/libhello/build/root.build +++ b/libhello/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/libhello/buildfile b/libhello/buildfile index 3ac0526..9a5145b 100644 --- a/libhello/buildfile +++ b/libhello/buildfile @@ -1,4 +1,4 @@ -./: {*/ -build/} manifest +./: {*/ -build/} doc{README.md} manifest # Don't install tests. # diff --git a/libhello/libhello/buildfile b/libhello/libhello/buildfile index 505420e..d0cdbe3 100644 --- a/libhello/libhello/buildfile +++ b/libhello/libhello/buildfile @@ -1,32 +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{hello}: {hxx ixx txx cxx}{** -version} hxx{version} $imp_libs $int_libs +lib{hello}: {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 -{ - 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 += -DLIBHELLO_STATIC_BUILD -objs{*}: cxx.poptions += -DLIBHELLO_SHARED_BUILD +{hbmia obja}{*}: cxx.poptions += -DLIBHELLO_STATIC_BUILD +{hbmis objs}{*}: cxx.poptions += -DLIBHELLO_SHARED_BUILD # Export options. # lib{hello}: { cxx.export.poptions = "-I$out_root" "-I$src_root" - cxx.export.libs = $int_libs + cxx.export.libs = $intf_libs } liba{hello}: cxx.export.poptions += -DLIBHELLO_STATIC @@ -37,9 +31,9 @@ libs{hello}: cxx.export.poptions += -DLIBHELLO_SHARED # for details on the version.* variable values. # if $version.pre_release - lib{hello}: bin.lib.version = @"-$version.project_id" + lib{hello}: bin.lib.version = "-$version.project_id" else - lib{hello}: bin.lib.version = @"-$version.major.$version.minor" + lib{hello}: bin.lib.version = "-$version.major.$version.minor" # Install into the libhello/ subdirectory of, say, /usr/include/ # recreating subdirectories. diff --git a/libhello/libhello/export.hxx b/libhello/libhello/export.hxx index 576543d..5473f23 100644 --- a/libhello/libhello/export.hxx +++ b/libhello/libhello/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 LIBHELLO_SYMEXPORT // Using static or shared. +//# error define LIBHELLO_STATIC or LIBHELLO_SHARED preprocessor macro to signal libhello library type being linked #endif diff --git a/libhello/libhello/version.hxx.in b/libhello/libhello/version.hxx.in index bd5c13f..46503b8 100644 --- a/libhello/libhello/version.hxx.in +++ b/libhello/libhello/version.hxx.in @@ -22,6 +22,7 @@ #define LIBHELLO_VERSION $libhello.version.project_number$ULL #define LIBHELLO_VERSION_STR "$libhello.version.project$" #define LIBHELLO_VERSION_ID "$libhello.version.project_id$" +#define LIBHELLO_VERSION_FULL "$libhello.version$" #define LIBHELLO_VERSION_MAJOR $libhello.version.major$ #define LIBHELLO_VERSION_MINOR $libhello.version.minor$ diff --git a/libhello/manifest b/libhello/manifest index 7961c9f..fa9f855 100644 --- a/libhello/manifest +++ b/libhello/manifest @@ -1,18 +1,16 @@ : 1 name: libhello -version: 1.0.0+5 +version: 1.0.0+11 +language: c++ project: hello summary: The "Hello World" example library license: MIT ; MIT License. topics: hello world example -description: \ -A simple library that implements the "Hello World" example in C++. Its primary -goal is to show a canonical build2/bpkg project/package. -\ +description-file: README.md url: https://git.build2.org/cgit/hello/libhello src-url: https://git.build2.org/cgit/hello/libhello/tree/libhello?h=1.0 email: users@build2.org -build-email: builds@build2.org +build-warning-email: builds@build2.org builds: all -depends: * build2 >= 0.11.0 -depends: * bpkg >= 0.11.0 +depends: * build2 >= 0.16.0- +depends: * bpkg >= 0.16.0- diff --git a/libhello/tests/basics/driver.cxx b/libhello/tests/basics/driver.cxx index a7ef847..c41adff 100644 --- a/libhello/tests/basics/driver.cxx +++ b/libhello/tests/basics/driver.cxx @@ -1,10 +1,12 @@ -#include <cassert> #include <sstream> #include <stdexcept> #include <libhello/version.hxx> #include <libhello/hello.hxx> +#undef NDEBUG +#include <cassert> + int main () { using namespace std; diff --git a/libhello/tests/build/.gitignore b/libhello/tests/build/.gitignore index 4a730a3..974e01d 100644 --- a/libhello/tests/build/.gitignore +++ b/libhello/tests/build/.gitignore @@ -1,3 +1,4 @@ -config.build -root/ -bootstrap/ +/config.build +/root/ +/bootstrap/ +build/ diff --git a/libhello/tests/build/root.build b/libhello/tests/build/root.build index a67b2fe..8fafbfe 100644 --- a/libhello/tests/build/root.build +++ b/libhello/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 diff --git a/libmhello/manifest b/libmhello/manifest index abcd937..35d137b 100644 --- a/libmhello/manifest +++ b/libmhello/manifest @@ -5,7 +5,7 @@ project: hello summary: The modularized "Hello World" example library license: MIT tags: c++, world, example, modules -description: \ +description:\ A simple library that implements the "Hello World" example in C++ with modules. Its primary goal is to show a canonical build2/bpkg project/package. \ |