Sfoglia il codice sorgente

Merge branch 'release/0.1.0-alpha.5' into develop

default_compile_flags
vector-of-bool 4 anni fa
parent
commit
b9f1f264ca
10 ha cambiato i file con 64 aggiunte e 44 eliminazioni
  1. +1
    -1
      .github/ISSUE_TEMPLATE/bug_report.md
  2. +2
    -2
      Makefile
  3. +1
    -1
      Vagrantfile
  4. +1
    -1
      docs/conf.py
  5. +19
    -16
      docs/guide/source-dists.rst
  6. +32
    -16
      docs/guide/toolchains.rst
  7. +1
    -1
      package.jsonc
  8. +1
    -0
      tests/sdist/create/other-file.txt
  9. +3
    -0
      tests/sdist/sdist_test.py
  10. +3
    -6
      tools/freebsd-gcc-10.jsonc

+ 1
- 1
.github/ISSUE_TEMPLATE/bug_report.md Vedi File

@@ -55,7 +55,7 @@ List the platform(s) and toolsets which are applicable to the issue, and all of

- Operating System: [e.g. macOS, Linux, Windows]
- Compiler: [e.g. MSVC, GCC, Clang]
- `dds` Version: [e.g. `0.1.0-alpha.2`]
- `dds` Version: [e.g. `0.1.0-alpha.5`]

**Additional context**


+ 2
- 2
Makefile Vedi File

@@ -62,7 +62,7 @@ vagrant-freebsd-ci:
cd /vagrant && \
python3.7 tools/ci.py \
-B download \
-T tools/freebsd-gcc-9.jsonc \
-T tools/freebsd-gcc-10.jsonc \
'
vagrant scp freebsd11:/vagrant/_build/dds _build/dds-freebsd-x64
vagrant halt
@@ -72,4 +72,4 @@ site: docs
mkdir -p _site/
cp site/index.html _site/
cp -r _build/docs _site/
echo "Site generated at _site/"
echo "Site generated at _site/"

+ 1
- 1
Vagrantfile Vedi File

@@ -9,7 +9,7 @@ Vagrant.configure("2") do |config|
freebsd11.vm.box = 'generic/freebsd11'
freebsd11.vm.provision 'shell', inline: <<-SHELL
set -eu
for package in python37 py37-pip ccache gcc9 gcc8 git; do
for package in python37 py37-pip ccache gcc10 gcc9 gcc8 git; do
echo "Installing $package"
pkg install -qy $package
done

+ 1
- 1
docs/conf.py Vedi File

@@ -11,7 +11,7 @@ author = 'vector-of-bool'
# The short X.Y version
version = ''
# The full version, including alpha/beta/rc tags
release = '0.1.0-alpha.4'
release = '0.1.0-alpha.5'

# -- General configuration ---------------------------------------------------
extensions = []

+ 19
- 16
docs/guide/source-dists.rst Vedi File

@@ -3,13 +3,13 @@ Source Distributions

A *source distribution* is ``dds``'s primary format for consuming and
distributing packages. A source distribution, in essence, is a
:ref:`package root <pkgs.pkg-root>` directory that contains only the files
:ref:`package root <pkgs.pkg-root>` archive that contains only the files
necessary for ``dds`` to reproduce the full build of all libraries in the
package. The source distribution retains the directory structure of every
:ref:`source root <pkgs.source-root>` of the original package, and thus retains
the header structure thereof. In this way, the ``#include`` directives to use
a library in a source distribution are identical to if the libraries therein
were directly part of the consuming project.
the header structure thereof. In this way, the ``#include`` directives to use a
library in a source distribution are identical to if the libraries therein were
directly part of the consuming project.


Generating a Source Distribution
@@ -20,24 +20,27 @@ Generating a source distribution from a project directory is done with the

> dds sdist create

The above command can be executed within any package root, and the result will
be a new directory that reproduces the package's filesystem structure, but
only maintaining the files that are necessary for ``dds`` to reproduce the
build of that package.
The above command can be executed within a package root, and the result will be
a gzip'd tar archive that reproduces the package's filesystem structure, but
only maintaining the files that are necessary for ``dds`` to reproduce a build
of that package.

The ``--project=<dir>`` flag can be provided to override the directory that
``dds`` will use as the package root. The default is the working directory of
the project.

The ``--out=<path>`` flag can be provided to override the destination path of
the resulting source distribution. The path should not name an existing file or
directory. By default, ``dds`` will generate a source distribution in the
working directory with the name ``project.dsd/`` (The output is itself a
directory, not an archive). If the ``--replace`` flag is provided, then ``dds``
will overwrite the destination if it names an existing file or directory.
the archive. The path should not name an existing file or directory. By default,
``dds`` will generate a source distribution in the working directory with the
pattern ``<name>@<version>.tar.gz``. If the ``--replace`` flag is provided,
then ``dds`` will overwrite the destination if it names an existing file or
directory.


Exporting a Package to the Local Repository
*******************************************
Importing a Source Ditsribution
*******************************

.. seealso:: :ref:`repo.export-local`
Given a source distribution archive, one can import the package into the local
repository with a single command::

> dds repo import some-package@1.2.3.tar.gz

+ 32
- 16
docs/guide/toolchains.rst Vedi File

@@ -271,12 +271,17 @@ Valid ``cxx_version`` values are:
``warning_flags``
-----------------

Provide *additional* compiler flags that should be used to enable warnings. This option is stored separately from ``flags``, as these options may be enabled/disabled separately depending on how ``dds`` is invoked.
Provide *additional* compiler flags that should be used to enable warnings. This
option is stored separately from ``flags``, as these options may be
enabled/disabled separately depending on how ``dds`` is invoked.

.. note::
If ``compiler_id`` is provided, a default set of warning flags will be provided when warnings are enabled.

Adding flags to this toolchain option will *append* flags to the basis warning flag list rather than overwrite them.
If ``compiler_id`` is provided, a default set of warning flags will be
provided when warnings are enabled.

Adding flags to this toolchain option will *append* flags to the basis
warning flag list rather than overwrite them.

.. seealso::

@@ -320,22 +325,37 @@ debug information in a separate file from the binaries.
Select the language runtime/standard library options. Must be an object, and supports two keys:

``static``
A boolean. If ``true``, the runtime and standard libraries will be static-linked into the generated binaries. If ``false``, they will be dynamically linked. Default is ``true`` with MSVC, and ``false`` with GCC and Clang.
A boolean. If ``true``, the runtime and standard libraries will be
static-linked into the generated binaries. If ``false``, they will be
dynamically linked. Default is ``true`` with MSVC, and ``false`` with GCC
and Clang.

``debug``
A boolean. If ``true``, the debug versions of the runtime and standard library will be compiled and linked into the generated binaries. If ``false``, the default libraries will be used.
A boolean. If ``true``, the debug versions of the runtime and standard
library will be compiled and linked into the generated binaries. If
``false``, the default libraries will be used.

**On MSVC** the default value depends on the top-level ``/debug`` option: If ``/debug`` is not ``false``, then ``/runtime/debug`` defaults to ``true``.
**On MSVC** the default value depends on the top-level ``/debug`` option: If
``/debug`` is not ``false``, then ``/runtime/debug`` defaults to ``true``.

**On GCC and Clang** the default value is ``false``.

.. note::
On GNU-like compilers, ``static`` does not generate a static executable, it only statically links the runtime and standard library. To generate a static executable, the ``-static`` option should be added to ``link_flags``.

On GNU-like compilers, ``static`` does not generate a static executable, it
only statically links the runtime and standard library. To generate a static
executable, the ``-static`` option should be added to ``link_flags``.

.. note::
On GNU and Clang, setting ``/runtime/debug`` to ``true`` will compile all files with the ``_GLIBCXX_DEBUG`` and ``_LIBCPP_DEBUG=1`` preprocessor definitions set. **Translation units compiled with these macros are definitively ABI-incompatible with TUs that have been compiled without these options!!**

If you link to a static or dynamic library that has not been compiled with the same runtime settings, generated programs will likely crash.
On GNU and Clang, setting ``/runtime/debug`` to ``true`` will compile all
files with the ``_GLIBCXX_DEBUG`` and ``_LIBCPP_DEBUG=1`` preprocessor
definitions set. **Translation units compiled with these macros are
definitively ABI-incompatible with TUs that have been compiled without these
options!!**

If you link to a static or dynamic library that has not been compiled with
the same runtime settings, generated programs will likely crash.


``compiler_launcher``
@@ -402,14 +422,10 @@ Defaults::
// On GNU-like compilers (GCC, Clang):
c_compile_file: "<compiler> -fPIC -pthread [flags] -c [in] -o[out]",
cxx_compile_file: "<compiler> -fPIC -pthread [flags] -c [in] -o[out]",
// When `optimize` is enabled, `-O2` is added as a flag
// When `debug` is enabled, `-g` is added as a flag

// On MSVC:
c_compile_file: "cl.exe /MT /nologo /permissive- [flags] /c [in] /Fo[out]",
cxx_compile_file: "cl.exe /MT /EHsc /nologo /permissive- [flags] /c [in] /Fo[out]",
// When `optimize` is enabled, `/O2` is added as a flag
// When `debug` is enabled, `/Z7` and `/DEBUG` are added, and `/MT` becomes `/MTd`
c_compile_file: "cl.exe /nologo /permissive- [flags] /c [in] /Fo[out]",
cxx_compile_file: "cl.exe /EHsc /nologo /permissive- [flags] /c [in] /Fo[out]",
}


@@ -419,7 +435,7 @@ Defaults::
Override the *command template* that is used to generate static library archive
files.

This template expects three placeholders:
This template expects two placeholders:

- ``[in]`` is the a placeholder for the list of inputs. It must not be attached
to any other arguments. The list of input paths will be inserted in place of

+ 1
- 1
package.jsonc Vedi File

@@ -1,7 +1,7 @@
{
"$schema": "./res/package-schema.json",
"name": "dds",
"version": "0.1.0-alpha.4",
"version": "0.1.0-alpha.5",
"namespace": "dds",
"depends": [
"spdlog@1.7.0",

+ 1
- 0
tests/sdist/create/other-file.txt Vedi File

@@ -0,0 +1 @@
This file will not be in the source distribution!

+ 3
- 0
tests/sdist/sdist_test.py Vedi File

@@ -22,3 +22,6 @@ def test_import_sdist_archive(dds: DDS):
assert not repo_content_path.is_dir()
dds.repo_import(dds.build_dir / 'foo@1.2.3.tar.gz')
assert repo_content_path.is_dir()
assert repo_content_path.joinpath('library.jsonc').is_file()
# Excluded file will not be in the sdist:
assert not repo_content_path.joinpath('other-file.txt').is_file()

tools/freebsd-gcc-9.jsonc → tools/freebsd-gcc-10.jsonc Vedi File

@@ -1,15 +1,12 @@
{
"$schema": "../res/toolchain-schema.json",
"compiler_id": "gnu",
"c_compiler": "gcc9",
"cxx_compiler": "g++9",
"c_compiler": "gcc10",
"cxx_compiler": "g++10",
"cxx_version": "c++20",
"warning_flags": [
"-Werror",
],
"cxx_flags": [
"-fconcepts",
"-std=c++2a",
],
"link_flags": [
"-static-libgcc",
"-static-libstdc++"

Loading…
Annulla
Salva