diff options
-rw-r--r-- | .gitattributes | 19 | ||||
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | buildfile | 6 | ||||
-rw-r--r-- | libformat/.gitignore | 6 | ||||
-rw-r--r-- | libformat/README.md | 3 | ||||
-rw-r--r-- | libformat/build/.gitignore | 7 | ||||
-rw-r--r-- | libformat/build/root.build | 8 | ||||
-rw-r--r-- | libformat/buildfile | 2 | ||||
-rw-r--r-- | libformat/libformat/buildfile | 29 | ||||
-rw-r--r-- | libformat/libformat/export.hxx | 9 | ||||
-rw-r--r-- | libformat/libformat/version.hxx.in | 1 | ||||
-rw-r--r-- | libformat/manifest | 13 | ||||
-rw-r--r-- | libformat/tests/basics/driver.cxx | 4 | ||||
-rw-r--r-- | libformat/tests/build/.gitignore | 7 | ||||
-rw-r--r-- | libformat/tests/build/root.build | 4 | ||||
-rw-r--r-- | libmformat/manifest | 2 |
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 @@ -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/libformat/.gitignore b/libformat/.gitignore index cece09c..1c363a0 100644 --- a/libformat/.gitignore +++ b/libformat/.gitignore @@ -3,10 +3,16 @@ *.d *.t *.i +*.i.* *.ii +*.ii.* *.o *.obj +*.gcm +*.pcm +*.ifc *.so +*.dylib *.dll *.a *.lib diff --git a/libformat/README.md b/libformat/README.md new file mode 100644 index 0000000..2c5b890 --- /dev/null +++ b/libformat/README.md @@ -0,0 +1,3 @@ +# libformat + +A simple library that implements the "Hello World" formatting in C++. diff --git a/libformat/build/.gitignore b/libformat/build/.gitignore index 4a730a3..974e01d 100644 --- a/libformat/build/.gitignore +++ b/libformat/build/.gitignore @@ -1,3 +1,4 @@ -config.build -root/ -bootstrap/ +/config.build +/root/ +/bootstrap/ +build/ diff --git a/libformat/build/root.build b/libformat/build/root.build index 9c83a8a..ae3d2a6 100644 --- a/libformat/build/root.build +++ b/libformat/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/libformat/buildfile b/libformat/buildfile index 3ac0526..9a5145b 100644 --- a/libformat/buildfile +++ b/libformat/buildfile @@ -1,4 +1,4 @@ -./: {*/ -build/} manifest +./: {*/ -build/} doc{README.md} manifest # Don't install tests. # diff --git a/libformat/libformat/buildfile b/libformat/libformat/buildfile index da2d45a..814ee33 100644 --- a/libformat/libformat/buildfile +++ b/libformat/libformat/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{format}: {hxx ixx txx cxx}{** -version} hxx{version} $imp_libs $int_libs +lib{format}: {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 += -DLIBFORMAT_STATIC_BUILD -objs{*}: cxx.poptions += -DLIBFORMAT_SHARED_BUILD +{hbmia obja}{*}: cxx.poptions += -DLIBFORMAT_STATIC_BUILD +{hbmis objs}{*}: cxx.poptions += -DLIBFORMAT_SHARED_BUILD # Export options. # lib{format}: { cxx.export.poptions = "-I$out_root" "-I$src_root" - cxx.export.libs = $int_libs + cxx.export.libs = $intf_libs } liba{format}: cxx.export.poptions += -DLIBFORMAT_STATIC @@ -38,9 +31,9 @@ libs{format}: cxx.export.poptions += -DLIBFORMAT_SHARED # for details on the version.* variable values. # if $version.pre_release - lib{format}: bin.lib.version = @"-$version.project_id" + lib{format}: bin.lib.version = "-$version.project_id" else - lib{format}: bin.lib.version = @"-$version.major.$version.minor" + lib{format}: bin.lib.version = "-$version.major.$version.minor" # Install into the libformat/ subdirectory of, say, /usr/include/ # recreating subdirectories. diff --git a/libformat/libformat/export.hxx b/libformat/libformat/export.hxx index 1691181..60d514f 100644 --- a/libformat/libformat/export.hxx +++ b/libformat/libformat/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 LIBFORMAT_SYMEXPORT // Using static or shared. +//# error define LIBFORMAT_STATIC or LIBFORMAT_SHARED preprocessor macro to signal libformat library type being linked #endif diff --git a/libformat/libformat/version.hxx.in b/libformat/libformat/version.hxx.in index 3a1dd1c..4f7f605 100644 --- a/libformat/libformat/version.hxx.in +++ b/libformat/libformat/version.hxx.in @@ -22,6 +22,7 @@ #define LIBFORMAT_VERSION $libformat.version.project_number$ULL #define LIBFORMAT_VERSION_STR "$libformat.version.project$" #define LIBFORMAT_VERSION_ID "$libformat.version.project_id$" +#define LIBFORMAT_VERSION_FULL "$libformat.version$" #define LIBFORMAT_VERSION_MAJOR $libformat.version.major$ #define LIBFORMAT_VERSION_MINOR $libformat.version.minor$ diff --git a/libformat/manifest b/libformat/manifest index c6db824..c3dfe80 100644 --- a/libformat/manifest +++ b/libformat/manifest @@ -1,17 +1,16 @@ : 1 name: libformat -version: 1.0.0+4 +version: 1.0.0+11 +language: c++ project: hello summary: The "Hello World" example formatter library license: MIT ; MIT License. topics: hello world example -description: \ -A simple library that implements the "Hello World" formatting in C++. -\ +description-file: README.md url: https://git.build2.org/cgit/hello/libformat src-url: https://git.build2.org/cgit/hello/libformat/tree/libformat 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/libformat/tests/basics/driver.cxx b/libformat/tests/basics/driver.cxx index 42b925a..cb3a130 100644 --- a/libformat/tests/basics/driver.cxx +++ b/libformat/tests/basics/driver.cxx @@ -1,9 +1,11 @@ -#include <cassert> #include <stdexcept> #include <libformat/version.hxx> #include <libformat/format.hxx> +#undef NDEBUG +#include <cassert> + int main () { using namespace std; diff --git a/libformat/tests/build/.gitignore b/libformat/tests/build/.gitignore index 4a730a3..974e01d 100644 --- a/libformat/tests/build/.gitignore +++ b/libformat/tests/build/.gitignore @@ -1,3 +1,4 @@ -config.build -root/ -bootstrap/ +/config.build +/root/ +/bootstrap/ +build/ diff --git a/libformat/tests/build/root.build b/libformat/tests/build/root.build index a67b2fe..8fafbfe 100644 --- a/libformat/tests/build/root.build +++ b/libformat/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/libmformat/manifest b/libmformat/manifest index 4133c20..d8567f6 100644 --- a/libmformat/manifest +++ b/libmformat/manifest @@ -5,7 +5,7 @@ project: hello summary: The modularized "Hello World" example formatter library license: MIT tags: c++, world, formatter, example, modules -description: \ +description:\ A simple library that implements the "Hello World" formatting in C++ with modules. \ |