Compare commits

..

10 Commits

Author SHA1 Message Date
aleos89
4609695882 Merge branch 'master' into refactor/StatusChangeDisplay 2017-11-03 13:27:25 -04:00
Jey
30eca30350 Minor comment adjustments. 2017-09-30 16:36:17 +02:00
Jey
0c8a62abbd Reapplied Acid Terror status def ignore. 2017-09-29 21:15:21 +02:00
Jey
a73da61129 Merge branch 'master' into refactor/StatusChangeDisplay 2017-09-29 02:16:51 +02:00
aleos89
4dc7001d6a Merge branch 'master' into refactor/StatusChangeDisplay 2017-09-21 13:54:22 -04:00
Aleos
8807632e4a Merge branch 'master' into refactor/StatusChangeDisplay 2017-08-28 14:01:01 -04:00
aleos89
d4f21d9800 Minor spacing fixes 2017-07-31 14:12:50 -04:00
Aleos
16506fa61e Merge branch 'master' into refactor/StatusChangeDisplay 2017-07-06 21:21:43 -04:00
Jey
dc90bc159d Removed status.h dependency from battle.c 2017-05-08 04:15:56 +02:00
Jey
79a127e510 Status Change display in status window. 2017-05-08 03:15:24 +02:00
1812 changed files with 205343 additions and 1504308 deletions

View File

@@ -1,30 +0,0 @@
# rAthena EditorConfig file
# EditorConfig is awesome: https://EditorConfig.org
# This file should be encoded in UTF-8 with CRLF or LF line endings.
root = true
# Add a blank newline to the end of every file after saving
# Trim trailing whitespace
# Adjust character set
[*]
insert_final_newline = true
trim_trailing_whitespace = true
charset = utf-8
# Use tabs in source
[*.{cpp,c,hpp,h}]
indent_style = tab
# YAML does not support hard tabs.
[*.{yml,yaml}]
indent_style = space
indent_size = 4
# Use tabs in Makefiles
[Makefile*]
indent_style = tab
# Scripts should use hard tabs to prevent script header goofs.
[npc/**.txt]
indent_style = tab

5
.gitattributes vendored
View File

@@ -1,15 +1,12 @@
* text=auto
*.cpp diff=cpp
*.yml diff text eol=lf
*.c diff=cpp
*.sln merge=union
*.vcproj merge=union
*.vcxproj merge=union
*.sln text eol=crlf
*.bat text eol=crlf
athena-start text eol=lf
configure text eol=lf
configure.in text eol=lf
Makefile text eol=lf
Makefile.in text eol=lf
*.sh text eol=lf
*.sql text eol=lf

View File

@@ -7,7 +7,6 @@ Table of Contents
* [Reporting Bugs](#reporting-bugs)
* [Suggesting Enhancements](#suggesting-enhancements)
* [Issue Labels](#issue-labels)
* [Local Development Environment](#local-development-environment)
* [Become a Team Member](#become-a-team-member)
Reporting Bugs
@@ -64,7 +63,7 @@ Suggesting Enhancements
#### How to create Pull Requests :pencil:
1. Make sure you have a [GitHub account](https://github.com/signup/free).
2. Next, you will need to [fork rAthena](https://help.github.com/articles/fork-a-repo/#fork-an-example-repository) to your account.
2. Next, you will need to [fork rAthena](https://help.github.com/articles/fork-a-repo/#step-3-configure-git-to-sync-your-fork-with-the-original-spoon-knife-repository) to your account.
3. Before making changes, make sure you [create a new branch](https://help.github.com/articles/creating-and-deleting-branches-within-your-repository/) for your working tree.
4. After completing your changes, commit and push it to your branch.
5. Now you are ready to [create a Pull Request](https://help.github.com/articles/creating-a-pull-request/) for rAthena!
@@ -162,13 +161,6 @@ For the most part you as a user will have no reason to worry about the **Milesto
[search-rathena-label-typemaintenance]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Atype%3Amaintenance
[search-rathena-label-typequestion]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Atype%3Aquestion
Local Development Environment
-----------------------------
Developers can get up and running quickly with a Dockerized development environment that installs all dependencies needed to run and develop on rAthena.
See [Docker documentation](https://github.com/rathena/rathena/blob/master/tools/docker/README.md) for details
Become a Team Member
--------------------

View File

@@ -1,12 +1,3 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: type:bug
assignees: ''
---
<!-- NOTE: Anything within these brackets will be hidden on the preview of the Issue. -->
* **rAthena Hash**:
@@ -30,7 +21,7 @@ How to get your GitHub Hash:
* Result: <!-- Describe the issue that you experienced in detail. -->
* Expected Result: <!-- Describe what you would expect to happen in detail. -->
* How to Reproduce: <!-- If you have not stated in the description of the result already, please give us a short guide how we can reproduce your issue. -->
* Official Information: <!-- If possible, provide information from official servers (kRO or other sources) which prove that the result is wrong. Please take into account that iRO (especially iRO Wiki) is not always the same as kRO. -->
* Official Information:<!-- If possible, provide information from official servers (kRO or other sources) which prove that the result is wrong. Please take into account that iRO (especially iRO Wiki) is not always the same as kRO. -->
<!-- * _NOTE: Make sure you quote ``` `@atcommands` ``` just like this so that you do not tag uninvolved GitHub users!_ -->
* **Modifications that may affect results**:

View File

@@ -1,35 +0,0 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: type:enhancement
assignees: ''
---
<!-- NOTE: Anything within these brackets will be hidden on the preview of the Feature Request. -->
**Is your request related to a missing feature?**
<!--
Provide a clear and concise description of what the feature pertains to.
-->
**Describe the solution you'd like**
<!--
Provide a clear and concise description of what you want to happen.
-->
**Describe alternatives you've considered**
<!--
Let us know about other solutions you've tried or researched.
-->
**Additional context**
<!--
Is there anything else you can add about the proposal?
You might want to link to related issues here if you haven't already.
-->

View File

@@ -1,49 +0,0 @@
name: Build servers with Clang
# build_servers_clang.yml
on:
push:
branches:
- master
pull_request:
paths:
# Always trigger all Github Actions if an action or something CI related was changed
- '.github/workflows/**'
- 'tools/ci/**'
# This workflow should run when a file in a source directory has been modified.
- 'src/**'
- '3rdparty/**'
jobs:
build:
# Github Actions checks for '[ci skip]', '[skip ci]', '[no ci]', '[skip actions]', or '[actions skip]' but not a hyphenated version.
# It's a catch-all incase a Pull Request has been opened and someone is on auto-pilot.
if: "!contains(github.event.head_commit.message, 'ci-skip')"
runs-on: ${{ matrix.os }}
strategy:
matrix:
# The ubuntu-latest label currently points to ubuntu-18.04.
# Available: ubuntu-20.04, ubuntu-18.04
os: [ubuntu-18.04]
# Version list can be found on https://github.com/marketplace/actions/install-clang
clang: ['3.9', '4.0', '5.0', '6.0', '7', '8', '9', '10', '11'] #, '12', '13']
steps:
- uses: actions/checkout@v2
- name: Set up Clang
uses: egor-tensin/setup-clang@v1
with:
version: ${{ matrix.clang }}
platform: x64
- name: Command - configure
env:
CONFIGURE_FLAGS: 'CC=clang-${{ matrix.clang }} CXX=clang++-${{ matrix.clang }} --enable-buildbot=yes'
run: ./configure $CONFIGURE_FLAGS
- name: Command - make clean
run: make clean
- name: Command - make all
run: make all

View File

@@ -1,46 +0,0 @@
name: Build servers with CMake
# build_servers_cmake.yml
on:
push:
branches:
- master
pull_request:
paths:
# Always trigger all Github Actions if an action or something CI related was changed
- '.github/workflows/**'
- 'tools/ci/**'
# This workflow should run when a file in a source directory has been modified.
- 'src/**'
- '3rdparty/**'
jobs:
build:
# Github Actions checks for '[ci skip]', '[skip ci]', '[no ci]', '[skip actions]', or '[actions skip]' but not a hyphenated version.
# It's a catch-all incase a Pull Request has been opened and someone is on auto-pilot.
if: "!contains(github.event.head_commit.message, 'ci-skip')"
runs-on: ${{ matrix.os }}
strategy:
matrix:
# The ubuntu-latest label currently points to ubuntu-18.04.
# Available: ubuntu-20.04, ubuntu-18.04
os: [ubuntu-latest]
steps:
- uses: actions/checkout@v2
# Install latest CMake.
- uses: lukka/get-cmake@latest
- name: Create build directory
run: mkdir cbuild
- name: Create Unix Makefiles
run: |
cd cbuild
cmake -G "Unix Makefiles" ..
- name: Command - make
run: |
cd cbuild
make

View File

@@ -1,50 +0,0 @@
name: Build servers with GCC
# build_servers_gcc.yml
on:
push:
branches:
- master
pull_request:
paths:
# Always trigger all Github Actions if an action or something CI related was changed
- '.github/workflows/**'
- 'tools/ci/**'
# This workflow should run when a file in a source directory has been modified.
- 'src/**'
- '3rdparty/**'
jobs:
build:
# Github Actions checks for '[ci skip]', '[skip ci]', '[no ci]', '[skip actions]', or '[actions skip]' but not a hyphenated version.
# It's a catch-all incase a Pull Request has been opened and someone is on auto-pilot.
if: "!contains(github.event.head_commit.message, 'ci-skip')"
runs-on: ${{ matrix.os }}
strategy:
matrix:
# The ubuntu-latest label currently points to ubuntu-18.04.
# Available: ubuntu-20.04, ubuntu-18.04
os: [ubuntu-latest]
# Older versions of GCC are not available via unaltered aptitude repo lists.
gcc: ['7', '8', '9', '10']
steps:
- uses: actions/checkout@v2
- name: Update & Install packages
# Ubuntu runners already have most of the packages rAthena requires to build.
# https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-Readme.md
run: |
sudo apt update
sudo apt install zlib1g-dev libpcre3-dev gcc-${{ matrix.gcc }} g++-${{ matrix.gcc }}
- name: Command - configure
env:
CONFIGURE_FLAGS: 'CC=gcc-${{ matrix.gcc }} CXX=g++-${{ matrix.gcc }} --enable-buildbot=yes'
run: ./configure $CONFIGURE_FLAGS
- name: Command - make clean
run: make clean
- name: Command - make all
run: make all

View File

@@ -1,77 +0,0 @@
name: Build servers in Pre-Renewal and Renewal
# build_servers_modes.yml
on:
push:
branches:
- master
pull_request:
paths:
# Always trigger all Github Actions if an action or something CI related was changed
- '.github/workflows/**'
- 'tools/ci/**'
# This workflow should run when a file in a source directory has been modified.
- 'src/**'
- '3rdparty/**'
jobs:
build:
# Github Actions checks for '[ci skip]', '[skip ci]', '[no ci]', '[skip actions]', or '[actions skip]' but not a hyphenated version.
# It's a catch-all incase a Pull Request has been opened and someone is on auto-pilot.
if: "!contains(github.event.head_commit.message, 'ci-skip')"
runs-on: ${{ matrix.os }}
strategy:
matrix:
# The ubuntu-latest label currently points to ubuntu-18.04.
# Available: ubuntu-20.04, ubuntu-18.04
os: [ubuntu-latest]
# Older versions of GCC are not available via unaltered aptitude repo lists.
gcc: ['10']
# We run build checks for both Renewal and PRE-Renewal
mode: ['PRE','RE']
steps:
- uses: actions/checkout@v2
# A simple 'yes' and 'no' can be confusing, so we use names to display in the current job then convert them for use in the compiler.
- name: Variable Parsing - PRE
if: ${{ matrix.mode == 'PRE' }}
run: |
echo "PRERE=yes" >> $GITHUB_ENV
- name: Variable Parsing - RE
if: ${{ matrix.mode == 'RE' }}
run: |
echo "PRERE=no" >> $GITHUB_ENV
- name: Update & Install packages
# Ubuntu runners already have most of the packages rAthena requires to build.
# https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-Readme.md
run: |
sudo apt update
sudo apt install zlib1g-dev libpcre3-dev gcc-${{ matrix.gcc }} g++-${{ matrix.gcc }}
- name: Start MySQL
run: sudo systemctl start mysql.service
- name: Setup Database and import table data
run: ./tools/ci/sql.sh
- name: Command - configure
env:
CONFIGURE_FLAGS: 'CC=gcc-${{ matrix.gcc }} CXX=g++-${{ matrix.gcc }} --enable-prere=${{ env.PRERE }} --enable-buildbot=yes'
run: ./configure $CONFIGURE_FLAGS
- name: Command - make clean
run: make clean
- name: Command - make server
run: make server
- name: Run Once - login-server
run: ./login-server --run-once
- name: Run Once - char-server
run: ./char-server --run-once
- name: Run Once - map-server
run: ./map-server --run-once

View File

@@ -1,43 +0,0 @@
name: Build servers with MSVS
# build_servers_msbuild.yml
on:
push:
branches:
- master
pull_request:
paths:
# Always trigger all Github Actions if an action or something CI related was changed
- '.github/workflows/**'
- 'tools/ci/**'
# This workflow should run when a file in a source directory has been modified.
- 'src/**'
- '3rdparty/**'
jobs:
build:
# Github Actions checks for '[ci skip]', '[skip ci]', '[no ci]', '[skip actions]', or '[actions skip]' but not a hyphenated version.
# It's a catch-all incase a Pull Request has been opened and someone is on auto-pilot.
if: "!contains(github.event.head_commit.message, 'ci-skip')"
runs-on: ${{ matrix.os }}
strategy:
matrix:
# The windows-latest label currently points to windows-2019.
# Available: windows-2016, windows-2019 and windows-2022
os: [windows-latest]
# We run build checks for both Renewal and PRE-Renewal
mode: ['PRE', 'RE']
steps:
- uses: actions/checkout@v2
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v1.1
- name: Build solution in Debug
if: ${{ matrix.mode == 'PRE' }}
run: msbuild rAthena.sln -t:rebuild -property:Configuration=Debug /p:DefineConstants="BUILDBOT%3BPRERE"
- name: Build solution in Debug
if: ${{ matrix.mode == 'RE' }}
run: msbuild rAthena.sln -t:rebuild -property:Configuration=Debug /p:DefineConstants="BUILDBOT"

View File

@@ -1,70 +0,0 @@
name: Build servers with different packet versions
# build_servers_packetversions.yml
on:
push:
branches:
- master
pull_request:
paths:
# Always trigger all Github Actions if an action or something CI related was changed
- '.github/workflows/**'
- 'tools/ci/**'
# This workflow should run when a file in a source directory has been modified.
- 'src/**'
- '3rdparty/**'
jobs:
build:
# Github Actions checks for '[ci skip]', '[skip ci]', '[no ci]', '[skip actions]', or '[actions skip]' but not a hyphenated version.
# It's a catch-all incase a Pull Request has been opened and someone is on auto-pilot.
if: "!contains(github.event.head_commit.message, 'ci-skip')"
runs-on: ${{ matrix.os }}
strategy:
matrix:
# The ubuntu-latest label currently points to ubuntu-18.04.
# Available: ubuntu-20.04, ubuntu-18.04
os: [ubuntu-latest]
# Older versions of GCC are not available via unaltered aptitude repo lists.
gcc: ['10']
# We run build checks for both Renewal and PRE-Renewal
mode: ['PRE','RE']
# Check build success for different packet-versions
packetver: ['20211103', '20200902', '20200401', '20180620', '20151104']
steps:
- uses: actions/checkout@v2
# A simple 'yes' and 'no' can be confusing, so we use names to display in the current job then convert them for use in the compiler.
- name: Variable Parsing - PRE
if: ${{ matrix.mode == 'PRE' }}
run: |
echo "PRERE=yes" >> $GITHUB_ENV
- name: Variable Parsing - RE
if: ${{ matrix.mode == 'RE' }}
run: |
echo "PRERE=no" >> $GITHUB_ENV
- name: Update & Install packages
# Ubuntu runners already have most of the packages rAthena requires to build.
# https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-Readme.md
run: |
sudo apt update
sudo apt install zlib1g-dev libpcre3-dev gcc-${{ matrix.gcc }} g++-${{ matrix.gcc }}
- name: Start MySQL
run: sudo systemctl start mysql.service
- name: Setup Database and import table data
run: ./tools/ci/sql.sh
- name: Command - configure
env:
CONFIGURE_FLAGS: 'CC=gcc-${{ matrix.gcc }} CXX=g++-${{ matrix.gcc }} --enable-prere=${{ env.PRERE }} --enable-packetver=${{ matrix.packetver }} --enable-buildbot=yes'
run: ./configure $CONFIGURE_FLAGS
- name: Command - make clean
run: make clean
- name: Command - make all
run: make all

View File

@@ -1,77 +0,0 @@
name: Build servers in VIP mode
# build_servers_vip.yml
on:
push:
branches:
- master
pull_request:
paths:
# Always trigger all Github Actions if an action or something CI related was changed
- '.github/workflows/**'
- 'tools/ci/**'
# This workflow should run when a file in a source directory has been modified.
- 'src/**'
- '3rdparty/**'
jobs:
build:
# Github Actions checks for '[ci skip]', '[skip ci]', '[no ci]', '[skip actions]', or '[actions skip]' but not a hyphenated version.
# It's a catch-all incase a Pull Request has been opened and someone is on auto-pilot.
if: "!contains(github.event.head_commit.message, 'ci-skip')"
runs-on: ${{ matrix.os }}
strategy:
matrix:
# The ubuntu-latest label currently points to ubuntu-18.04.
# Available: ubuntu-20.04, ubuntu-18.04
os: [ubuntu-latest]
# Older versions of GCC are not available via unaltered aptitude repo lists.
gcc: ['10']
# We run build checks for both Renewal and PRE-Renewal
mode: ['PRE', 'RE']
steps:
- uses: actions/checkout@v2
# A simple 'yes' and 'no' can be confusing, so we use names to display in the current job then convert them for use in the compiler.
- name: Variable Parsing - PRE
if: ${{ matrix.mode == 'PRE' }}
run: |
echo "PRERE=yes" >> $GITHUB_ENV
- name: Variable Parsing - RE
if: ${{ matrix.mode == 'RE' }}
run: |
echo "PRERE=no" >> $GITHUB_ENV
- name: Update & Install packages
# Ubuntu runners already have most of the packages rAthena requires to build.
# https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-Readme.md
run: |
sudo apt update
sudo apt install zlib1g-dev libpcre3-dev gcc-${{ matrix.gcc }} g++-${{ matrix.gcc }}
- name: Start MySQL
run: sudo systemctl start mysql.service
- name: Setup Database and import table data
run: ./tools/ci/sql.sh
- name: Command - configure
env:
CONFIGURE_FLAGS: 'CC=gcc-${{ matrix.gcc }} CXX=g++-${{ matrix.gcc }} --enable-prere=${{ env.PRERE }} --enable-buildbot=yes --enable-vip=yes'
run: ./configure $CONFIGURE_FLAGS
- name: Command - make clean
run: make clean
- name: Command - make server
run: make server
- name: Run Once - login-server
run: ./login-server --run-once
- name: Run Once - char-server
run: ./char-server --run-once
- name: Run Once - map-server
run: ./map-server --run-once

View File

@@ -1,82 +0,0 @@
name: Validate NPC Scripts and DB Changes
# npc_db_validation.yml
# For NPC and DB validation we only need two builds: one of Renewal and one for Pre-Renewal checks.
# NPC scripts and database files are not platform dependent, so we can achieve this validation using only a simple linux setup.
on:
push:
branches:
- master
pull_request:
paths:
# Always trigger all Github Actions if an action or something CI related was changed
- '.github/workflows/**'
- 'tools/ci/**'
# This workflow should run when a file in either the db/ or npc/ directory has been modified.
- 'db/**'
- 'npc/**'
jobs:
build:
# Github Actions checks for '[ci skip]', '[skip ci]', '[no ci]', '[skip actions]', or '[actions skip]' but not a hyphenated version.
# It's a catch-all incase a Pull Request has been opened and someone is on auto-pilot.
if: "!contains(github.event.head_commit.message, 'ci-skip')"
runs-on: ${{ matrix.os }}
strategy:
matrix:
# The ubuntu-latest label currently points to ubuntu-18.04.
# Available: ubuntu-20.04, ubuntu-18.04
os: [ubuntu-latest]
# Only a single version of GCC is required for validating NPC scripts and database changes.
gcc: ['10']
# We run build checks for both Renewal and PRE-Renewal
mode: ['PRE', 'RE']
steps:
- uses: actions/checkout@v2
# A simple 'yes' and 'no' can be confusing, so we use names to display in the current job then convert them for use in the compiler.
- name: Variable Parsing - PRE
if: ${{ matrix.mode == 'PRE' }}
run: |
echo "PRERE=yes" >> $GITHUB_ENV
- name: Variable Parsing - RE
if: ${{ matrix.mode == 'RE' }}
run: |
echo "PRERE=no" >> $GITHUB_ENV
- name: Update & Install packages
# Ubuntu runners already have most of the packages rAthena requires to build.
# https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-Readme.md
run: |
sudo apt update
sudo apt install zlib1g-dev libpcre3-dev gcc-${{ matrix.gcc }} g++-${{ matrix.gcc }}
- name: Start MySQL
run: sudo systemctl start mysql.service
- name: Setup Database and import table data
run: ./tools/ci/sql.sh
- name: Command - configure
env:
CONFIGURE_FLAGS: 'CC=gcc-${{ matrix.gcc }} CXX=g++-${{ matrix.gcc }} --enable-prere=${{ env.PRERE }} --enable-buildbot=yes'
run: ./configure $CONFIGURE_FLAGS
# npc.sh enables all NPC scripts in the custom and test folders.
- name: Enable All NPCs for Testing
run: ./tools/ci/npc.sh
- name: Command - make clean
run: make clean
# Create import directories
- name: Command - make import
run: make import
- name: Command - make map
run: make map
- name: Run Once - map-server
run: ./map-server --run-once

68
.gitignore vendored
View File

@@ -2,7 +2,6 @@
/autom4te.cache/requests
/autom4te.cache/traces.0
#Global
.vscode
.Apple*
.DS_Store
.clang_complete
@@ -30,7 +29,6 @@ Thumbs.db
*.a
*.vcxproj.user
/char-server
/csv2yaml
/config.log
/config.status
/core
@@ -42,16 +40,15 @@ Thumbs.db
/map-server
/mapcache
/nbproject
/yaml2sql
/yamlupgrade
# /3rdparty/libconfig/
/3rdparty/libconfig/Makefile
/3rdparty/libconfig/*.o
/3rdparty/libconfig/obj
# /3rdparty/rapidyaml/
/3rdparty/rapidyaml/Makefile
# /3rdparty/mt19937ar/
/3rdparty/mt19937ar/Makefile
/3rdparty/mt19937ar/*.o
# /3rdparty/yaml-cpp/
/3rdparty/yaml-cpp/Makefile
@@ -63,9 +60,6 @@ Thumbs.db
/conf/import
/conf/msg_conf/import
# /lib
/lib
# /log/
/log/*.log
/log/*.leaks
@@ -78,7 +72,7 @@ Thumbs.db
/src/common/Makefile
/src/common/obj_all
/src/common/obj_sql
/src/common/version.hpp
/src/common/svnversion.h
# /src/custom/
/src/custom
@@ -90,7 +84,11 @@ Thumbs.db
# /src/map/
/src/map/Makefile
/src/map/obj_sql
/src/map/pcre.hpp
/src/map/pcre.h
# /src/test/
/src/test/Makefile
/src/test/obj
# /src/tool/
/src/tool/Makefile
@@ -103,11 +101,50 @@ Thumbs.db
/tools/*.ilk
/tools/*.pdb
# Visual Studio
# /vcproj-15/
/vcproj-15/char-server
/vcproj-15/login-server
/vcproj-15/mapcache
/vcproj-15/map-server
/vcproj-15/*.user
# /vcproj-14/
.vs
*.VC.db
*.VC.opendb
/vcproj-14/char-server
/vcproj-14/login-server
/vcproj-14/mapcache
/vcproj-14/map-server
/vcproj-14/*.user
# /vcproj-13/
/vcproj-13/char-server
/vcproj-13/login-server
/vcproj-13/mapcache
/vcproj-13/map-server
/vcproj-13/*.user
# /vcproj-12/
/vcproj-12/char-server
/vcproj-12/login-server
/vcproj-12/mapcache
/vcproj-12/map-server
/vcproj-12/*.user
# /vcproj-10/
/vcproj-10/char-server
/vcproj-10/login-server
/vcproj-10/mapcache
/vcproj-10/map-server
/vcproj-10/*.user
# /vcproj-9/
/vcproj-9/*.user
/vcproj-9/char-server
/vcproj-9/login-server
/vcproj-9/map-server
/vcproj-9/mapcache
/.idea/.name
/.idea/misc.xml
/.idea/modules.xml
@@ -115,23 +152,16 @@ Thumbs.db
/.idea/vcs.xml
/.idea/workspace.xml
/build/
/cbuild/
# bat tools
/charserv.bat
/csv2yaml.bat
/logserv.bat
/mapcache.bat
/mapserv.bat
/runserver.bat
/serv.bat
/yaml2sql.bat
/yamlupgrade.bat
# dlls
/libmysql.dll
/pcre8.dll
/zlib.dll
# CMakeFiles
/CMakeFiles/

197
.mailmap
View File

@@ -1,197 +0,0 @@
##################################################################
# This maps commits from different aliases to the same account #
# #
# Always try to map to the GitHub username and try to use the #
# @users.noreply.github.com mail addresses where possible. #
# The entries are sorted ascending by the username. #
# #
# If you want to have your mail changed feel free to contact us. #
# #
# If you know any of the missing commiters please also let us #
# know. #
# You can generate the list of commiters with: #
# git shortlog -sne #
##################################################################
##################################################################
# SVN Users #
##################################################################
ai4rei <ai4rei@users.noreply.github.com> <ai4rei@54d463be-8e91-2dee-dedb-b68131a5f0ec>
Akinari1087 <tagraskemper@hotmail.com> <akinari1087@54d463be-8e91-2dee-dedb-b68131a5f0ec>
Akkarinage <akkarin@rathena.org> <thatakkarin@54d463be-8e91-2dee-dedb-b68131a5f0ec>
aleos89 <aleos89@users.noreply.github.com> <aleos@54d463be-8e91-2dee-dedb-b68131a5f0ec>
Baalberith6 <matej.pristak@gmail.com> <baalberith@54d463be-8e91-2dee-dedb-b68131a5f0ec>
brianluau <brianluau@users.noreply.github.com> <brianluau@54d463be-8e91-2dee-dedb-b68131a5f0ec>
cydh <cydh@users.noreply.github.com> <cydh@54d463be-8e91-2dee-dedb-b68131a5f0ec>
Daegaladh <Daegaladh@users.noreply.github.com> <daegaladh@54d463be-8e91-2dee-dedb-b68131a5f0ec>
Deadly Silence <mail@deadly-silence.de> <deadlysilence@54d463be-8e91-2dee-dedb-b68131a5f0ec>
Epoque1 <22254628+Epoque1@users.noreply.github.com> <epoque11@54d463be-8e91-2dee-dedb-b68131a5f0ec>
euphyy <euphy.raliel@rathena.org> <euphyy@54d463be-8e91-2dee-dedb-b68131a5f0ec>
flaviojs <flaviojs2005@gmail.com> <FlavioJS@54d463be-8e91-2dee-dedb-b68131a5f0ec>
flaviojs <flaviojs2005@gmail.com> <flaviojs2005@54d463be-8e91-2dee-dedb-b68131a5f0ec>
functor-x <piotr.halaczkiewicz@gmail.com> <gepard1984@54d463be-8e91-2dee-dedb-b68131a5f0ec>
functor-x <piotr.halaczkiewicz@gmail.com> <Gepard@54d463be-8e91-2dee-dedb-b68131a5f0ec>
greenboxal <greenboxal@gmail.com> <greenboxal2@54d463be-8e91-2dee-dedb-b68131a5f0ec>
jguy1987 <jmish1987@gmail.com> <jmanfffreak@54d463be-8e91-2dee-dedb-b68131a5f0ec>
jTynne <decadenthearts06@gmail.com> <jtynne@54d463be-8e91-2dee-dedb-b68131a5f0ec>
j-tkay <joseph.tk.ea@gmail.com> <j-tkay@54d463be-8e91-2dee-dedb-b68131a5f0ec>
Kenpachi2k13 <Kenpachi.Developer@gmx.de> <kenpachi2k11@54d463be-8e91-2dee-dedb-b68131a5f0ec>
kisuka <kisuka@kisuka.com> <Kisuka@54d463be-8e91-2dee-dedb-b68131a5f0ec>
Lemongrass3110 <lemongrass@kstp.at> <lemongrass3110@54d463be-8e91-2dee-dedb-b68131a5f0ec>
lnkfish <lnkfish@hotmail.com> <Inkfish@54d463be-8e91-2dee-dedb-b68131a5f0ec>
Locien <masterofmuppets89@gmail.com> <MasterOfMuppets@54d463be-8e91-2dee-dedb-b68131a5f0ec>
lighta <lighta@users.noreply.github.com> <glighta@54d463be-8e91-2dee-dedb-b68131a5f0ec>
Masao87 <masao@gmx.ch> <masao87@54d463be-8e91-2dee-dedb-b68131a5f0ec>
missxantara <missxantara@gmail.com> <xantara@54d463be-8e91-2dee-dedb-b68131a5f0ec>
macabu <macabu@users.noreply.github.com> <momacabu@54d463be-8e91-2dee-dedb-b68131a5f0ec>
Paradox924X <paradox924x@gmail.com> <Paradox924X@54d463be-8e91-2dee-dedb-b68131a5f0ec>
Paradox924X <paradox924x@gmail.com> <Paradox924x@54d463be-8e91-2dee-dedb-b68131a5f0ec>
Playtester <Kenji.Ito@gmx.de> <Playtester@54d463be-8e91-2dee-dedb-b68131a5f0ec>
Playtester <Kenji.Ito@gmx.de> <playtester@54d463be-8e91-2dee-dedb-b68131a5f0ec>
rAthenaAPI <administrator@rathena.org> <eathenabot@54d463be-8e91-2dee-dedb-b68131a5f0ec>
rAthenaAPI <administrator@rathena.org> <rathenabot@54d463be-8e91-2dee-dedb-b68131a5f0ec>
SeoRoman <RomanL0927@gmail.com> <script-Z3R0@54d463be-8e91-2dee-dedb-b68131a5f0ec>
SeoRoman <RomanL0927@gmail.com> <script-z3r0@54d463be-8e91-2dee-dedb-b68131a5f0ec>
shennetsind <ind@henn.et> <shennetsind@54d463be-8e91-2dee-dedb-b68131a5f0ec>
theultramage <umage@netvor.sk> <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec>
trojal <trojal@gmail.com> <trojal@54d463be-8e91-2dee-dedb-b68131a5f0ec>
Valaris <2738218+valaris@users.noreply.github.com> <valaris@54d463be-8e91-2dee-dedb-b68131a5f0ec>
Valaris <2738218+valaris@users.noreply.github.com> <Valaris@54d463be-8e91-2dee-dedb-b68131a5f0ec>
wilkemeyer <fw@f-ws.de> <blacksirius@54d463be-8e91-2dee-dedb-b68131a5f0ec>
Yommy <yomanda@gmail.com> <Yommy@54d463be-8e91-2dee-dedb-b68131a5f0ec>
##################################################################
# Git Aliases #
##################################################################
aleos89 <aleos89@users.noreply.github.com> <aleos89@users.noreply.github.com>
aleos89 <aleos89@users.noreply.github.com> <jarajabi@msn.com>
Akkarinage <akkarin@rathena.org> <mike.langford@live.co.uk>
Baalberith6 <matej.pristak@gmail.com> <matej.pristak@gmail.com>
brianluau <brianluau@users.noreply.github.com> <brianluau@gmail.com>
brianluau <brianluau@users.noreply.github.com> <brianluau@users.noreply.github.com>
Atemo <Atemo@users.noreply.github.com> <capucrath@gmail.com>
Atemo <Atemo@users.noreply.github.com> <Capuche@users.noreply.github.com>
cydh <cydh@users.noreply.github.com> <cydh@users.noreply.github.com>
cydh <cydh@users.noreply.github.com> <cydh@pservero.com>
cydh <cydh@users.noreply.github.com> <house.bad@gmail.com>
Daegaladh <Daegaladh@users.noreply.github.com> <daegaladh@shadowgames.es>
dentongrills <sketchyphoenix@gmail.com> <sketchyphoenix@54d463be-8e91-2dee-dedb-b68131a5f0ec>
dentongrills <sketchyphoenix@gmail.com> <SketchyPhoenix@54d463be-8e91-2dee-dedb-b68131a5f0ec>
euphyy <euphy.raliel@rathena.org> <euphy@rathena.org>
icxbb-xx <arokaice@live.com> <arokaice@live.com>
Jeybla <jey@bjx-studios.de> <jey@toto-ro.de>
Jeybla <jey@bjx-studios.de> <jey@bjx-studios.de>
Jeybla <jey@bjx-studios.de> <jey@toto-ro.de>
GodLesZ <godlesz@hotmail.de> <GodLesZ@54d463be-8e91-2dee-dedb-b68131a5f0ec>
lighta <lighta@users.noreply.github.com> <lightaisme@gmail.com>
lighta <lighta@users.noreply.github.com> <lighta@lighta-fedora20.localdomain>
lighta <lighta@users.noreply.github.com> <lighta@lighta-VPCW12M1E>
lighta <lighta@users.noreply.github.com> <lighta>
lighta <lighta@users.noreply.github.com> <lighta@lighta-VPCW12M1E.(none)>
lighta <lighta@users.noreply.github.com> <lightaisme>
Lilith- <amurov.ro@gmail.com> <amurov.ro@gmail.com>
macabu <macabu@users.noreply.github.com> <macabu.matheus@gmail.com>
macabu <macabu@users.noreply.github.com> <mkbu95@users.noreply.github.com>
rAthenaAPI <administrator@rathena.org> <rAthenaAPI>
secretdataz <secretdataz@users.noreply.github.com> <foreverfk@stephack.com>
secretdataz <secretdataz@users.noreply.github.com> <nightsheep@outlook.com>
secretdataz <secretdataz@users.noreply.github.com> <secret@ahri.in.th>
Stolao <Stolao@users.noreply.github.com> <Taingram11@gmail.com>
tr0n93 <tr0n.developer@gmail.com> <tr0n93@54d463be-8e91-2dee-dedb-b68131a5f0ec>
wilkemeyer <fw@f-ws.de> <fw@f-ws.de>
vstumpf <vincents.995@gmail.com> <vincents.995@gmail.com>
zackdreaver <zackdreaver@users.noreply.github.com> <zackdreaver@gmail.com>
##################################################################
# Unconfirmed ones #
# missing github username #
##################################################################
calciumkid <harrison@isabarwon.com> <calciumkid@54d463be-8e91-2dee-dedb-b68131a5f0ec>
skotlex <skotlex@mailforce.net> <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>
skotlex <skotlex@mailforce.net> <Skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>
##################################################################
# TODO #
# #
# If you know the GitHub account and/or mail address of any of #
# these please let us know. #
##################################################################
# L0ne_W0lf <L0ne_W0lf@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# Lupus <Lupus@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# celest <celest@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# Lance <Lance@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# zephyrus <zephyrus@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# amber <amber@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# toms <toms@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# shadowlady <shadowlady@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# codemaster <codemaster@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# rud0lp20 <rud0lp20@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# Vicious <Vicious@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# samuray22 <samuray22@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# Kevin <Kevin@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# shadow <shadow@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# mc_cameri <mc_cameri@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# evera <evera@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# SinSloth <SinSloth@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# DracoRPG <DracoRPG@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# littlewolf <littlewolf@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# eaac <eaac@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# ajarn <ajarn@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# wizputer <wizputer@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# Nasedo <Nasedo@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# blackhole89 <blackhole89@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# protimus <protimus@54d463be-8e91-2dee-dedb-b68131a5f0ec> https://github.com/protimus
# Komurka <Komurka@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# Poki#3 <Poki#3@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# cookiecrumbs <cookiecrumbs@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# Zido <Zido@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# akrus <akrus@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# markzd <markzd@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# xazax-hun <xazax-hun@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# flaid <flaid@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# lordttseven <lordttseven@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# musashiden <musashiden@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# Aria <Aria@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# og2 <og2@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# reddozen <reddozen@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# KarLaeda <KarLaeda@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# Zephiris <Zephiris@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# DZeroX <DZeroX@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# ignizh <ignizh@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# kobra_k88 <kobra_k88@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# shinomori <shinomori@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# LuzZza <LuzZza@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# spre123 <spre123@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# Chilly0123 <Chilly0123@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# ediejohnny <ediejohnny@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# hipsterfont <hipsterfont@54d463be-8e91-2dee-dedb-b68131a5f0ec> https://github.com/hipsterfont
# nsstrunks <nsstrunks@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# shadoweathena <shadoweathena@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# technote24 <technote24@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# mandark022 <mandark022@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# Kargha <Kargha@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# Mass <Mass@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# Sara <Sara@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# nana <nana@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# veider <veider@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# Shinigami <Shinigami@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# mercurial123 <mercurial123@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# arcshiru <arcshiru@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# davidsiaw <davidsiaw@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# foruken <foruken@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# sirius <sirius@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# Euph <Euph@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# Kayla <Kayla@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# rikimaru17 <rikimaru17@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# Evera <Evera@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# L0neW0lf.eAthena <L0neW0lf.eAthena@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# cleaverbeaver <cleaverbeaver@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# killercube <killercube@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# salepate <salepate@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# spira <spira@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# CIA-2 <CIA-2@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# Protimus <Protimus@54d463be-8e91-2dee-dedb-b68131a5f0ec> https://github.com/protimus
# lmaatl <lmaatl@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# zapbomb <zapbomb@54d463be-8e91-2dee-dedb-b68131a5f0ec>
# zido <zido@54d463be-8e91-2dee-dedb-b68131a5f0ec>

55
.travis.yml Normal file
View File

@@ -0,0 +1,55 @@
language: cpp
compiler:
- clang
- gcc
dist: trusty
before_script:
- uname -a
- mysql -u $DB_ROOT -e "CREATE DATABASE $DB_NAME;" || aborterror "Unable to create database."
- mysql -u $DB_ROOT $DB_NAME < sql-files/main.sql || aborterror "Unable to import main database."
- mysql -u $DB_ROOT $DB_NAME < sql-files/logs.sql || aborterror "Unable to import logs database."
- mysql -u $DB_ROOT $DB_NAME < sql-files/item_cash_db.sql || aborterror "Unable to import cash item table."
- mysql -u $DB_ROOT $DB_NAME < sql-files/item_cash_db2.sql || aborterror "Unable to import cash item 2 table."
- mysql -u $DB_ROOT $DB_NAME < sql-files/item_db.sql || aborterror "Unable to import pre-renewal item table."
- mysql -u $DB_ROOT $DB_NAME < sql-files/item_db2.sql || aborterror "Unable to import pre-renewal item 2 table."
- mysql -u $DB_ROOT $DB_NAME < sql-files/item_db_re.sql || aborterror "Unable to import renewal item table."
- mysql -u $DB_ROOT $DB_NAME < sql-files/item_db2_re.sql || aborterror "Unable to import renewal item 2 table."
- mysql -u $DB_ROOT $DB_NAME < sql-files/mob_db.sql || aborterror "Unable to import pre-renewal monster table."
- mysql -u $DB_ROOT $DB_NAME < sql-files/mob_db2.sql || aborterror "Unable to import pre-renewal monster 2 table."
- mysql -u $DB_ROOT $DB_NAME < sql-files/mob_db_re.sql || aborterror "Unable to import renewal monster table."
- mysql -u $DB_ROOT $DB_NAME < sql-files/mob_db2_re.sql || aborterror "Unable to import renewal monster 2 table."
- mysql -u $DB_ROOT $DB_NAME < sql-files/mob_skill_db.sql || aborterror "Unable to import pre-renewal monster skill table."
- mysql -u $DB_ROOT $DB_NAME < sql-files/mob_skill_db2.sql || aborterror "Unable to import pre-renewal monster skill 2 table."
- mysql -u $DB_ROOT $DB_NAME < sql-files/mob_skill_db_re.sql || aborterror "Unable to import renewal monster skill table."
- mysql -u $DB_ROOT $DB_NAME < sql-files/mob_skill_db2_re.sql || aborterror "Unable to import renewal monster skill 2 table."
- mysql -u $DB_ROOT $DB_NAME < sql-files/roulette_default_data.sql || aborterror "Unable to import roulette table."
- mysql -u $DB_ROOT -e "GRANT ALL ON *.* TO '$DB_USER'@'$DB_HOST' IDENTIFIED BY '$DB_PASS';"
- sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
- sudo apt-get update -q
- sudo apt-get install gcc-5 -y
- sudo apt-get install g++-5 -y
- sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 1
- sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 1
script:
- ./configure $CONFIGURE_FLAGS
- make clean
- make server
- ./map-server --run-once
env:
global:
- DB_ROOT="root"
- DB_HOST="127.0.0.1"
- DB_NAME="ragnarok"
- DB_USER="ragnarok"
- DB_PASS="ragnarok"
matrix:
- CONFIGURE_FLAGS="--enable-prere=no --enable-vip=no --enable-buildbot=yes"
- CONFIGURE_FLAGS="--enable-prere=yes --enable-vip=no --enable-buildbot=yes"
- CONFIGURE_FLAGS="--enable-prere=no --enable-vip=yes --enable-buildbot=yes"
- CONFIGURE_FLAGS="--enable-prere=yes --enable-vip=yes --enable-buildbot=yes"
notifications:
email: false

View File

@@ -48,8 +48,9 @@ endmacro( CONFIGURE_WITH_LOCAL_OR_SYSTEM )
add_subdirectory( libconfig )
add_subdirectory( msinttypes )
add_subdirectory( mt19937ar )
add_subdirectory( mysql )
add_subdirectory( pcre )
add_subdirectory( rapidyaml )
add_subdirectory( yaml-cpp )
add_subdirectory( zlib )
add_subdirectory( yaml-cpp )

2
3rdparty/README.txt vendored
View File

@@ -2,6 +2,8 @@ This folder contains everything related to 3rdparty code or tools.
cmake - scripts for the cmake build system (http://www.cmake.org)
libconfig - library for processing structured configuration files (http://www.hyperrealm.com/libconfig/)
msinttypes - standard headers missing from Microsoft Visual Studio (http://code.google.com/p/msinttypes)
mt19937ar - code for Mersenne Twister pseudorandom number generator
mysql - library for MySQL Community Server (http://www.mysql.com)
pcre - library for Perl Compatible Regular Expressions (http://www.pcre.org)
zlib - library for DEFLATE lossless compression algorithm (http://www.zlib.net)

View File

@@ -1,6 +0,0 @@
__thread int tls;
int main(int argc, char** argv)
{
return 0;
}

View File

@@ -38,31 +38,32 @@
<ProjectGuid>{F6CC5F60-BD13-41B1-81D3-822A45EC0DBD}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>libconfig</RootNamespace>
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
<PlatformToolset>v120</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
<PlatformToolset>v120</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
<PlatformToolset>v120</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
<PlatformToolset>v120</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
@@ -106,7 +107,7 @@
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>YY_USE_CONST;LIBCONFIG_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;_DEBUG;_LIB;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>YY_USE_CONST;LIBCONFIG_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
</ClCompile>
<Link>
@@ -120,7 +121,7 @@
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>YY_USE_CONST;LIBCONFIG_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_DEBUG;_LIB;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>YY_USE_CONST;LIBCONFIG_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
</ClCompile>
<Link>

9
3rdparty/msinttypes/CMakeLists.txt vendored Normal file
View File

@@ -0,0 +1,9 @@
if( MSVC )
find_path( MSINTTYPES_INCLUDE_DIRS "inttypes.h"
PATHS "${CMAKE_CURRENT_SOURCE_DIR}/include"
NO_DEFAULT_PATH )
mark_as_advanced( MSINTTYPES_INCLUDE_DIRS )
message( STATUS "Adding global include directory: ${MSINTTYPES_INCLUDE_DIRS}" )
set_property( CACHE GLOBAL_INCLUDE_DIRS PROPERTY VALUE ${GLOBAL_INCLUDE_DIRS} ${MSINTTYPES_INCLUDE_DIRS} )
endif()

305
3rdparty/msinttypes/include/inttypes.h vendored Normal file
View File

@@ -0,0 +1,305 @@
// ISO C9x compliant inttypes.h for Microsoft Visual Studio
// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
//
// Copyright (c) 2006 Alexander Chemeris
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
//
// 3. The name of the author may be used to endorse or promote products
// derived from this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
///////////////////////////////////////////////////////////////////////////////
#ifndef _MSC_VER // [
#error "Use this header only with Microsoft Visual C++ compilers!"
#endif // _MSC_VER ]
#ifndef _MSC_INTTYPES_H_ // [
#define _MSC_INTTYPES_H_
#if _MSC_VER > 1000
#pragma once
#endif
#include "stdint.h"
// 7.8 Format conversion of integer types
typedef struct {
intmax_t quot;
intmax_t rem;
} imaxdiv_t;
// 7.8.1 Macros for format specifiers
#if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS) // [ See footnote 185 at page 198
// The fprintf macros for signed integers are:
#define PRId8 "d"
#define PRIi8 "i"
#define PRIdLEAST8 "d"
#define PRIiLEAST8 "i"
#define PRIdFAST8 "d"
#define PRIiFAST8 "i"
#define PRId16 "hd"
#define PRIi16 "hi"
#define PRIdLEAST16 "hd"
#define PRIiLEAST16 "hi"
#define PRIdFAST16 "hd"
#define PRIiFAST16 "hi"
#define PRId32 "I32d"
#define PRIi32 "I32i"
#define PRIdLEAST32 "I32d"
#define PRIiLEAST32 "I32i"
#define PRIdFAST32 "I32d"
#define PRIiFAST32 "I32i"
#define PRId64 "I64d"
#define PRIi64 "I64i"
#define PRIdLEAST64 "I64d"
#define PRIiLEAST64 "I64i"
#define PRIdFAST64 "I64d"
#define PRIiFAST64 "I64i"
#define PRIdMAX "I64d"
#define PRIiMAX "I64i"
#define PRIdPTR "Id"
#define PRIiPTR "Ii"
// The fprintf macros for unsigned integers are:
#define PRIo8 "o"
#define PRIu8 "u"
#define PRIx8 "x"
#define PRIX8 "X"
#define PRIoLEAST8 "o"
#define PRIuLEAST8 "u"
#define PRIxLEAST8 "x"
#define PRIXLEAST8 "X"
#define PRIoFAST8 "o"
#define PRIuFAST8 "u"
#define PRIxFAST8 "x"
#define PRIXFAST8 "X"
#define PRIo16 "ho"
#define PRIu16 "hu"
#define PRIx16 "hx"
#define PRIX16 "hX"
#define PRIoLEAST16 "ho"
#define PRIuLEAST16 "hu"
#define PRIxLEAST16 "hx"
#define PRIXLEAST16 "hX"
#define PRIoFAST16 "ho"
#define PRIuFAST16 "hu"
#define PRIxFAST16 "hx"
#define PRIXFAST16 "hX"
#define PRIo32 "I32o"
#define PRIu32 "I32u"
#define PRIx32 "I32x"
#define PRIX32 "I32X"
#define PRIoLEAST32 "I32o"
#define PRIuLEAST32 "I32u"
#define PRIxLEAST32 "I32x"
#define PRIXLEAST32 "I32X"
#define PRIoFAST32 "I32o"
#define PRIuFAST32 "I32u"
#define PRIxFAST32 "I32x"
#define PRIXFAST32 "I32X"
#define PRIo64 "I64o"
#define PRIu64 "I64u"
#define PRIx64 "I64x"
#define PRIX64 "I64X"
#define PRIoLEAST64 "I64o"
#define PRIuLEAST64 "I64u"
#define PRIxLEAST64 "I64x"
#define PRIXLEAST64 "I64X"
#define PRIoFAST64 "I64o"
#define PRIuFAST64 "I64u"
#define PRIxFAST64 "I64x"
#define PRIXFAST64 "I64X"
#define PRIoMAX "I64o"
#define PRIuMAX "I64u"
#define PRIxMAX "I64x"
#define PRIXMAX "I64X"
#define PRIoPTR "Io"
#define PRIuPTR "Iu"
#define PRIxPTR "Ix"
#define PRIXPTR "IX"
// The fscanf macros for signed integers are:
#define SCNd8 "d"
#define SCNi8 "i"
#define SCNdLEAST8 "d"
#define SCNiLEAST8 "i"
#define SCNdFAST8 "d"
#define SCNiFAST8 "i"
#define SCNd16 "hd"
#define SCNi16 "hi"
#define SCNdLEAST16 "hd"
#define SCNiLEAST16 "hi"
#define SCNdFAST16 "hd"
#define SCNiFAST16 "hi"
#define SCNd32 "ld"
#define SCNi32 "li"
#define SCNdLEAST32 "ld"
#define SCNiLEAST32 "li"
#define SCNdFAST32 "ld"
#define SCNiFAST32 "li"
#define SCNd64 "I64d"
#define SCNi64 "I64i"
#define SCNdLEAST64 "I64d"
#define SCNiLEAST64 "I64i"
#define SCNdFAST64 "I64d"
#define SCNiFAST64 "I64i"
#define SCNdMAX "I64d"
#define SCNiMAX "I64i"
#ifdef _WIN64 // [
# define SCNdPTR "I64d"
# define SCNiPTR "I64i"
#else // _WIN64 ][
# define SCNdPTR "ld"
# define SCNiPTR "li"
#endif // _WIN64 ]
// The fscanf macros for unsigned integers are:
#define SCNo8 "o"
#define SCNu8 "u"
#define SCNx8 "x"
#define SCNX8 "X"
#define SCNoLEAST8 "o"
#define SCNuLEAST8 "u"
#define SCNxLEAST8 "x"
#define SCNXLEAST8 "X"
#define SCNoFAST8 "o"
#define SCNuFAST8 "u"
#define SCNxFAST8 "x"
#define SCNXFAST8 "X"
#define SCNo16 "ho"
#define SCNu16 "hu"
#define SCNx16 "hx"
#define SCNX16 "hX"
#define SCNoLEAST16 "ho"
#define SCNuLEAST16 "hu"
#define SCNxLEAST16 "hx"
#define SCNXLEAST16 "hX"
#define SCNoFAST16 "ho"
#define SCNuFAST16 "hu"
#define SCNxFAST16 "hx"
#define SCNXFAST16 "hX"
#define SCNo32 "lo"
#define SCNu32 "lu"
#define SCNx32 "lx"
#define SCNX32 "lX"
#define SCNoLEAST32 "lo"
#define SCNuLEAST32 "lu"
#define SCNxLEAST32 "lx"
#define SCNXLEAST32 "lX"
#define SCNoFAST32 "lo"
#define SCNuFAST32 "lu"
#define SCNxFAST32 "lx"
#define SCNXFAST32 "lX"
#define SCNo64 "I64o"
#define SCNu64 "I64u"
#define SCNx64 "I64x"
#define SCNX64 "I64X"
#define SCNoLEAST64 "I64o"
#define SCNuLEAST64 "I64u"
#define SCNxLEAST64 "I64x"
#define SCNXLEAST64 "I64X"
#define SCNoFAST64 "I64o"
#define SCNuFAST64 "I64u"
#define SCNxFAST64 "I64x"
#define SCNXFAST64 "I64X"
#define SCNoMAX "I64o"
#define SCNuMAX "I64u"
#define SCNxMAX "I64x"
#define SCNXMAX "I64X"
#ifdef _WIN64 // [
# define SCNoPTR "I64o"
# define SCNuPTR "I64u"
# define SCNxPTR "I64x"
# define SCNXPTR "I64X"
#else // _WIN64 ][
# define SCNoPTR "lo"
# define SCNuPTR "lu"
# define SCNxPTR "lx"
# define SCNXPTR "lX"
#endif // _WIN64 ]
#endif // __STDC_FORMAT_MACROS ]
// 7.8.2 Functions for greatest-width integer types
// 7.8.2.1 The imaxabs function
#define imaxabs _abs64
// 7.8.2.2 The imaxdiv function
// This is modified version of div() function from Microsoft's div.c found
// in %MSVC.NET%\crt\src\div.c
#ifdef STATIC_IMAXDIV // [
static
#else // STATIC_IMAXDIV ][
_inline
#endif // STATIC_IMAXDIV ]
imaxdiv_t __cdecl imaxdiv(intmax_t numer, intmax_t denom)
{
imaxdiv_t result;
result.quot = numer / denom;
result.rem = numer % denom;
if (numer < 0 && result.rem > 0) {
// did division wrong; must fix up
++result.quot;
result.rem -= denom;
}
return result;
}
// 7.8.2.3 The strtoimax and strtoumax functions
#define strtoimax _strtoi64
#define strtoumax _strtoui64
// 7.8.2.4 The wcstoimax and wcstoumax functions
#define wcstoimax _wcstoi64
#define wcstoumax _wcstoui64
#endif // _MSC_INTTYPES_H_ ]

251
3rdparty/msinttypes/include/stdint.h vendored Normal file
View File

@@ -0,0 +1,251 @@
// ISO C9x compliant stdint.h for Microsoft Visual Studio
// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
//
// Copyright (c) 2006-2008 Alexander Chemeris
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
//
// 3. The name of the author may be used to endorse or promote products
// derived from this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
///////////////////////////////////////////////////////////////////////////////
#ifndef _MSC_VER // [
#error "Use this header only with Microsoft Visual C++ compilers!"
#endif // _MSC_VER ]
#ifndef _MSC_STDINT_H_ // [
#define _MSC_STDINT_H_
#if _MSC_VER > 1000
#pragma once
#endif
#include <limits.h>
// For Visual Studio 6 in C++ mode and for many Visual Studio versions when
// compiling for ARM we should wrap <wchar.h> include with 'extern "C++" {}'
// or compiler give many errors like this:
// error C2733: second C linkage of overloaded function 'wmemchr' not allowed
#ifdef __cplusplus
#if _MSC_VER < 1300
extern "C++" {
#else
extern "C" {
#endif
#endif
# include <wchar.h>
#ifdef __cplusplus
}
#endif
// Define _W64 macros to mark types changing their size, like intptr_t.
#ifndef _W64
# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300
# define _W64 __w64
# else
# define _W64
# endif
#endif
// 7.18.1 Integer types
// 7.18.1.1 Exact-width integer types
// Visual Studio 6 and Embedded Visual C++ 4 doesn't
// realize that, e.g. char has the same size as __int8
// so we give up on __intX for them.
#if (_MSC_VER < 1300)
typedef signed char int8_t;
typedef signed short int16_t;
typedef signed int int32_t;
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;
#else
typedef signed __int8 int8_t;
typedef signed __int16 int16_t;
typedef signed __int32 int32_t;
typedef unsigned __int8 uint8_t;
typedef unsigned __int16 uint16_t;
typedef unsigned __int32 uint32_t;
#endif
typedef signed __int64 int64_t;
typedef unsigned __int64 uint64_t;
// 7.18.1.2 Minimum-width integer types
typedef int8_t int_least8_t;
typedef int16_t int_least16_t;
typedef int32_t int_least32_t;
typedef int64_t int_least64_t;
typedef uint8_t uint_least8_t;
typedef uint16_t uint_least16_t;
typedef uint32_t uint_least32_t;
typedef uint64_t uint_least64_t;
// 7.18.1.3 Fastest minimum-width integer types
typedef int8_t int_fast8_t;
typedef int16_t int_fast16_t;
typedef int32_t int_fast32_t;
typedef int64_t int_fast64_t;
typedef uint8_t uint_fast8_t;
typedef uint16_t uint_fast16_t;
typedef uint32_t uint_fast32_t;
typedef uint64_t uint_fast64_t;
// 7.18.1.4 Integer types capable of holding object pointers
#ifdef _WIN64 // [
typedef signed __int64 intptr_t;
typedef unsigned __int64 uintptr_t;
#else // _WIN64 ][
typedef _W64 signed int intptr_t;
typedef _W64 unsigned int uintptr_t;
#endif // _WIN64 ]
// 7.18.1.5 Greatest-width integer types
typedef int64_t intmax_t;
typedef uint64_t uintmax_t;
// 7.18.2 Limits of specified-width integer types
#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259
// 7.18.2.1 Limits of exact-width integer types
#define INT8_MIN ((int8_t)_I8_MIN)
#define INT8_MAX _I8_MAX
#define INT16_MIN ((int16_t)_I16_MIN)
#define INT16_MAX _I16_MAX
#define INT32_MIN ((int32_t)_I32_MIN)
#define INT32_MAX _I32_MAX
#define INT64_MIN ((int64_t)_I64_MIN)
#define INT64_MAX _I64_MAX
#define UINT8_MAX _UI8_MAX
#define UINT16_MAX _UI16_MAX
#define UINT32_MAX _UI32_MAX
#define UINT64_MAX _UI64_MAX
// 7.18.2.2 Limits of minimum-width integer types
#define INT_LEAST8_MIN INT8_MIN
#define INT_LEAST8_MAX INT8_MAX
#define INT_LEAST16_MIN INT16_MIN
#define INT_LEAST16_MAX INT16_MAX
#define INT_LEAST32_MIN INT32_MIN
#define INT_LEAST32_MAX INT32_MAX
#define INT_LEAST64_MIN INT64_MIN
#define INT_LEAST64_MAX INT64_MAX
#define UINT_LEAST8_MAX UINT8_MAX
#define UINT_LEAST16_MAX UINT16_MAX
#define UINT_LEAST32_MAX UINT32_MAX
#define UINT_LEAST64_MAX UINT64_MAX
// 7.18.2.3 Limits of fastest minimum-width integer types
#define INT_FAST8_MIN INT8_MIN
#define INT_FAST8_MAX INT8_MAX
#define INT_FAST16_MIN INT16_MIN
#define INT_FAST16_MAX INT16_MAX
#define INT_FAST32_MIN INT32_MIN
#define INT_FAST32_MAX INT32_MAX
#define INT_FAST64_MIN INT64_MIN
#define INT_FAST64_MAX INT64_MAX
#define UINT_FAST8_MAX UINT8_MAX
#define UINT_FAST16_MAX UINT16_MAX
#define UINT_FAST32_MAX UINT32_MAX
#define UINT_FAST64_MAX UINT64_MAX
// 7.18.2.4 Limits of integer types capable of holding object pointers
#ifdef _WIN64 // [
# define INTPTR_MIN INT64_MIN
# define INTPTR_MAX INT64_MAX
# define UINTPTR_MAX UINT64_MAX
#else // _WIN64 ][
# define INTPTR_MIN INT32_MIN
# define INTPTR_MAX INT32_MAX
# define UINTPTR_MAX UINT32_MAX
#endif // _WIN64 ]
// 7.18.2.5 Limits of greatest-width integer types
#define INTMAX_MIN INT64_MIN
#define INTMAX_MAX INT64_MAX
#define UINTMAX_MAX UINT64_MAX
// 7.18.3 Limits of other integer types
#ifdef _WIN64 // [
# define PTRDIFF_MIN _I64_MIN
# define PTRDIFF_MAX _I64_MAX
#else // _WIN64 ][
# define PTRDIFF_MIN _I32_MIN
# define PTRDIFF_MAX _I32_MAX
#endif // _WIN64 ]
#define SIG_ATOMIC_MIN INT_MIN
#define SIG_ATOMIC_MAX INT_MAX
#ifndef SIZE_MAX // [
# ifdef _WIN64 // [
# define SIZE_MAX _UI64_MAX
# else // _WIN64 ][
# define SIZE_MAX _UI32_MAX
# endif // _WIN64 ]
#endif // SIZE_MAX ]
// WCHAR_MIN and WCHAR_MAX are also defined in <wchar.h>
#ifndef WCHAR_MIN // [
# define WCHAR_MIN 0
#endif // WCHAR_MIN ]
#ifndef WCHAR_MAX // [
# define WCHAR_MAX _UI16_MAX
#endif // WCHAR_MAX ]
#define WINT_MIN 0
#define WINT_MAX _UI16_MAX
#endif // __STDC_LIMIT_MACROS ]
// 7.18.4 Limits of other integer types
#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260
// 7.18.4.1 Macros for minimum-width integer constants
#define INT8_C(val) val##i8
#define INT16_C(val) val##i16
#define INT32_C(val) val##i32
#define INT64_C(val) val##i64
#define UINT8_C(val) val##ui8
#define UINT16_C(val) val##ui16
#define UINT32_C(val) val##ui32
#define UINT64_C(val) val##ui64
// 7.18.4.2 Macros for greatest-width integer constants
#define INTMAX_C INT64_C
#define UINTMAX_C UINT64_C
#endif // __STDC_CONSTANT_MACROS ]
#endif // _MSC_STDINT_H_ ]

16
3rdparty/mt19937ar/CMakeLists.txt vendored Normal file
View File

@@ -0,0 +1,16 @@
find_path( MT19937AR_INCLUDE_DIRS "mt19937ar.h"
PATHS "${CMAKE_CURRENT_SOURCE_DIR}"
NO_DEFAULT_PATH )
find_path( MT19937AR_SOURCE_DIR "mt19937ar.c"
PATHS "${CMAKE_CURRENT_SOURCE_DIR}"
NO_DEFAULT_PATH )
mark_as_advanced( MT19937AR_INCLUDE_DIRS )
mark_as_advanced( MT19937AR_SOURCE_DIR )
set( MT19937AR_HEADERS
"${CMAKE_CURRENT_SOURCE_DIR}/mt19937ar.h"
CACHE INTERNAL "mt19937ar headers" )
set( MT19937AR_SOURCES
"${CMAKE_CURRENT_SOURCE_DIR}/mt19937ar.c"
CACHE INTERNAL "mt19937ar sources" )

26
3rdparty/mt19937ar/Makefile.in vendored Normal file
View File

@@ -0,0 +1,26 @@
MT19937AR_OBJ = mt19937ar.o
MT19937AR_H = mt19937ar.h
@SET_MAKE@
#####################################################################
.PHONY : all clean help
all: $(MT19937AR_OBJ)
clean:
@echo " CLEAN mt19937ar"
@rm -rf *.o
help:
@echo "possible targets are 'all' 'clean' 'help'"
@echo "'all' - builds $(MT19937AR_OBJ)"
@echo "'clean' - deletes $(MT19937AR_OBJ)"
@echo "'help' - outputs this message"
#####################################################################
%.o: %.c $(MT19937AR_H)
@echo " CC $<"
@@CC@ @CFLAGS_AR@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $<

175
3rdparty/mt19937ar/mt19937ar.c vendored Normal file
View File

@@ -0,0 +1,175 @@
/*
A C-program for MT19937, with initialization improved 2002/1/26.
Coded by Takuji Nishimura and Makoto Matsumoto.
Before using, initialize the state by using init_genrand(seed)
or init_by_array(init_key, key_length).
Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,
All rights reserved.
Copyright (C) 2005, Mutsuo Saito,
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The names of its contributors may not be used to endorse or promote
products derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Any feedback is very welcome.
http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html
email: m-mat @ math.sci.hiroshima-u.ac.jp (remove space)
*/
#include <stdio.h>
#include "mt19937ar.h"
/* Period parameters */
#define N 624
#define M 397
#define MATRIX_A 0x9908b0dfUL /* constant vector a */
#define UPPER_MASK 0x80000000UL /* most significant w-r bits */
#define LOWER_MASK 0x7fffffffUL /* least significant r bits */
static unsigned long mt[N]; /* the array for the state vector */
static int mti=N+1; /* mti==N+1 means mt[N] is not initialized */
/* initializes mt[N] with a seed */
void init_genrand(unsigned long s)
{
mt[0]= s & 0xffffffffUL;
for (mti=1; mti<N; mti++) {
mt[mti] =
(1812433253UL * (mt[mti-1] ^ (mt[mti-1] >> 30)) + mti);
/* See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier. */
/* In the previous versions, MSBs of the seed affect */
/* only MSBs of the array mt[]. */
/* 2002/01/09 modified by Makoto Matsumoto */
mt[mti] &= 0xffffffffUL;
/* for >32 bit machines */
}
}
/* initialize by an array with array-length */
/* init_key is the array for initializing keys */
/* key_length is its length */
/* slight change for C++, 2004/2/26 */
void init_by_array(unsigned long init_key[], int key_length)
{
int i, j, k;
init_genrand(19650218UL);
i=1; j=0;
k = (N>key_length ? N : key_length);
for (; k; k--) {
mt[i] = (mt[i] ^ ((mt[i-1] ^ (mt[i-1] >> 30)) * 1664525UL))
+ init_key[j] + j; /* non linear */
mt[i] &= 0xffffffffUL; /* for WORDSIZE > 32 machines */
i++; j++;
if (i>=N) { mt[0] = mt[N-1]; i=1; }
if (j>=key_length) j=0;
}
for (k=N-1; k; k--) {
mt[i] = (mt[i] ^ ((mt[i-1] ^ (mt[i-1] >> 30)) * 1566083941UL))
- i; /* non linear */
mt[i] &= 0xffffffffUL; /* for WORDSIZE > 32 machines */
i++;
if (i>=N) { mt[0] = mt[N-1]; i=1; }
}
mt[0] = 0x80000000UL; /* MSB is 1; assuring non-zero initial array */
}
/* generates a random number on [0,0xffffffff]-interval */
unsigned long genrand_int32(void)
{
unsigned long y;
static unsigned long mag01[2]={0x0UL, MATRIX_A};
/* mag01[x] = x * MATRIX_A for x=0,1 */
if (mti >= N) { /* generate N words at one time */
int kk;
if (mti == N+1) /* if init_genrand() has not been called, */
init_genrand(5489UL); /* a default initial seed is used */
for (kk=0;kk<N-M;kk++) {
y = (mt[kk]&UPPER_MASK)|(mt[kk+1]&LOWER_MASK);
mt[kk] = mt[kk+M] ^ (y >> 1) ^ mag01[y & 0x1UL];
}
for (;kk<N-1;kk++) {
y = (mt[kk]&UPPER_MASK)|(mt[kk+1]&LOWER_MASK);
mt[kk] = mt[kk+(M-N)] ^ (y >> 1) ^ mag01[y & 0x1UL];
}
y = (mt[N-1]&UPPER_MASK)|(mt[0]&LOWER_MASK);
mt[N-1] = mt[M-1] ^ (y >> 1) ^ mag01[y & 0x1UL];
mti = 0;
}
y = mt[mti++];
/* Tempering */
y ^= (y >> 11);
y ^= (y << 7) & 0x9d2c5680UL;
y ^= (y << 15) & 0xefc60000UL;
y ^= (y >> 18);
return y;
}
/* generates a random number on [0,0x7fffffff]-interval */
long genrand_int31(void)
{
return (long)(genrand_int32()>>1);
}
/* generates a random number on [0,1]-real-interval */
double genrand_real1(void)
{
return genrand_int32()*(1.0/4294967295.0);
/* divided by 2^32-1 */
}
/* generates a random number on [0,1)-real-interval */
double genrand_real2(void)
{
return genrand_int32()*(1.0/4294967296.0);
/* divided by 2^32 */
}
/* generates a random number on (0,1)-real-interval */
double genrand_real3(void)
{
return (((double)genrand_int32()) + 0.5)*(1.0/4294967296.0);
/* divided by 2^32 */
}
/* generates a random number on [0,1) with 53-bit resolution*/
double genrand_res53(void)
{
unsigned long a=genrand_int32()>>5, b=genrand_int32()>>6;
return(a*67108864.0+b)*(1.0/9007199254740992.0);
}
/* These real versions are due to Isaku Wada, 2002/01/09 added */

82
3rdparty/mt19937ar/mt19937ar.h vendored Normal file
View File

@@ -0,0 +1,82 @@
#pragma once
/*
A C-program for MT19937, with initialization improved 2002/1/26.
Coded by Takuji Nishimura and Makoto Matsumoto.
Before using, initialize the state by using init_genrand(seed)
or init_by_array(init_key, key_length).
Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,
All rights reserved.
Copyright (C) 2005, Mutsuo Saito
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The names of its contributors may not be used to endorse or promote
products derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Any feedback is very welcome.
http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html
email: m-mat @ math.sci.hiroshima-u.ac.jp (remove space)
*/
#ifdef __cplusplus
extern "C" {
#endif
/* initializes mt[N] with a seed */
void init_genrand(unsigned long s);
/* initialize by an array with array-length */
/* init_key is the array for initializing keys */
/* key_length is its length */
/* slight change for C++, 2004/2/26 */
void init_by_array(unsigned long init_key[], int key_length);
/* generates a random number on [0,0xffffffff]-interval */
unsigned long genrand_int32(void);
/* generates a random number on [0,0x7fffffff]-interval */
long genrand_int31(void);
/* These real versions are due to Isaku Wada, 2002/01/09 added */
/* generates a random number on [0,1]-real-interval */
double genrand_real1(void);
/* generates a random number on [0,1)-real-interval */
double genrand_real2(void);
/* generates a random number on (0,1)-real-interval */
double genrand_real3(void);
/* generates a random number on [0,1) with 53-bit resolution*/
double genrand_res53(void);
#ifdef __cplusplus
}
#endif

403
3rdparty/mt19937ar/mt19937ar.out vendored Normal file
View File

@@ -0,0 +1,403 @@
1000 outputs of genrand_int32()
1067595299 955945823 477289528 4107218783 4228976476
3344332714 3355579695 227628506 810200273 2591290167
2560260675 3242736208 646746669 1479517882 4245472273
1143372638 3863670494 3221021970 1773610557 1138697238
1421897700 1269916527 2859934041 1764463362 3874892047
3965319921 72549643 2383988930 2600218693 3237492380
2792901476 725331109 605841842 271258942 715137098
3297999536 1322965544 4229579109 1395091102 3735697720
2101727825 3730287744 2950434330 1661921839 2895579582
2370511479 1004092106 2247096681 2111242379 3237345263
4082424759 219785033 2454039889 3709582971 835606218
2411949883 2735205030 756421180 2175209704 1873865952
2762534237 4161807854 3351099340 181129879 3269891896
776029799 2218161979 3001745796 1866825872 2133627728
34862734 1191934573 3102311354 2916517763 1012402762
2184831317 4257399449 2899497138 3818095062 3030756734
1282161629 420003642 2326421477 2741455717 1278020671
3744179621 271777016 2626330018 2560563991 3055977700
4233527566 1228397661 3595579322 1077915006 2395931898
1851927286 3013683506 1999971931 3006888962 1049781534
1488758959 3491776230 104418065 2448267297 3075614115
3872332600 891912190 3936547759 2269180963 2633455084
1047636807 2604612377 2709305729 1952216715 207593580
2849898034 670771757 2210471108 467711165 263046873
3569667915 1042291111 3863517079 1464270005 2758321352
3790799816 2301278724 3106281430 7974801 2792461636
555991332 621766759 1322453093 853629228 686962251
1455120532 957753161 1802033300 1021534190 3486047311
1902128914 3701138056 4176424663 1795608698 560858864
3737752754 3141170998 1553553385 3367807274 711546358
2475125503 262969859 251416325 2980076994 1806565895
969527843 3529327173 2736343040 2987196734 1649016367
2206175811 3048174801 3662503553 3138851612 2660143804
1663017612 1816683231 411916003 3887461314 2347044079
1015311755 1203592432 2170947766 2569420716 813872093
1105387678 1431142475 220570551 4243632715 4179591855
2607469131 3090613241 282341803 1734241730 1391822177
1001254810 827927915 1886687171 3935097347 2631788714
3905163266 110554195 2447955646 3717202975 3304793075
3739614479 3059127468 953919171 2590123714 1132511021
3795593679 2788030429 982155079 3472349556 859942552
2681007391 2299624053 647443547 233600422 608168955
3689327453 1849778220 1608438222 3968158357 2692977776
2851872572 246750393 3582818628 3329652309 4036366910
1012970930 950780808 3959768744 2538550045 191422718
2658142375 3276369011 2927737484 1234200027 1920815603
3536074689 1535612501 2184142071 3276955054 428488088
2378411984 4059769550 3913744741 2732139246 64369859
3755670074 842839565 2819894466 2414718973 1010060670
1839715346 2410311136 152774329 3485009480 4102101512
2852724304 879944024 1785007662 2748284463 1354768064
3267784736 2269127717 3001240761 3179796763 895723219
865924942 4291570937 89355264 1471026971 4114180745
3201939751 2867476999 2460866060 3603874571 2238880432
3308416168 2072246611 2755653839 3773737248 1709066580
4282731467 2746170170 2832568330 433439009 3175778732
26248366 2551382801 183214346 3893339516 1928168445
1337157619 3429096554 3275170900 1782047316 4264403756
1876594403 4289659572 3223834894 1728705513 4068244734
2867840287 1147798696 302879820 1730407747 1923824407
1180597908 1569786639 198796327 560793173 2107345620
2705990316 3448772106 3678374155 758635715 884524671
486356516 1774865603 3881226226 2635213607 1181121587
1508809820 3178988241 1594193633 1235154121 326117244
2304031425 937054774 2687415945 3192389340 2003740439
1823766188 2759543402 10067710 1533252662 4132494984
82378136 420615890 3467563163 541562091 3535949864
2277319197 3330822853 3215654174 4113831979 4204996991
2162248333 3255093522 2219088909 2978279037 255818579
2859348628 3097280311 2569721123 1861951120 2907080079
2719467166 998319094 2521935127 2404125338 259456032
2086860995 1839848496 1893547357 2527997525 1489393124
2860855349 76448234 2264934035 744914583 2586791259
1385380501 66529922 1819103258 1899300332 2098173828
1793831094 276463159 360132945 4178212058 595015228
177071838 2800080290 1573557746 1548998935 378454223
1460534296 1116274283 3112385063 3709761796 827999348
3580042847 1913901014 614021289 4278528023 1905177404
45407939 3298183234 1184848810 3644926330 3923635459
1627046213 3677876759 969772772 1160524753 1522441192
452369933 1527502551 832490847 1003299676 1071381111
2891255476 973747308 4086897108 1847554542 3895651598
2227820339 1621250941 2881344691 3583565821 3510404498
849362119 862871471 797858058 2867774932 2821282612
3272403146 3997979905 209178708 1805135652 6783381
2823361423 792580494 4263749770 776439581 3798193823
2853444094 2729507474 1071873341 1329010206 1289336450
3327680758 2011491779 80157208 922428856 1158943220
1667230961 2461022820 2608845159 387516115 3345351910
1495629111 4098154157 3156649613 3525698599 4134908037
446713264 2137537399 3617403512 813966752 1157943946
3734692965 1680301658 3180398473 3509854711 2228114612
1008102291 486805123 863791847 3189125290 1050308116
3777341526 4291726501 844061465 1347461791 2826481581
745465012 2055805750 4260209475 2386693097 2980646741
447229436 2077782664 1232942813 4023002732 1399011509
3140569849 2579909222 3794857471 900758066 2887199683
1720257997 3367494931 2668921229 955539029 3818726432
1105704962 3889207255 2277369307 2746484505 1761846513
2413916784 2685127085 4240257943 1166726899 4215215715
3082092067 3960461946 1663304043 2087473241 4162589986
2507310778 1579665506 767234210 970676017 492207530
1441679602 1314785090 3262202570 3417091742 1561989210
3011406780 1146609202 3262321040 1374872171 1634688712
1280458888 2230023982 419323804 3262899800 39783310
1641619040 1700368658 2207946628 2571300939 2424079766
780290914 2715195096 3390957695 163151474 2309534542
1860018424 555755123 280320104 1604831083 2713022383
1728987441 3639955502 623065489 3828630947 4275479050
3516347383 2343951195 2430677756 635534992 3868699749
808442435 3070644069 4282166003 2093181383 2023555632
1568662086 3422372620 4134522350 3016979543 3259320234
2888030729 3185253876 4258779643 1267304371 1022517473
815943045 929020012 2995251018 3371283296 3608029049
2018485115 122123397 2810669150 1411365618 1238391329
1186786476 3155969091 2242941310 1765554882 279121160
4279838515 1641578514 3796324015 13351065 103516986
1609694427 551411743 2493771609 1316337047 3932650856
4189700203 463397996 2937735066 1855616529 2626847990
55091862 3823351211 753448970 4045045500 1274127772
1124182256 92039808 2126345552 425973257 386287896
2589870191 1987762798 4084826973 2172456685 3366583455
3602966653 2378803535 2901764433 3716929006 3710159000
2653449155 3469742630 3096444476 3932564653 2595257433
318974657 3146202484 853571438 144400272 3768408841
782634401 2161109003 570039522 1886241521 14249488
2230804228 1604941699 3928713335 3921942509 2155806892
134366254 430507376 1924011722 276713377 196481886
3614810992 1610021185 1785757066 851346168 3761148643
2918835642 3364422385 3012284466 3735958851 2643153892
3778608231 1164289832 205853021 2876112231 3503398282
3078397001 3472037921 1748894853 2740861475 316056182
1660426908 168885906 956005527 3984354789 566521563
1001109523 1216710575 2952284757 3834433081 3842608301
2467352408 3974441264 3256601745 1409353924 1329904859
2307560293 3125217879 3622920184 3832785684 3882365951
2308537115 2659155028 1450441945 3532257603 3186324194
1225603425 1124246549 175808705 3009142319 2796710159
3651990107 160762750 1902254979 1698648476 1134980669
497144426 3302689335 4057485630 3603530763 4087252587
427812652 286876201 823134128 1627554964 3745564327
2589226092 4202024494 62878473 3275585894 3987124064
2791777159 1916869511 2585861905 1375038919 1403421920
60249114 3811870450 3021498009 2612993202 528933105
2757361321 3341402964 2621861700 273128190 4015252178
3094781002 1621621288 2337611177 1796718448 1258965619
4241913140 2138560392 3022190223 4174180924 450094611
3274724580 617150026 2704660665 1469700689 1341616587
356715071 1188789960 2278869135 1766569160 2795896635
57824704 2893496380 1235723989 1630694347 3927960522
428891364 1814070806 2287999787 4125941184 3968103889
3548724050 1025597707 1404281500 2002212197 92429143
2313943944 2403086080 3006180634 3561981764 1671860914
1768520622 1803542985 844848113 3006139921 1410888995
1157749833 2125704913 1789979528 1799263423 741157179
2405862309 767040434 2655241390 3663420179 2172009096
2511931187 1680542666 231857466 1154981000 157168255
1454112128 3505872099 1929775046 2309422350 2143329496
2960716902 407610648 2938108129 2581749599 538837155
2342628867 430543915 740188568 1937713272 3315215132
2085587024 4030765687 766054429 3517641839 689721775
1294158986 1753287754 4202601348 1974852792 33459103
3568087535 3144677435 1686130825 4134943013 3005738435
3599293386 426570142 754104406 3660892564 1964545167
829466833 821587464 1746693036 1006492428 1595312919
1256599985 1024482560 1897312280 2902903201 691790057
1037515867 3176831208 1968401055 2173506824 1089055278
1748401123 2941380082 968412354 1818753861 2973200866
3875951774 1119354008 3988604139 1647155589 2232450826
3486058011 3655784043 3759258462 847163678 1082052057
989516446 2871541755 3196311070 3929963078 658187585
3664944641 2175149170 2203709147 2756014689 2456473919
3890267390 1293787864 2830347984 3059280931 4158802520
1561677400 2586570938 783570352 1355506163 31495586
3789437343 3340549429 2092501630 896419368 671715824
3530450081 3603554138 1055991716 3442308219 1499434728
3130288473 3639507000 17769680 2259741420 487032199
4227143402 3693771256 1880482820 3924810796 381462353
4017855991 2452034943 2736680833 2209866385 2128986379
437874044 595759426 641721026 1636065708 3899136933
629879088 3591174506 351984326 2638783544 2348444281
2341604660 2123933692 143443325 1525942256 364660499
599149312 939093251 1523003209 106601097 376589484
1346282236 1297387043 764598052 3741218111 933457002
1886424424 3219631016 525405256 3014235619 323149677
2038881721 4100129043 2851715101 2984028078 1888574695
2014194741 3515193880 4180573530 3461824363 2641995497
3179230245 2902294983 2217320456 4040852155 1784656905
3311906931 87498458 2752971818 2635474297 2831215366
3682231106 2920043893 3772929704 2816374944 309949752
2383758854 154870719 385111597 1191604312 1840700563
872191186 2925548701 1310412747 2102066999 1504727249
3574298750 1191230036 3330575266 3180292097 3539347721
681369118 3305125752 3648233597 950049240 4173257693
1760124957 512151405 681175196 580563018 1169662867
4015033554 2687781101 699691603 2673494188 1137221356
123599888 472658308 1053598179 1012713758 3481064843
3759461013 3981457956 3830587662 1877191791 3650996736
988064871 3515461600 4089077232 2225147448 1249609188
2643151863 3896204135 2416995901 1397735321 3460025646
1000 outputs of genrand_real2()
0.76275443 0.99000644 0.98670464 0.10143112 0.27933125
0.69867227 0.94218740 0.03427201 0.78842173 0.28180608
0.92179002 0.20785655 0.54534773 0.69644020 0.38107718
0.23978165 0.65286910 0.07514568 0.22765211 0.94872929
0.74557914 0.62664415 0.54708246 0.90959343 0.42043116
0.86334511 0.19189126 0.14718544 0.70259889 0.63426346
0.77408121 0.04531601 0.04605807 0.88595519 0.69398270
0.05377184 0.61711170 0.05565708 0.10133577 0.41500776
0.91810699 0.22320679 0.23353705 0.92871862 0.98897234
0.19786706 0.80558809 0.06961067 0.55840445 0.90479405
0.63288060 0.95009721 0.54948447 0.20645042 0.45000959
0.87050869 0.70806991 0.19406895 0.79286390 0.49332866
0.78483914 0.75145146 0.12341941 0.42030252 0.16728160
0.59906494 0.37575460 0.97815160 0.39815952 0.43595080
0.04952478 0.33917805 0.76509902 0.61034321 0.90654701
0.92915732 0.85365931 0.18812377 0.65913428 0.28814566
0.59476081 0.27835931 0.60722542 0.68310435 0.69387186
0.03699800 0.65897714 0.17527003 0.02889304 0.86777366
0.12352068 0.91439461 0.32022990 0.44445731 0.34903686
0.74639273 0.65918367 0.92492794 0.31872642 0.77749724
0.85413832 0.76385624 0.32744211 0.91326300 0.27458185
0.22190155 0.19865383 0.31227402 0.85321225 0.84243342
0.78544200 0.71854080 0.92503892 0.82703064 0.88306297
0.47284073 0.70059042 0.48003761 0.38671694 0.60465770
0.41747204 0.47163243 0.72750808 0.65830223 0.10955369
0.64215401 0.23456345 0.95944940 0.72822249 0.40888451
0.69980355 0.26677428 0.57333635 0.39791582 0.85377858
0.76962816 0.72004885 0.90903087 0.51376506 0.37732665
0.12691640 0.71249738 0.81217908 0.37037313 0.32772374
0.14238259 0.05614811 0.74363008 0.39773267 0.94859135
0.31452454 0.11730313 0.62962618 0.33334237 0.45547255
0.10089665 0.56550662 0.60539371 0.16027624 0.13245301
0.60959939 0.04671662 0.99356286 0.57660859 0.40269560
0.45274629 0.06699735 0.85064246 0.87742744 0.54508392
0.87242982 0.29321385 0.67660627 0.68230715 0.79052073
0.48592054 0.25186266 0.93769755 0.28565487 0.47219067
0.99054882 0.13155240 0.47110470 0.98556600 0.84397623
0.12875246 0.90953202 0.49129015 0.23792727 0.79481194
0.44337770 0.96564297 0.67749118 0.55684872 0.27286897
0.79538393 0.61965356 0.22487929 0.02226018 0.49248200
0.42247006 0.91797788 0.99250134 0.23449967 0.52531508
0.10246337 0.78685622 0.34310922 0.89892996 0.40454552
0.68608407 0.30752487 0.83601319 0.54956031 0.63777550
0.82199797 0.24890696 0.48801123 0.48661910 0.51223987
0.32969635 0.31075073 0.21393155 0.73453207 0.15565705
0.58584522 0.28976728 0.97621478 0.61498701 0.23891470
0.28518540 0.46809591 0.18371914 0.37597910 0.13492176
0.66849449 0.82811466 0.56240330 0.37548956 0.27562998
0.27521910 0.74096121 0.77176757 0.13748143 0.99747138
0.92504502 0.09175241 0.21389176 0.21766512 0.31183245
0.23271221 0.21207367 0.57903312 0.77523344 0.13242613
0.31037988 0.01204835 0.71652949 0.84487594 0.14982178
0.57423142 0.45677888 0.48420169 0.53465428 0.52667473
0.46880526 0.49849733 0.05670710 0.79022476 0.03872047
0.21697212 0.20443086 0.28949326 0.81678186 0.87629474
0.92297064 0.27373097 0.84625273 0.51505586 0.00582792
0.33295971 0.91848412 0.92537226 0.91760033 0.07541125
0.71745848 0.61158698 0.00941650 0.03135554 0.71527471
0.24821915 0.63636652 0.86159918 0.26450229 0.60160194
0.35557725 0.24477500 0.07186456 0.51757096 0.62120362
0.97981062 0.69954667 0.21065616 0.13382753 0.27693186
0.59644095 0.71500764 0.04110751 0.95730081 0.91600724
0.47704678 0.26183479 0.34706971 0.07545431 0.29398385
0.93236070 0.60486023 0.48015011 0.08870451 0.45548581
0.91872718 0.38142712 0.10668643 0.01397541 0.04520355
0.93822273 0.18011940 0.57577277 0.91427606 0.30911399
0.95853475 0.23611214 0.69619891 0.69601980 0.76765372
0.58515930 0.49479057 0.11288752 0.97187699 0.32095365
0.57563608 0.40760618 0.78703383 0.43261152 0.90877651
0.84686346 0.10599030 0.72872803 0.19315490 0.66152912
0.10210518 0.06257876 0.47950688 0.47062066 0.72701157
0.48915116 0.66110261 0.60170685 0.24516994 0.12726050
0.03451185 0.90864994 0.83494878 0.94800035 0.91035206
0.14480751 0.88458997 0.53498312 0.15963215 0.55378627
0.35171349 0.28719791 0.09097957 0.00667896 0.32309622
0.87561479 0.42534520 0.91748977 0.73908457 0.41793223
0.99279792 0.87908370 0.28458072 0.59132853 0.98672190
0.28547393 0.09452165 0.89910674 0.53681109 0.37931425
0.62683489 0.56609740 0.24801549 0.52948179 0.98328855
0.66403523 0.55523786 0.75886666 0.84784685 0.86829981
0.71448906 0.84670080 0.43922919 0.20771016 0.64157936
0.25664246 0.73055695 0.86395782 0.65852932 0.99061803
0.40280575 0.39146298 0.07291005 0.97200603 0.20555729
0.59616495 0.08138254 0.45796388 0.33681125 0.33989127
0.18717090 0.53545811 0.60550838 0.86520709 0.34290701
0.72743276 0.73023855 0.34195926 0.65019733 0.02765254
0.72575740 0.32709576 0.03420866 0.26061893 0.56997511
0.28439072 0.84422744 0.77637570 0.55982168 0.06720327
0.58449067 0.71657369 0.15819609 0.58042821 0.07947911
0.40193792 0.11376012 0.88762938 0.67532159 0.71223735
0.27829114 0.04806073 0.21144026 0.58830274 0.04140071
0.43215628 0.12952729 0.94668759 0.87391019 0.98382450
0.27750768 0.90849647 0.90962737 0.59269720 0.96102026
0.49544979 0.32007095 0.62585546 0.03119821 0.85953001
0.22017528 0.05834068 0.80731217 0.53799961 0.74166948
0.77426600 0.43938444 0.54862081 0.58575513 0.15886492
0.73214332 0.11649057 0.77463977 0.85788827 0.17061997
0.66838056 0.96076133 0.07949296 0.68521946 0.89986254
0.05667410 0.12741385 0.83470977 0.63969104 0.46612929
0.10200126 0.01194925 0.10476340 0.90285217 0.31221221
0.32980614 0.46041971 0.52024973 0.05425470 0.28330912
0.60426543 0.00598243 0.97244013 0.21135841 0.78561597
0.78428734 0.63422849 0.32909934 0.44771136 0.27380750
0.14966697 0.18156268 0.65686758 0.28726350 0.97074787
0.63676171 0.96649494 0.24526295 0.08297372 0.54257548
0.03166785 0.33735355 0.15946671 0.02102971 0.46228045
0.11892296 0.33408336 0.29875681 0.29847692 0.73767569
0.02080745 0.62980060 0.08082293 0.22993106 0.25031439
0.87787525 0.45150053 0.13673441 0.63407612 0.97907688
0.52241942 0.50580158 0.06273902 0.05270283 0.77031811
0.05113352 0.24393329 0.75036441 0.37436336 0.22877652
0.59975358 0.85707591 0.88691457 0.85547165 0.36641027
0.58720133 0.45462835 0.09243817 0.32981586 0.07820411
0.25421519 0.36004706 0.60092307 0.46192412 0.36758683
0.98424170 0.08019934 0.68594024 0.45826386 0.29962317
0.79365413 0.89231296 0.49478547 0.87645944 0.23590734
0.28106737 0.75026285 0.08136314 0.79582424 0.76010628
0.82792971 0.27947652 0.72482861 0.82191216 0.46171689
0.79189752 0.96043686 0.51609668 0.88995725 0.28998963
0.55191845 0.03934737 0.83033700 0.49553013 0.98009549
0.19017594 0.98347750 0.33452066 0.87144372 0.72106301
0.71272114 0.71465963 0.88361677 0.85571283 0.73782329
0.20920458 0.34855153 0.46766817 0.02780062 0.74898344
0.03680650 0.44866557 0.77426312 0.91025891 0.25195236
0.87319953 0.63265037 0.25552148 0.27422476 0.95217406
0.39281839 0.66441573 0.09158900 0.94515992 0.07800798
0.02507888 0.39901462 0.17382573 0.12141278 0.85502334
0.19902911 0.02160210 0.44460522 0.14688742 0.68020336
0.71323733 0.60922473 0.95400380 0.99611159 0.90897777
0.41073520 0.66206647 0.32064685 0.62805003 0.50677209
0.52690101 0.87473387 0.73918362 0.39826974 0.43683919
0.80459118 0.32422684 0.01958019 0.95319576 0.98326137
0.83931735 0.69060863 0.33671416 0.68062550 0.65152380
0.33392969 0.03451730 0.95227244 0.68200635 0.85074171
0.64721009 0.51234433 0.73402047 0.00969637 0.93835057
0.80803854 0.31485260 0.20089527 0.01323282 0.59933780
0.31584602 0.20209563 0.33754800 0.68604181 0.24443049
0.19952227 0.78162632 0.10336988 0.11360736 0.23536740
0.23262256 0.67803776 0.48749791 0.74658435 0.92156640
0.56706407 0.36683221 0.99157136 0.23421374 0.45183767
0.91609720 0.85573315 0.37706276 0.77042618 0.30891908
0.40709595 0.06944866 0.61342849 0.88817388 0.58734506
0.98711323 0.14744128 0.63242656 0.87704136 0.68347125
0.84446569 0.43265239 0.25146321 0.04130111 0.34259839
0.92697368 0.40878778 0.56990338 0.76204273 0.19820348
0.66314909 0.02482844 0.06669207 0.50205581 0.26084093
0.65139159 0.41650223 0.09733904 0.56344203 0.62651696
0.67332139 0.58037374 0.47258086 0.21010758 0.05713135
0.89390629 0.10781246 0.32037450 0.07628388 0.34227964
0.42190597 0.58201860 0.77363549 0.49595133 0.86031236
0.83906769 0.81098161 0.26694195 0.14215941 0.88210306
0.53634237 0.12090720 0.82480459 0.75930318 0.31847147
0.92768077 0.01037616 0.56201727 0.88107122 0.35925856
0.85860762 0.61109408 0.70408301 0.58434977 0.92192494
0.62667915 0.75988365 0.06858761 0.36156496 0.58057195
0.13636150 0.57719713 0.59340255 0.63530602 0.22976282
0.71915530 0.41162531 0.63979565 0.09931342 0.79344045
0.10893790 0.84450224 0.23122236 0.99485593 0.73637397
0.17276368 0.13357764 0.74965804 0.64991737 0.61990341
0.41523170 0.05878239 0.05687301 0.05497131 0.42868366
0.42571090 0.25810502 0.89642955 0.30439758 0.39310223
0.11357431 0.04288255 0.23397550 0.11200634 0.85621396
0.89733974 0.37508865 0.42077265 0.68597384 0.72781399
0.19296476 0.61699087 0.31667128 0.67756410 0.00177323
0.05725176 0.79474693 0.18885238 0.06724856 0.68193156
0.42202167 0.22082041 0.28554673 0.64995708 0.87851940
0.29124547 0.61009521 0.87374537 0.05743712 0.69902994
0.81925115 0.45653873 0.37236821 0.31118709 0.52734307
0.39672836 0.38185294 0.30163915 0.17374510 0.04913278
0.90404879 0.25742801 0.58266467 0.97663209 0.79823377
0.36437958 0.15206043 0.26529938 0.22690047 0.05839021
0.84721160 0.18622435 0.37809403 0.55706977 0.49828704
0.47659049 0.24289680 0.88477595 0.07807463 0.56245739
0.73490635 0.21099431 0.13164942 0.75840044 0.66877037
0.28988183 0.44046090 0.24967434 0.80048356 0.26029740
0.30416821 0.64151867 0.52067892 0.12880774 0.85465381
0.02690525 0.19149288 0.49630295 0.79682619 0.43566145
0.00288078 0.81484193 0.03763639 0.68529083 0.01339574
0.38405386 0.30537067 0.22994703 0.44000045 0.27217985
0.53831243 0.02870435 0.86282045 0.61831306 0.09164956
0.25609707 0.07445781 0.72185784 0.90058883 0.30070608
0.94476583 0.56822213 0.21933909 0.96772793 0.80063440
0.26307906 0.31183306 0.16501252 0.55436179 0.68562285
0.23829083 0.86511559 0.57868991 0.81888344 0.20126869
0.93172350 0.66028129 0.21786948 0.78515828 0.10262106
0.35390326 0.79303876 0.63427924 0.90479631 0.31024934
0.60635447 0.56198079 0.63573813 0.91854197 0.99701497
0.83085849 0.31692291 0.01925964 0.97446405 0.98751283
0.60944293 0.13751018 0.69519957 0.68956636 0.56969015
0.46440193 0.88341765 0.36754434 0.89223647 0.39786427
0.85055280 0.12749961 0.79452122 0.89449784 0.14567830
0.45716830 0.74822309 0.28200437 0.42546044 0.17464886
0.68308746 0.65496587 0.52935411 0.12736159 0.61523955
0.81590528 0.63107864 0.39786553 0.20102294 0.53292914
0.75485590 0.59847044 0.32861691 0.12125866 0.58917183
0.07638293 0.86845380 0.29192617 0.03989733 0.52180460
0.32503407 0.64071852 0.69516575 0.74254998 0.54587026
0.48713246 0.32920155 0.08719954 0.63497059 0.54328459
0.64178757 0.45583809 0.70694291 0.85212760 0.86074305
0.33163422 0.85739792 0.59908488 0.74566046 0.72157152

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
@@ -18,35 +18,41 @@
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ClInclude Include="mt19937ar.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="mt19937ar.c" />
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{CDBBB260-B245-44EC-80FB-3F9421885E40}</ProjectGuid>
<ProjectGuid>{7AE31676-6137-4FB3-AE9C-AD47D8A861CF}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>yaml2sql</RootNamespace>
<RootNamespace>mt19937ar</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
<PlatformToolset>v120</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
<PlatformToolset>v120</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
<PlatformToolset>v120</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
<PlatformToolset>v120</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
@@ -67,23 +73,19 @@
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
<OutDir>$(SolutionDir)</OutDir>
<IntDir>$(SolutionDir).vs\build\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
<OutDir>$(SolutionDir)</OutDir>
<OutDir>$(SolutionDir).vs\build\</OutDir>
<IntDir>$(SolutionDir).vs\build\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
<OutDir>$(SolutionDir)</OutDir>
<OutDir>$(SolutionDir).vs\build\</OutDir>
<IntDir>$(SolutionDir).vs\build\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<OutDir>$(SolutionDir).vs\build\</OutDir>
<IntDir>$(SolutionDir).vs\build\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
<OutDir>$(SolutionDir)</OutDir>
<OutDir>$(SolutionDir).vs\build\</OutDir>
<IntDir>$(SolutionDir).vs\build\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
@@ -92,14 +94,12 @@
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>$(DefineConstants);WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;LIBCONFIG_STATIC;YY_USE_CONST;MINICORE;_DEBUG;_CONSOLE;_LIB;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>$(DefineConstants);WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<AdditionalIncludeDirectories>$(SolutionDir)3rdparty\yaml-cpp\include\;$(SolutionDir)3rdparty\rapidyaml\src;$(SolutionDir)3rdparty\rapidyaml\ext\c4core\src</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>ws2_32.lib;$(SolutionDir).vs\build\common-minicore.lib;$(SolutionDir)3rdparty\zlib\lib\$(Platform)\zlib.lib;$(SolutionDir).vs\build\yaml-cpp.lib;$(SolutionDir).vs\build\ryml.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@@ -108,14 +108,12 @@
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>$(DefineConstants);WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;LIBCONFIG_STATIC;YY_USE_CONST;MINICORE;_DEBUG;_CONSOLE;_LIB;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>$(DefineConstants);WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<AdditionalIncludeDirectories>$(SolutionDir)3rdparty\yaml-cpp\include\;$(SolutionDir)3rdparty\rapidyaml\src;$(SolutionDir)3rdparty\rapidyaml\ext\c4core\src</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>ws2_32.lib;$(SolutionDir).vs\build\common-minicore.lib;$(SolutionDir)3rdparty\zlib\lib\$(Platform)\zlib.lib;$(SolutionDir).vs\build\yaml-cpp.lib;$(SolutionDir).vs\build\ryml.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@@ -126,16 +124,14 @@
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>$(DefineConstants);WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;LIBCONFIG_STATIC;YY_USE_CONST;MINICORE;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>$(DefineConstants);WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<AdditionalIncludeDirectories>$(SolutionDir)3rdparty\yaml-cpp\include\;$(SolutionDir)3rdparty\rapidyaml\src;$(SolutionDir)3rdparty\rapidyaml\ext\c4core\src</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>ws2_32.lib;$(SolutionDir).vs\build\common-minicore.lib;$(SolutionDir)3rdparty\zlib\lib\$(Platform)\zlib.lib;$(SolutionDir).vs\build\yaml-cpp.lib;$(SolutionDir).vs\build\ryml.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@@ -146,32 +142,17 @@
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>$(DefineConstants);WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;LIBCONFIG_STATIC;YY_USE_CONST;MINICORE;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>$(DefineConstants);WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<AdditionalIncludeDirectories>$(SolutionDir)3rdparty\yaml-cpp\include\;$(SolutionDir)3rdparty\rapidyaml\src;$(SolutionDir)3rdparty\rapidyaml\ext\c4core\src</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>ws2_32.lib;$(SolutionDir).vs\build\common-minicore.lib;$(SolutionDir)3rdparty\zlib\lib\$(Platform)\zlib.lib;$(SolutionDir).vs\build\yaml-cpp.lib;$(SolutionDir).vs\build\ryml.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="yaml2sql.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<Target Name="AfterClean">
<Delete Files="$(SolutionDir)zlib.dll" ContinueOnError="true" />
<Delete Files="$(SolutionDir)serv.bat" ContinueOnError="true" />
<Delete Files="$(SolutionDir)yaml2sql.bat" ContinueOnError="true" />
</Target>
<Target Name="AfterBuild">
<Copy SourceFiles="$(SolutionDir)3rdparty\zlib\lib\$(Platform)\zlib.dll" DestinationFolder="$(SolutionDir)" ContinueOnError="true" Condition="!Exists('$(SolutionDir)zlib.dll')" />
<Copy SourceFiles="$(SolutionDir)tools\serv.bat" DestinationFolder="$(SolutionDir)" ContinueOnError="true" Condition="!Exists('$(SolutionDir)serv.bat')" />
<Copy SourceFiles="$(SolutionDir)tools\yaml2sql.bat" DestinationFolder="$(SolutionDir)" ContinueOnError="true" Condition="!Exists('$(SolutionDir)yaml2sql.bat')" />
</Target>
</Project>

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
@@ -11,7 +11,12 @@
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="yaml2sql.cpp">
<ClInclude Include="mt19937ar.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="mt19937ar.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>

65
3rdparty/mt19937ar/mtTest.c vendored Normal file
View File

@@ -0,0 +1,65 @@
/*
A C-program for MT19937, with initialization improved 2002/1/26.
Coded by Takuji Nishimura and Makoto Matsumoto.
Before using, initialize the state by using init_genrand(seed)
or init_by_array(init_key, key_length).
Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,
All rights reserved.
Copyright (C) 2005, Mutsuo Saito,
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The names of its contributors may not be used to endorse or promote
products derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Any feedback is very welcome.
http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html
email: m-mat @ math.sci.hiroshima-u.ac.jp (remove space)
*/
#include <stdio.h>
#include "mt19937ar.h"
int main(void)
{
int i;
unsigned long init[4]={0x123, 0x234, 0x345, 0x456}, length=4;
init_by_array(init, length);
printf("1000 outputs of genrand_int32()\n");
for (i=0; i<1000; i++) {
printf("%10lu ", genrand_int32());
if (i%5==4) printf("\n");
}
printf("\n1000 outputs of genrand_real2()\n");
for (i=0; i<1000; i++) {
printf("%10.8f ", genrand_real2());
if (i%5==4) printf("\n");
}
return 0;
}

79
3rdparty/mt19937ar/readme-mt.txt vendored Normal file
View File

@@ -0,0 +1,79 @@
This is a Mersenne Twister pseudorandom number generator
with period 2^19937-1 with improved initialization scheme,
modified on 2002/1/26 by Takuji Nishimura and Makoto Matsumoto.
modified on 2005/4/26 by Mutsuo Saito
Contents of this tar ball:
readme-mt.txt this file
mt19937ar.c the C source (ar: initialize by ARray)
mt19937ar.h the C header file for mt19937ar
mtTest.c the C test main program of mt19937ar.c
mt19937ar.out Test outputs of six types generators. 1000 for each
1. Initialization
The initialization scheme for the previous versions of MT
(e.g. 1999/10/28 version or earlier) has a tiny problem, that
the most significant bits of the seed is not well reflected
to the state vector of MT.
This version (2002/1/26) has two initialization schemes:
init_genrand(seed) and init_by_array(init_key, key_length).
init_genrand(seed) initializes the state vector by using
one unsigned 32-bit integer "seed", which may be zero.
init_by_array(init_key, key_length) initializes the state vector
by using an array init_key[] of unsigned 32-bit integers
of length key_kength. If key_length is smaller than 624,
then each array of 32-bit integers gives distinct initial
state vector. This is useful if you want a larger seed space
than 32-bit word.
2. Generation
After initialization, the following type of pseudorandom numbers
are available.
genrand_int32() generates unsigned 32-bit integers.
genrand_int31() generates unsigned 31-bit integers.
genrand_real1() generates uniform real in [0,1] (32-bit resolution).
genrand_real2() generates uniform real in [0,1) (32-bit resolution).
genrand_real3() generates uniform real in (0,1) (32-bit resolution).
genrand_res53() generates uniform real in [0,1) with 53-bit resolution.
Note: the last five functions call the first one.
if you need more speed for these five functions, you may
suppress the function call by copying genrand_int32() and
replacing the last return(), following to these five functions.
3. main()
main() is an example to initialize with an array of length 4,
then 1000 outputs of unsigned 32-bit integers,
then 1000 outputs of real [0,1) numbers.
4. The outputs
The output of the mt19937ar.c is in the file mt19937ar.out.
If you revise or translate the code, check the output
by using this file.
5. Cryptography
This generator is not cryptoraphically secure.
You need to use a one-way (or hash) function to obtain
a secure random sequence.
6. Correspondence
See:
URL http://www.math.keio.ac.jp/matumoto/emt.html
email matumoto@math.keio.ac.jp, nisimura@sci.kj.yamagata-u.ac.jp
7. Reference
M. Matsumoto and T. Nishimura,
"Mersenne Twister: A 623-Dimensionally Equidistributed Uniform
Pseudo-Random Number Generator",
ACM Transactions on Modeling and Computer Simulation,
Vol. 8, No. 1, January 1998, pp 3--30.
-------
Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,
All rights reserved.
Copyright (C) 2005, Mutsuo Saito
All rights reserved.

View File

@@ -7,17 +7,10 @@ message( STATUS "Detecting local MYSQL" )
find_path( MYSQL_LOCAL_INCLUDE_DIRS "mysql.h"
PATHS "${CMAKE_CURRENT_SOURCE_DIR}/include"
NO_DEFAULT_PATH )
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
find_library( MYSQL_LOCAL_LIBRARIES
NAMES libmysql
PATHS "${CMAKE_CURRENT_SOURCE_DIR}/lib/Win32"
PATHS "${CMAKE_CURRENT_SOURCE_DIR}/lib"
NO_DEFAULT_PATH )
else()
find_library( MYSQL_LOCAL_LIBRARIES
NAMES libmysql
PATHS "${CMAKE_CURRENT_SOURCE_DIR}/lib/x64"
NO_DEFAULT_PATH )
endif()
mark_as_advanced( MYSQL_LOCAL_LIBRARIES )
mark_as_advanced( MYSQL_LOCAL_INCLUDE_DIRS )

View File

@@ -7,17 +7,10 @@ message( STATUS "Detecting local PCRE" )
find_path( PCRE_LOCAL_INCLUDE_DIRS "pcre.h"
PATHS "${CMAKE_CURRENT_SOURCE_DIR}/include"
NO_DEFAULT_PATH )
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
find_library( PCRE_LOCAL_LIBRARIES
NAMES pcre8
PATHS "${CMAKE_CURRENT_SOURCE_DIR}/lib/Win32"
NAMES pcre
PATHS "${CMAKE_CURRENT_SOURCE_DIR}/lib"
NO_DEFAULT_PATH )
else()
find_library( PCRE_LOCAL_LIBRARIES
NAMES pcre8
PATHS "${CMAKE_CURRENT_SOURCE_DIR}/lib/x64"
NO_DEFAULT_PATH )
endif()
mark_as_advanced( PCRE_LOCAL_LIBRARIES )
mark_as_advanced( PCRE_LOCAL_INCLUDE_DIRS )

View File

@@ -1,291 +0,0 @@
# -*- coding: utf-8; mode: python -*-
##
## https://pypi.org/project/gitchangelog/
##
## Format
##
## ACTION: [AUDIENCE:] COMMIT_MSG [!TAG ...]
##
## Description
##
## ACTION is one of 'chg', 'fix', 'new'
##
## Is WHAT the change is about.
##
## 'chg' is for refactor, small improvement, cosmetic changes...
## 'fix' is for bug fixes
## 'new' is for new features, big improvement
##
## AUDIENCE is optional and one of 'dev', 'usr', 'pkg', 'test', 'doc'
##
## Is WHO is concerned by the change.
##
## 'dev' is for developpers (API changes, refactors...)
## 'usr' is for final users (UI changes)
## 'pkg' is for packagers (packaging changes)
## 'test' is for testers (test only related changes)
## 'doc' is for doc guys (doc only changes)
##
## COMMIT_MSG is ... well ... the commit message itself.
##
## TAGs are additionnal adjective as 'refactor' 'minor' 'cosmetic'
##
## They are preceded with a '!' or a '@' (prefer the former, as the
## latter is wrongly interpreted in github.) Commonly used tags are:
##
## 'refactor' is obviously for refactoring code only
## 'minor' is for a very meaningless change (a typo, adding a comment)
## 'cosmetic' is for cosmetic driven change (re-indentation, 80-col...)
## 'wip' is for partial functionality but complete subfunctionality.
##
## Example:
##
## new: usr: support of bazaar implemented
## chg: re-indentend some lines !cosmetic
## new: dev: updated code to be compatible with last version of killer lib.
## fix: pkg: updated year of licence coverage.
## new: test: added a bunch of test around user usability of feature X.
## fix: typo in spelling my name in comment. !minor
##
## Please note that multi-line commit message are supported, and only the
## first line will be considered as the "summary" of the commit message. So
## tags, and other rules only applies to the summary. The body of the commit
## message will be displayed in the changelog without reformatting.
##
## ``ignore_regexps`` is a line of regexps
##
## Any commit having its full commit message matching any regexp listed here
## will be ignored and won't be reported in the changelog.
##
ignore_regexps = [
r'@minor', r'!minor',
r'@cosmetic', r'!cosmetic',
r'@refactor', r'!refactor',
r'@wip', r'!wip',
r'^([cC]hg|[fF]ix|[nN]ew)\s*:\s*[p|P]kg:',
r'^([cC]hg|[fF]ix|[nN]ew)\s*:\s*[d|D]ev:',
r'^(.{3,3}\s*:)?\s*[fF]irst commit.?\s*$',
r'^$', ## ignore commits with empty messages
]
## ``section_regexps`` is a list of 2-tuples associating a string label and a
## list of regexp
##
## Commit messages will be classified in sections thanks to this. Section
## titles are the label, and a commit is classified under this section if any
## of the regexps associated is matching.
##
## Please note that ``section_regexps`` will only classify commits and won't
## make any changes to the contents. So you'll probably want to go check
## ``subject_process`` (or ``body_process``) to do some changes to the subject,
## whenever you are tweaking this variable.
##
section_regexps = [
('New', [
r'^[nN]ew\s*:\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$',
]),
('Changes', [
r'^[cC]hg\s*:\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$',
]),
('Fix', [
r'^[fF]ix\s*:\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$',
]),
('Other', None ## Match all lines
),
]
## ``body_process`` is a callable
##
## This callable will be given the original body and result will
## be used in the changelog.
##
## Available constructs are:
##
## - any python callable that take one txt argument and return txt argument.
##
## - ReSub(pattern, replacement): will apply regexp substitution.
##
## - Indent(chars=" "): will indent the text with the prefix
## Please remember that template engines gets also to modify the text and
## will usually indent themselves the text if needed.
##
## - Wrap(regexp=r"\n\n"): re-wrap text in separate paragraph to fill 80-Columns
##
## - noop: do nothing
##
## - ucfirst: ensure the first letter is uppercase.
## (usually used in the ``subject_process`` pipeline)
##
## - final_dot: ensure text finishes with a dot
## (usually used in the ``subject_process`` pipeline)
##
## - strip: remove any spaces before or after the content of the string
##
## - SetIfEmpty(msg="No commit message."): will set the text to
## whatever given ``msg`` if the current text is empty.
##
## Additionally, you can `pipe` the provided filters, for instance:
#body_process = Wrap(regexp=r'\n(?=\w+\s*:)') | Indent(chars=" ")
#body_process = Wrap(regexp=r'\n(?=\w+\s*:)')
#body_process = noop
body_process = ReSub(r'((^|\n)[A-Z]\w+(-\w+)*: .*(\n\s+.*)*)+$', r'') | strip
## ``subject_process`` is a callable
##
## This callable will be given the original subject and result will
## be used in the changelog.
##
## Available constructs are those listed in ``body_process`` doc.
subject_process = (strip |
ReSub(r'^([cC]hg|[fF]ix|[nN]ew)\s*:\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n@]*)(@[a-z]+\s+)*$', r'\4') |
SetIfEmpty("No commit message.") | ucfirst | final_dot)
## ``tag_filter_regexp`` is a regexp
##
## Tags that will be used for the changelog must match this regexp.
##
tag_filter_regexp = r'^[0-9]+\.[0-9]+(\.[0-9]+)?$'
## ``unreleased_version_label`` is a string or a callable that outputs a string
##
## This label will be used as the changelog Title of the last set of changes
## between last valid tag and HEAD if any.
unreleased_version_label = "(unreleased)"
## ``output_engine`` is a callable
##
## This will change the output format of the generated changelog file
##
## Available choices are:
##
## - rest_py
##
## Legacy pure python engine, outputs ReSTructured text.
## This is the default.
##
## - mustache(<template_name>)
##
## Template name could be any of the available templates in
## ``templates/mustache/*.tpl``.
## Requires python package ``pystache``.
## Examples:
## - mustache("markdown")
## - mustache("restructuredtext")
##
## - makotemplate(<template_name>)
##
## Template name could be any of the available templates in
## ``templates/mako/*.tpl``.
## Requires python package ``mako``.
## Examples:
## - makotemplate("restructuredtext")
##
#output_engine = rest_py
#output_engine = mustache("restructuredtext")
output_engine = mustache("markdown")
#output_engine = makotemplate("restructuredtext")
## ``include_merge`` is a boolean
##
## This option tells git-log whether to include merge commits in the log.
## The default is to include them.
include_merge = True
## ``log_encoding`` is a string identifier
##
## This option tells gitchangelog what encoding is outputed by ``git log``.
## The default is to be clever about it: it checks ``git config`` for
## ``i18n.logOutputEncoding``, and if not found will default to git's own
## default: ``utf-8``.
#log_encoding = 'utf-8'
## ``publish`` is a callable
##
## Sets what ``gitchangelog`` should do with the output generated by
## the output engine. ``publish`` is a callable taking one argument
## that is an interator on lines from the output engine.
##
## Some helper callable are provided:
##
## Available choices are:
##
## - stdout
##
## Outputs directly to standard output
## (This is the default)
##
## - FileInsertAtFirstRegexMatch(file, pattern, idx=lamda m: m.start())
##
## Creates a callable that will parse given file for the given
## regex pattern and will insert the output in the file.
## ``idx`` is a callable that receive the matching object and
## must return a integer index point where to insert the
## the output in the file. Default is to return the position of
## the start of the matched string.
##
## - FileRegexSubst(file, pattern, replace, flags)
##
## Apply a replace inplace in the given file. Your regex pattern must
## take care of everything and might be more complex. Check the README
## for a complete copy-pastable example.
##
# publish = FileInsertIntoFirstRegexMatch(
# "CHANGELOG.rst",
# r'/(?P<rev>[0-9]+\.[0-9]+(\.[0-9]+)?)\s+\([0-9]+-[0-9]{2}-[0-9]{2}\)\n--+\n/',
# idx=lambda m: m.start(1)
# )
#publish = stdout
## ``revs`` is a list of callable or a list of string
##
## callable will be called to resolve as strings and allow dynamical
## computation of these. The result will be used as revisions for
## gitchangelog (as if directly stated on the command line). This allows
## to filter exaclty which commits will be read by gitchangelog.
##
## To get a full documentation on the format of these strings, please
## refer to the ``git rev-list`` arguments. There are many examples.
##
## Using callables is especially useful, for instance, if you
## are using gitchangelog to generate incrementally your changelog.
##
## Some helpers are provided, you can use them::
##
## - FileFirstRegexMatch(file, pattern): will return a callable that will
## return the first string match for the given pattern in the given file.
## If you use named sub-patterns in your regex pattern, it'll output only
## the string matching the regex pattern named "rev".
##
## - Caret(rev): will return the rev prefixed by a "^", which is a
## way to remove the given revision and all its ancestor.
##
## Please note that if you provide a rev-list on the command line, it'll
## replace this value (which will then be ignored).
##
## If empty, then ``gitchangelog`` will act as it had to generate a full
## changelog.
##
## The default is to use all commits to make the changelog.
#revs = ["^1.0.3", ]
#revs = [
# Caret(
# FileFirstRegexMatch(
# "CHANGELOG.rst",
# r"(?P<rev>[0-9]+\.[0-9]+(\.[0-9]+)?)\s+\([0-9]+-[0-9]{2}-[0-9]{2}\)\n--+\n")),
# "HEAD"
#]
revs = []

View File

@@ -1,50 +0,0 @@
# text editor files
*.bck
\#*
*~
.cquery_cached_index/
.clangd/
.ccls-cache/
.cache/
__pycache__/
# gdb files
.gdbinit
setup.gdb
# valgrind files
callgrind*
vgcore*
# Visual Studio files
.vs/
.vscode/
# QtCreator files
CMakeLists.txt.user*
# Eclipse
.project
.cproject
/.settings/
# KDevelop files
*.kdev4
# build files
build/
install/
.python-version
compile_commands.json
# test files
/Testing/
# python packaging
.eggs/
dist/
rapidyaml.egg-info/
# continuous integration files
.ci/.vagrant
# amalgamation files
src/c4/c4core_all.hpp
src_singleheader/

View File

@@ -1,3 +0,0 @@
[submodule "extern/c4core"]
path = ext/c4core
url = https://github.com/biojppm/c4core

View File

@@ -1,2 +0,0 @@
queries:
- exclude: cpp/unsigned-comparison-zero

View File

@@ -1,100 +0,0 @@
cmake_minimum_required(VERSION 3.12)
include(./ext/c4core/cmake/c4Project.cmake)
project(ryml
DESCRIPTION "Rapid YAML parsing and emitting"
HOMEPAGE_URL "https://github.com/biojppm/rapidyaml"
LANGUAGES CXX)
include(./compat.cmake)
c4_project(VERSION 0.4.0 STANDALONE
AUTHOR "Joao Paulo Magalhaes <dev@jpmag.me>")
#-------------------------------------------------------
option(RYML_WITH_TAB_TOKENS "Enable parsing of tabs after ':' and '-'. This is costly and disabled by default." OFF)
option(RYML_DEFAULT_CALLBACKS "Enable ryml's default implementation of callbacks: allocate(), free(), error()" ON)
option(RYML_BUILD_TOOLS "build tools" OFF)
option(RYML_BUILD_API "Enable API generation (python, etc)" OFF)
option(RYML_DBG "Enable (very verbose) ryml debug prints." OFF)
#-------------------------------------------------------
c4_require_subproject(c4core INCORPORATE
SUBDIRECTORY ${RYML_EXT_DIR}/c4core)
c4_add_library(ryml
SOURCES
ryml.hpp
ryml_std.hpp
c4/yml/detail/checks.hpp
c4/yml/detail/parser_dbg.hpp
c4/yml/detail/print.hpp
c4/yml/detail/stack.hpp
c4/yml/common.hpp
c4/yml/common.cpp
c4/yml/emit.def.hpp
c4/yml/emit.hpp
c4/yml/export.hpp
c4/yml/node.hpp
c4/yml/node.cpp
c4/yml/parse.hpp
c4/yml/parse.cpp
c4/yml/preprocess.hpp
c4/yml/preprocess.cpp
c4/yml/std/map.hpp
c4/yml/std/std.hpp
c4/yml/std/string.hpp
c4/yml/std/vector.hpp
c4/yml/tree.hpp
c4/yml/tree.cpp
c4/yml/writer.hpp
c4/yml/yml.hpp
ryml.natvis
SOURCE_ROOT ${RYML_SRC_DIR}
INC_DIRS
$<BUILD_INTERFACE:${RYML_SRC_DIR}>
$<INSTALL_INTERFACE:include>
LIBS c4core
INCORPORATE c4core
)
if(RYML_WITH_TAB_TOKENS)
target_compile_definitions(ryml PUBLIC RYML_WITH_TAB_TOKENS)
endif()
if(NOT RYML_DEFAULT_CALLBACKS)
target_compile_definitions(ryml PRIVATE RYML_NO_DEFAULT_CALLBACKS)
endif()
if(RYML_DBG)
target_compile_definitions(ryml PRIVATE RYML_DBG)
endif()
#-------------------------------------------------------
c4_install_target(ryml)
c4_install_exports(DEPENDENCIES c4core)
c4_pack_project()
#-------------------------------------------------------
# developer targets
# extern libraries, used only for testing/benchmarking
if(RYML_BUILD_TESTS OR RYML_BUILD_BENCHMARKS OR RYML_BUILD_TOOLS)
include(ext/testbm.cmake)
endif()
if(RYML_BUILD_TOOLS)
add_subdirectory(tools)
endif()
c4_add_dev_targets()
add_custom_target(ryml-uninstall
"${CMAKE_COMMAND}" -P "${PROJECT_SOURCE_DIR}/cmake/uninstall.cmake"
)

View File

@@ -1,18 +0,0 @@
# Contributing
Thanks for your contribution!
* Make sure to clone the project with `git clone --recursive` so that
the submodules are initialized correctly.
* To enable both tests and benchmarks, configure ryml with `-DRYML_DEV=ON`
when calling cmake. To enable only tests, use `-DRYML_BUILD_TESTS=ON`; to
enable only benchmarks use `-DRYML_BUILD_BENCHMARKS=ON`. All these flags
are disabled by default.
* Code style for pull requests should respect the existing code style:
```c++
if(foo) // no space before parens
{ // curly brackets on next line
// no tabs; indent with 4 spaces
bar();
}
```

View File

@@ -1,20 +0,0 @@
Copyright (c) 2018, Joao Paulo Magalhaes <dev@jpmag.me>
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

View File

@@ -1,3 +0,0 @@
# MANIFEST.in must be in root directory.
# See https://github.com/pypa/setuptools/issues/2615
graft ext

View File

@@ -1,44 +0,0 @@
RAPIDYAML_OBJ = $(shell find * -type f -name "*.cpp" | sed -e "s/\.cpp/\.o/g")
RAPIDYAML_DIR_OBJ = $(RAPIDYAML_OBJ:%=obj/%)
RAPIDYAML_H = $(shell find * -type f -name "*.h*")
RAPIDYAML_AR = obj/ryml.a
CXXFLAG =-std=c++11
INC=-Isrc -Iext/c4core/src
@SET_MAKE@
#####################################################################
.PHONY : all clean help rapidyaml
all: rapidyaml
clean:
@echo " CLEAN rapidyaml"
@rm -rf obj *.o
help:
@echo "possible targets are 'all' 'clean' 'help'"
@echo "'rapidyaml' - build $(RAPIDYAML_AR)
@echo "'all' - builds $(RAPIDYAML_DIR_OBJ)"
@echo "'clean' - deletes $(RAPIDYAML_DIR_OBJ)"
@echo "'help' - outputs this message"
#####################################################################
obj:
@echo " MKDIR obj/src/c4/yml"
@echo " MKDIR obj/ext/c4core/src/c4"
@mkdir -p obj/src/c4/yml
@mkdir -p obj/ext/c4core/src/c4
obj/%.o: %.cpp $(RAPIDYAML_H)
@echo " CXX $<"
@@CXX@ $(CXXFLAG) @CFLAGS_AR@ @CPPFLAGS@ -g $(INC) -c $(OUTPUT_OPTION) $<
rapidyaml: obj $(RAPIDYAML_DIR_OBJ) $(RAPIDYAML_AR)
$(RAPIDYAML_AR): $(RAPIDYAML_DIR_OBJ)
@echo " AR $@"
@@AR@ rcs obj/ryml.a $(RAPIDYAML_DIR_OBJ)

File diff suppressed because it is too large Load Diff

View File

@@ -1,18 +0,0 @@
# Roadmap
Roughly in order of priority:
* Cleanup:
* Review & cleanup API surface.
* Turn calls to `C4_ASSERT()` into calls to `RYML_ASSERT()`
* Add emit formatting controls:
* add single-line flow formatter
* add multi-line flow formatters
* indenting
* non indenting
* keep current block formatter
* add customizable linebreak limits (number of columns) to every formatter
* add per node format flags
* (lesser priority) add auto formatter using reasonable heuristics to
switch between other existing formatters
* Investigate possibility of comment-preserving roundtrips

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project>
<ProjectOutputs />
<ContentFiles />
<SatelliteDlls />
<NonRecipeFileRefs />
</Project>

View File

@@ -1,294 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="16.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{B795DCB1-2FEA-3BDC-A05C-33F5BF08CF31}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
<Keyword>Win32Proj</Keyword>
<ProjectName>c4core</ProjectName>
<VCProjectUpgraderObjectName>NoUpgrade</VCProjectUpgraderObjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.20506.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir).vs\build\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir).vs\build\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir).vs\build\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectName)</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectName)</TargetName>
<TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.lib</TargetExt>
<TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.lib</TargetExt>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir).vs\build\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir).vs\build\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir).vs\build\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectName)</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectName)</TargetName>
<TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.lib</TargetExt>
<TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.lib</TargetExt>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>$(SolutionDir).vs\build\</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>$(SolutionDir).vs\build\</OutDir>
</PropertyGroup>
<PropertyGroup Label="Vcpkg">
<VcpkgEnabled>false</VcpkgEnabled>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<AdditionalIncludeDirectories>ext\c4core\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<CompileAs>CompileAsCpp</CompileAs>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<ExceptionHandling>Sync</ExceptionHandling>
<InlineFunctionExpansion>Disabled</InlineFunctionExpansion>
<Optimization>Disabled</Optimization>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;CMAKE_INTDIR="Debug";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
<LanguageStandard>stdcpp17</LanguageStandard>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;CMAKE_INTDIR=\"Debug\";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>ext\c4core\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<Midl>
<AdditionalIncludeDirectories>ext\c4core\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<OutputDirectory>$(ProjectDir)/$(IntDir)</OutputDirectory>
<HeaderFileName>%(Filename).h</HeaderFileName>
<TypeLibraryName>%(Filename).tlb</TypeLibraryName>
<InterfaceIdentifierFileName>%(Filename)_i.c</InterfaceIdentifierFileName>
<ProxyFileName>%(Filename)_p.c</ProxyFileName>
</Midl>
<Lib>
<AdditionalOptions>%(AdditionalOptions) /machine:x64</AdditionalOptions>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>ext\c4core\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<CompileAs>CompileAsCpp</CompileAs>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<ExceptionHandling>Sync</ExceptionHandling>
<InlineFunctionExpansion>Disabled</InlineFunctionExpansion>
<Optimization>Disabled</Optimization>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;CMAKE_INTDIR="Debug";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
<LanguageStandard>stdcpp17</LanguageStandard>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;CMAKE_INTDIR=\"Debug\";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>ext\c4core\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<Midl>
<AdditionalIncludeDirectories>ext\c4core\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<OutputDirectory>$(ProjectDir)/$(IntDir)</OutputDirectory>
<HeaderFileName>%(Filename).h</HeaderFileName>
<TypeLibraryName>%(Filename).tlb</TypeLibraryName>
<InterfaceIdentifierFileName>%(Filename)_i.c</InterfaceIdentifierFileName>
<ProxyFileName>%(Filename)_p.c</ProxyFileName>
</Midl>
<Lib>
<AdditionalOptions>%(AdditionalOptions) /machine:x86</AdditionalOptions>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<AdditionalIncludeDirectories>ext\c4core\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
<CompileAs>CompileAsCpp</CompileAs>
<ExceptionHandling>Sync</ExceptionHandling>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<Optimization>MaxSpeed</Optimization>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;CMAKE_INTDIR="Release";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
<DebugInformationFormat>
</DebugInformationFormat>
<LanguageStandard>stdcpp17</LanguageStandard>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;CMAKE_INTDIR=\"Release\";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>ext\c4core\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<Midl>
<AdditionalIncludeDirectories>ext\c4core\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<OutputDirectory>$(ProjectDir)/$(IntDir)</OutputDirectory>
<HeaderFileName>%(Filename).h</HeaderFileName>
<TypeLibraryName>%(Filename).tlb</TypeLibraryName>
<InterfaceIdentifierFileName>%(Filename)_i.c</InterfaceIdentifierFileName>
<ProxyFileName>%(Filename)_p.c</ProxyFileName>
</Midl>
<Lib>
<AdditionalOptions>%(AdditionalOptions) /machine:x64</AdditionalOptions>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>ext\c4core\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
<CompileAs>CompileAsCpp</CompileAs>
<ExceptionHandling>Sync</ExceptionHandling>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<Optimization>MaxSpeed</Optimization>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<UseFullPaths>false</UseFullPaths>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;CMAKE_INTDIR="Release";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
<DebugInformationFormat>
</DebugInformationFormat>
<LanguageStandard>stdcpp17</LanguageStandard>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;CMAKE_INTDIR=\"Release\";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>ext\c4core\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<Midl>
<AdditionalIncludeDirectories>ext\c4core\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<OutputDirectory>$(ProjectDir)/$(IntDir)</OutputDirectory>
<HeaderFileName>%(Filename).h</HeaderFileName>
<TypeLibraryName>%(Filename).tlb</TypeLibraryName>
<InterfaceIdentifierFileName>%(Filename)_i.c</InterfaceIdentifierFileName>
<ProxyFileName>%(Filename)_p.c</ProxyFileName>
</Midl>
<Lib>
<AdditionalOptions>%(AdditionalOptions) /machine:x86</AdditionalOptions>
</Lib>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="ext\c4core\src\c4\allocator.hpp" />
<ClInclude Include="ext\c4core\src\c4\base64.hpp" />
<ClCompile Include="ext\c4core\src\c4\base64.cpp" />
<ClInclude Include="ext\c4core\src\c4\blob.hpp" />
<ClInclude Include="ext\c4core\src\c4\bitmask.hpp" />
<ClInclude Include="ext\c4core\src\c4\charconv.hpp" />
<ClInclude Include="ext\c4core\src\c4\c4_pop.hpp" />
<ClInclude Include="ext\c4core\src\c4\c4_push.hpp" />
<ClCompile Include="ext\c4core\src\c4\char_traits.cpp" />
<ClInclude Include="ext\c4core\src\c4\char_traits.hpp" />
<ClInclude Include="ext\c4core\src\c4\common.hpp" />
<ClInclude Include="ext\c4core\src\c4\compiler.hpp" />
<ClInclude Include="ext\c4core\src\c4\config.hpp" />
<ClInclude Include="ext\c4core\src\c4\cpu.hpp" />
<ClInclude Include="ext\c4core\src\c4\ctor_dtor.hpp" />
<ClInclude Include="ext\c4core\src\c4\dump.hpp" />
<ClInclude Include="ext\c4core\src\c4\enum.hpp" />
<ClCompile Include="ext\c4core\src\c4\error.cpp" />
<ClInclude Include="ext\c4core\src\c4\error.hpp" />
<ClInclude Include="ext\c4core\src\c4\export.hpp" />
<ClInclude Include="ext\c4core\src\c4\format.hpp" />
<ClCompile Include="ext\c4core\src\c4\format.cpp" />
<ClInclude Include="ext\c4core\src\c4\hash.hpp" />
<ClInclude Include="ext\c4core\src\c4\language.hpp" />
<ClCompile Include="ext\c4core\src\c4\language.cpp" />
<ClCompile Include="ext\c4core\src\c4\memory_resource.cpp" />
<ClInclude Include="ext\c4core\src\c4\memory_resource.hpp" />
<ClCompile Include="ext\c4core\src\c4\memory_util.cpp" />
<ClInclude Include="ext\c4core\src\c4\memory_util.hpp" />
<ClInclude Include="ext\c4core\src\c4\platform.hpp" />
<ClInclude Include="ext\c4core\src\c4\preprocessor.hpp" />
<ClInclude Include="ext\c4core\src\c4\restrict.hpp" />
<ClInclude Include="ext\c4core\src\c4\span.hpp" />
<ClInclude Include="ext\c4core\src\c4\std\std.hpp" />
<ClInclude Include="ext\c4core\src\c4\std\std_fwd.hpp" />
<ClInclude Include="ext\c4core\src\c4\std\string.hpp" />
<ClInclude Include="ext\c4core\src\c4\std\string_fwd.hpp" />
<ClInclude Include="ext\c4core\src\c4\std\tuple.hpp" />
<ClInclude Include="ext\c4core\src\c4\std\vector.hpp" />
<ClInclude Include="ext\c4core\src\c4\std\vector_fwd.hpp" />
<ClInclude Include="ext\c4core\src\c4\substr.hpp" />
<ClInclude Include="ext\c4core\src\c4\substr_fwd.hpp" />
<ClInclude Include="ext\c4core\src\c4\szconv.hpp" />
<ClInclude Include="ext\c4core\src\c4\time.hpp" />
<ClCompile Include="ext\c4core\src\c4\time.cpp" />
<ClInclude Include="ext\c4core\src\c4\type_name.hpp" />
<ClInclude Include="ext\c4core\src\c4\types.hpp" />
<ClInclude Include="ext\c4core\src\c4\unrestrict.hpp" />
<ClCompile Include="ext\c4core\src\c4\utf.cpp" />
<ClInclude Include="ext\c4core\src\c4\utf.hpp" />
<ClInclude Include="ext\c4core\src\c4\windows.hpp" />
<ClInclude Include="ext\c4core\src\c4\windows_pop.hpp" />
<ClInclude Include="ext\c4core\src\c4\windows_push.hpp" />
<Natvis Include="ext\c4core\src\c4\c4core.natvis" />
<ClInclude Include="ext\c4core\src\c4\ext\debugbreak\debugbreak.h" />
<ClInclude Include="ext\c4core\src\c4\ext\rng\rng.hpp" />
<ClInclude Include="ext\c4core\src\c4\ext\sg14\inplace_function.h" />
<ClInclude Include="ext\c4core\src\c4\ext\fast_float.hpp" />
<ClInclude Include="ext\c4core\src\c4\ext\fast_float\include\fast_float\ascii_number.h" />
<ClInclude Include="ext\c4core\src\c4\ext\fast_float\include\fast_float\bigint.h" />
<ClInclude Include="ext\c4core\src\c4\ext\fast_float\include\fast_float\decimal_to_binary.h" />
<ClInclude Include="ext\c4core\src\c4\ext\fast_float\include\fast_float\digit_comparison.h" />
<ClInclude Include="ext\c4core\src\c4\ext\fast_float\include\fast_float\fast_float.h" />
<ClInclude Include="ext\c4core\src\c4\ext\fast_float\include\fast_float\fast_table.h" />
<ClInclude Include="ext\c4core\src\c4\ext\fast_float\include\fast_float\float_common.h" />
<ClInclude Include="ext\c4core\src\c4\ext\fast_float\include\fast_float\parse_number.h" />
<ClInclude Include="ext\c4core\src\c4\ext\fast_float\include\fast_float\simple_decimal_conversion.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@@ -1,239 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="16.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="ext\c4core\src\c4\base64.cpp">
<Filter>c4</Filter>
</ClCompile>
<ClCompile Include="ext\c4core\src\c4\char_traits.cpp">
<Filter>c4</Filter>
</ClCompile>
<ClCompile Include="ext\c4core\src\c4\error.cpp">
<Filter>c4</Filter>
</ClCompile>
<ClCompile Include="ext\c4core\src\c4\format.cpp">
<Filter>c4</Filter>
</ClCompile>
<ClCompile Include="ext\c4core\src\c4\language.cpp">
<Filter>c4</Filter>
</ClCompile>
<ClCompile Include="ext\c4core\src\c4\memory_resource.cpp">
<Filter>c4</Filter>
</ClCompile>
<ClCompile Include="ext\c4core\src\c4\memory_util.cpp">
<Filter>c4</Filter>
</ClCompile>
<ClCompile Include="ext\c4core\src\c4\time.cpp">
<Filter>c4</Filter>
</ClCompile>
<ClCompile Include="ext\c4core\src\c4\utf.cpp">
<Filter>c4</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="ext\c4core\src\c4\allocator.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\base64.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\blob.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\bitmask.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\charconv.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\c4_pop.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\c4_push.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\char_traits.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\common.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\compiler.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\config.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\cpu.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\ctor_dtor.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\dump.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\enum.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\error.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\export.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\format.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\hash.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\language.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\memory_resource.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\memory_util.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\platform.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\preprocessor.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\restrict.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\span.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\std\std.hpp">
<Filter>c4\std</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\std\std_fwd.hpp">
<Filter>c4\std</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\std\string.hpp">
<Filter>c4\std</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\std\string_fwd.hpp">
<Filter>c4\std</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\std\tuple.hpp">
<Filter>c4\std</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\std\vector.hpp">
<Filter>c4\std</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\std\vector_fwd.hpp">
<Filter>c4\std</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\substr.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\substr_fwd.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\szconv.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\time.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\type_name.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\types.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\unrestrict.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\utf.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\windows.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\windows_pop.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\windows_push.hpp">
<Filter>c4</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\ext\debugbreak\debugbreak.h">
<Filter>c4\ext\debugbreak</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\ext\rng\rng.hpp">
<Filter>c4\ext\rng</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\ext\sg14\inplace_function.h">
<Filter>c4\ext\sg14</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\ext\fast_float.hpp">
<Filter>c4\ext</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\ext\fast_float\include\fast_float\ascii_number.h">
<Filter>c4\ext\fast_float\include\fast_float</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\ext\fast_float\include\fast_float\bigint.h">
<Filter>c4\ext\fast_float\include\fast_float</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\ext\fast_float\include\fast_float\decimal_to_binary.h">
<Filter>c4\ext\fast_float\include\fast_float</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\ext\fast_float\include\fast_float\digit_comparison.h">
<Filter>c4\ext\fast_float\include\fast_float</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\ext\fast_float\include\fast_float\fast_float.h">
<Filter>c4\ext\fast_float\include\fast_float</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\ext\fast_float\include\fast_float\fast_table.h">
<Filter>c4\ext\fast_float\include\fast_float</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\ext\fast_float\include\fast_float\float_common.h">
<Filter>c4\ext\fast_float\include\fast_float</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\ext\fast_float\include\fast_float\parse_number.h">
<Filter>c4\ext\fast_float\include\fast_float</Filter>
</ClInclude>
<ClInclude Include="ext\c4core\src\c4\ext\fast_float\include\fast_float\simple_decimal_conversion.h">
<Filter>c4\ext\fast_float\include\fast_float</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Natvis Include="ext\c4core\src\c4\c4core.natvis">
<Filter>c4</Filter>
</Natvis>
</ItemGroup>
<ItemGroup>
<Filter Include="c4">
<UniqueIdentifier>{D96EB7E9-E07F-31EF-8A8C-CDA60AEE417F}</UniqueIdentifier>
</Filter>
<Filter Include="c4\ext">
<UniqueIdentifier>{0C8CED5D-8C03-3DC1-88A0-4532154293B9}</UniqueIdentifier>
</Filter>
<Filter Include="c4\ext\debugbreak">
<UniqueIdentifier>{518E0C6D-105B-39F9-8193-356D9B7641CB}</UniqueIdentifier>
</Filter>
<Filter Include="c4\ext\fast_float">
<UniqueIdentifier>{73394C47-97A1-34EE-A081-D6003F63E488}</UniqueIdentifier>
</Filter>
<Filter Include="c4\ext\fast_float\include">
<UniqueIdentifier>{1B43ABC9-6254-3DF0-A9A5-86BCF6FEA126}</UniqueIdentifier>
</Filter>
<Filter Include="c4\ext\fast_float\include\fast_float">
<UniqueIdentifier>{6328648E-A574-3A0D-8E0E-A2AA13716FDA}</UniqueIdentifier>
</Filter>
<Filter Include="c4\ext\rng">
<UniqueIdentifier>{2A97DBBA-1057-3E33-AE1C-C4CF7DBD4D89}</UniqueIdentifier>
</Filter>
<Filter Include="c4\ext\sg14">
<UniqueIdentifier>{4104B22C-27F9-38F8-9E20-00B05D09BD39}</UniqueIdentifier>
</Filter>
<Filter Include="c4\std">
<UniqueIdentifier>{599BE36A-381B-3D35-9752-B177B3AA1E4D}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>

View File

@@ -1,44 +0,0 @@
This is the first ryml release. Future releases will have a more organized changelog; for now, only recent major changes are listed.
Please be aware that there are still some anticipated breaking changes in the API before releasing the 1.0 major version. These are highlighted in [the repo ROADMAP](https://github.com/biojppm/rapidyaml/blob/v0.1.0/ROADMAP.md).
* 2020/October
* [MR#89](https://github.com/biojppm/rapidyaml/pull/89):
* fix python API generation in windows
* use github actions for testing and releasing
* [MR#88](https://github.com/biojppm/rapidyaml/pull/88): [fix MacOS compilation and installs](https://github.com/biojppm/rapidyaml/issues/75). This is a fix from [c4core](https://github.com/biojppm/cmake/issues/1).
* [MR#88](https://github.com/biojppm/rapidyaml/pull/88): [fix boolean handling](https://github.com/biojppm/rapidyaml/issues/74). This is a fix from [c4core](https://github.com/biojppm/c4core/pull/18/). `true` and `false` are now parsed correctly into `bool` variables:
```c++
auto tree = parse("{foo: true, bar: false}");
```
Emitting `bool` variables still defaults to `0`/`1`, like the default behaviour in the STL. To explicitly request `true`/`false` use `c4::fmt::boolalpha()`:
```c++
node << var; // "1" or "0"
node << c4::fmt::boolalpha(var); // "true" or "false"
```
* 2020/September
* [***Breaking change***] [MR#85](https://github.com/biojppm/rapidyaml/pull/85) null values in YAML are now parsed to null strings instead of YAML null token "~":
```c++
auto tree = parse("{foo: , bar: ''}");
// previous:
assert(tree["foo"].val() == "~");
assert(tree["bar"].val() == "");
// now:
assert(tree["foo"].val() == nullptr); // notice that this is now null
assert(tree["bar"].val() == "");
```
* [MR#85](https://github.com/biojppm/rapidyaml/pull/85) Commas after tags are now allowed:
```yaml
{foo: !!str, bar: ''} # now the comma does not cause an error
```
* [MR#81](https://github.com/biojppm/rapidyaml/pull/81): Always compile with extra pedantic warnings.
* 2020/May
* [***Breaking change***] the error callback now receives a source location object:
```c++
// previous
using pfn_error = void (*)(const char* msg, size_t msg_len, void *user_data);
// now:
using pfn_error = void (*)(const char* msg, size_t msg_len, Location location, void *user_data);
```
* Parser fixes to improve test suite success: [MR#73](https://github.com/biojppm/rapidyaml/pull/73), [MR#71](https://github.com/biojppm/rapidyaml/pull/71), [MR#68](https://github.com/biojppm/rapidyaml/pull/68), [MR#67](https://github.com/biojppm/rapidyaml/pull/67), [MR#66](https://github.com/biojppm/rapidyaml/pull/66)
* Fix compilation as DLL on windows [MR#69](https://github.com/biojppm/rapidyaml/pull/69)

View File

@@ -1,29 +0,0 @@
### New features & improvements
- Enable parsing into nested nodes ([87f4184](https://github.com/biojppm/rapidyaml/commit/87f4184))
- `as_json()` can now be called with tree and node id ([4c23041](https://github.com/biojppm/rapidyaml/commit/4c23041))
- Add `Parser::reserve_stack()` ([f31fb9f](https://github.com/biojppm/rapidyaml/commit/f31fb9f))
- Add uninstall target ([PR #122](https://github.com/biojppm/rapidyaml/pull/122))
- Update [c4core](https://github.com/biojppm/c4core) to v0.1.1
- Add a [quickstart sample](samples/quickstart.cpp) with build examples.
- Update [README.md](README.md) to refer to the quickstart
- Add [gdb visualizers](src/ryml-gdbtypes.py)
- Add `SO_VERSION` to shared builds
### Fixes
- Fix [#139](https://github.com/biojppm/rapidyaml/issues/139): substr and csubstr not found in ryml namespace
- Fix [#131](https://github.com/biojppm/rapidyaml/issues/131): resolve references to map keys
- Fix [#129](https://github.com/biojppm/rapidyaml/issues/129): quoted strings starting with * parsed as references
- Fix [#128](https://github.com/biojppm/rapidyaml/issues/128): segfault on nonexistent anchor
- Fix [#124](https://github.com/biojppm/rapidyaml/issues/124): parse failure in comments with trailing colon
- Fix [#121](https://github.com/biojppm/rapidyaml/issues/121): preserve quotes when emitting scalars
- Fix [#103](https://github.com/biojppm/rapidyaml/issues/103): ambiguous parsing of null/empty scalars
- Fix [#90](https://github.com/biojppm/rapidyaml/issues/90): CMAKE_CXX_STANDARD ignored
- Fix [#40](https://github.com/biojppm/rapidyaml/issues/40): quadratic complexity from use of `sscanf(%f)`
- Fix emitting json to streams ([dc6af83](https://github.com/biojppm/rapidyaml/commit/dc6af83))
- Set the global memory resource when setting global callbacks ([511cba0](https://github.com/biojppm/rapidyaml/commit/511cba0))
- Fix python packaging ([PR #102](https://github.com/biojppm/rapidyaml/pull/102))
### Special thanks
- @Gei0r
- @litghost
- @costashatz

View File

@@ -1,235 +0,0 @@
This release is focused on bug fixes and compliance with the [YAML test suite](https://github.com/yaml/yaml-test-suite).
### Breaking changes
- Fix parsing behavior of root-level scalars: now these are parsed into a DOCVAL, not SEQ->VAL ([5ba0d56](https://github.com/biojppm/rapidyaml/pull/144/commits/5ba0d56904daef1509f0073695145c4835ab1b30), from [PR #144](https://github.com/biojppm/rapidyaml/pull/144)). Eg,
```yaml
---
this is a scalar
--- # previously this was parsed as
- this is a scalar
```
- Cleanup type predicate API ([PR #155](https://github.com/biojppm/rapidyaml/pull/155))):
- ensure all type predicates from `Tree` and `NodeRef` forward to the corresponding predicate in `NodeType`
- remove all type predicates and methods from `NodeData`; use the equivalent call from `Tree` or `NodeRef`. For example, for `is_map()`:
```c++
Tree t = parse("{foo: bar}");
size_t map_id = t.root_id();
NodeRef map = t.rootref();
t.get(map_id)->is_map(); // compile error: no longer exists
assert(t.is_map(map_id)); // OK
assert(map.is_map()); // OK
```
- Further cleanup to the type predicate API will be done in the future, especially around the `.has_*()` vs corresponding `.is_*()` naming scheme.
### New features & improvements
- `Tree::lookup_path_or_modify()`: add overload to graft existing branches ([PR #141](https://github.com/biojppm/rapidyaml/pull/141))
- Callbacks: improve test coverage ([PR #141](https://github.com/biojppm/rapidyaml/pull/141))
- [YAML test suite](https://github.com/yaml/yaml-test-suite) ([PR #144](https://github.com/biojppm/rapidyaml/pull/144), [PR #145](https://github.com/biojppm/rapidyaml/pull/145)): big progress towards compliance with the suite. There are still a number of existing problems, which are the subject of ongoing work. See the [list of current known failures](../test/test_suite/test_suite_parts.cpp) in the test suite file.
- Python wheels and source package are now [uploaded to PyPI](https://pypi.org/project/rapidyaml/) as part of the release process.
### Fixes
#### Anchors and references
- Fix resolving of nodes with keyref+valref ([PR #144](https://github.com/biojppm/rapidyaml/pull/144)): `{&a a: &b b, *b: *a}`
- Fix parsing of implicit scalars when tags are present ([PR #145](https://github.com/biojppm/rapidyaml/pull/145)):
```yaml
- &a # test case PW8X
- a
- &a : a
b: &b
- &c : &a
- ? &d
- ? &e
: &a
```
- Fix [#151](https://github.com/biojppm/rapidyaml/issues/151): scalars beginning with `*` or `&` or `<<` are now correctly quoted when emitting ([PR #156](https://github.com/biojppm/rapidyaml/pull/156)).
- Also from [PR #156](https://github.com/biojppm/rapidyaml/pull/156), map inheritance nodes like `<<: *anchor` or `<<: [*anchor1, *anchor2]` now have a `KEYREF` flag in their type (until a call to `Tree::resolve()`):
```c++
Tree tree = parse("{map: &anchor {foo: bar}, copy: {<<: *anchor}}");
assert(tree["copy"]["<<"].is_key_ref()); // previously this did not hold
assert(tree["copy"]["<<"].is_val_ref()); // ... but this did
```
#### Tags
- Fix parsing of tag dense maps and seqs ([PR #144](https://github.com/biojppm/rapidyaml/pull/144)):
```yaml
--- !!map {
k: !!seq [ a, !!str b],
j: !!seq
[ a, !!str b]
--- !!seq [
!!map { !!str k: v},
!!map { !!str ? k: v}
]
--- !!map
!!str foo: !!map # there was a parse error with the multiple tags
!!int 1: !!float 20.0
!!int 3: !!float 40.0
--- !!seq
- !!map
!!str k1: v1
!!str k2: v2
!!str k3: v3
```
#### Whitespace
- Fix parsing of double-quoted scalars with tabs ([PR #145](https://github.com/biojppm/rapidyaml/pull/145)):
```yaml
"This has a\ttab"
# is now correctly parsed as "This has a<TAB>tab"
```
- Fix filtering of leading and trailing whitespace within double-quoted scalars ([PR #145](https://github.com/biojppm/rapidyaml/pull/145)):
```yaml
# test case 4ZYM, 7A4E, TL85
"
<SPC><SPC>foo<SPC>
<SPC>
<SPC><TAB><SPC>bar
<SPC><SPC>baz
"
# is now correctly parsed as " foo\nbar\nbaz "
```
- Fix parsing of tabs within YAML tokens ([PR #145](https://github.com/biojppm/rapidyaml/pull/145)):
```yaml
---<TAB>scalar # test case K54U
---<TAB>{} # test case Q5MG
--- # test case DC7X
a: b<TAB>
seq:<TAB>
- a<TAB>
c: d<TAB>#X
```
- Fix parsing of flow-style maps with ommitted values without any space ([PR #145](https://github.com/biojppm/rapidyaml/pull/145)):
```yaml
# test case 4ABK
- {foo: , bar: , baz: } # this was parsed correctly as {foo: ~, bar: ~, baz: ~}
- {foo:, bar:, baz:} # ... but this was parsed as {'foo:': , 'bar:': ~, 'baz:': ~}
```
#### Scalars
- Unescape forward slashes in double quoted string ([PR #145](https://github.com/biojppm/rapidyaml/pull/145)):
```yaml
--- escaped slash: "a\/b" # test case 3UYS
# is now parsed as:
--- escaped slash: "a/b"
```
- Fix filtering of indented regions in folded scalars ([PR #145](https://github.com/biojppm/rapidyaml/pull/145)):
```yaml
# test case 7T8X
- >
folded
line
next
line
* bullet
* list
* lines
last
line
```
is now correctly parsed as `\nfolded line\nnext line\n * bullet\n\n * list\n * lines\n\nlast line\n`.
- Fix parsing of special characters within plain scalars ([PR #145](https://github.com/biojppm/rapidyaml/pull/145)):
```yaml
# test case 3MYT
k:#foo
&a !t s
!t s
# now correctly parsed as "k:#foo &a !t s !t s"
```
- Fix parsing of comments after complex keys ([PR #145](https://github.com/biojppm/rapidyaml/pull/145)):
```yaml
# test case X8DW
? key
# comment
: value
# now correctly parsed as {key: value}
```
- Fix parsing of consecutive complex keys within maps ([PR #145](https://github.com/biojppm/rapidyaml/pull/145))
```yaml
# test case 7W2P, ZWK4
? a
? b
c:
? d
e:
# now correctly parsed as {a: ~, b: ~, c: ~, d: ~, e: ~}
```
- Fix [#152](https://github.com/biojppm/rapidyaml/issues/152): parse error with folded scalars that are the last in a container ([PR #157](https://github.com/biojppm/rapidyaml/pull/157)):
```yaml
exec:
command:
# before the fix, this folded scalar failed to parse
- |
exec pg_isready -U "dog" -d "dbname=dog" -h 127.0.0.1 -p 5432
parses: no
```
- Fix: documents consisting of a quoted scalar now retain the VALQUO flag ([PR #156](https://github.com/biojppm/rapidyaml/pull/156))
```c++
Tree tree = parse("'this is a quoted scalar'");
assert(tree.rootref().is_doc());
assert(tree.rootref().is_val());
assert(tree.rootref().is_val_quoted());
```
#### Document structure
- Empty docs are now parsed as a docval with a null node:
```yaml
--- # test cases 6XDY, 6ZKB, 9BXL, PUW8
---
---
```
is now parsed as
```yaml
--- ~
--- ~
--- ~
```
- Prevent creation of DOC nodes from stream-level comments or tags ([PR #145](https://github.com/biojppm/rapidyaml/pull/145)):
```yaml
!foo "bar"
...
# Global
%TAG ! tag:example.com,2000:app/
---
!foo "bar"
```
was parsed as
```yaml
---
!foo "bar"
---
# notice the empty doc in here
---
!foo "bar"
```
and it is now correctly parsed as
```yaml
---
!foo "bar"
---
!foo "bar"
```
(other than the known limitation that ryml does not do tag lookup).
#### General
- Fix [#147](https://github.com/biojppm/rapidyaml/issues/147): serialize/deserialize special float values `.nan`, `.inf`, `-.inf` ([PR #149](https://github.com/biojppm/rapidyaml/pull/149))
- Fix [#142](https://github.com/biojppm/rapidyaml/issues/142): `preprocess_json()`: ensure quoted ranges are skipped when slurping containers
- Ensure error macros expand to a single statement ([PR #141](https://github.com/biojppm/rapidyaml/pull/141))
- Update c4core to [0.1.4](https://github.com/biojppm/c4core/releases/tag/v0.1.4)
### Special thanks
- @Gei0r

View File

@@ -1 +0,0 @@
Yank python package 0.2.1, was accidentally created while iterating the PyPI submission from the Github action. This release does not add any change, and is functionally the same as [0.2.1](https://github.com/biojppm/rapidyaml/releases/tag/v0.2.1).

View File

@@ -1,285 +0,0 @@
This release is focused on bug fixes and compliance with the [YAML test suite](https://github.com/yaml/yaml-test-suite).
### New features
- Add support for CPU architectures aarch64, ppc64le, s390x.
- Update c4core to [0.1.7](https://github.com/biojppm/c4core/releases/tag/v0.1.7)
- `Tree` and `NodeRef`: add document getter `doc()` and `docref()`
```c++
Tree tree = parse(R"(---
doc0
---
doc1
)");
NodeRef stream = t.rootref();
assert(stream.is_stream());
// tree.doc(i): get the index of the i-th doc node.
// Equivalent to tree.child(tree.root_id(), i)
assert(tree.doc(0) == 1u);
assert(tree.doc(1) == 2u);
// tree.docref(i), same as above, return NodeRef
assert(tree.docref(0).val() == "doc0");
assert(tree.docref(1).val() == "doc1");
// stream.doc(i), same as above, given NodeRef
assert(stream.doc(0).val() == "doc0");
assert(stream.doc(1).val() == "doc1");
```
### Fixes
- Fix compilation with `C4CORE_NO_FAST_FLOAT` ([PR #163](https://github.com/biojppm/rapidyaml/pull/163))
#### Flow maps
- Fix parse of multiline plain scalars inside flow maps ([PR #161](https://github.com/biojppm/rapidyaml/pull/161)):
```yaml
# test case UT92
# all parsed as "matches %": 20
- { matches
% : 20 }
- { matches
%: 20 }
- { matches
%:
20 }
```
#### Tags
- Fix parsing of tags followed by comments in sequences ([PR #161](https://github.com/biojppm/rapidyaml/pull/161)):
```yaml
# test case 735Y
- !!map # Block collection
foo : bar
```
#### Quoted scalars
- Fix filtering of tab characters in quoted scalars ([PR #161](https://github.com/biojppm/rapidyaml/pull/161)):
```yaml
---
# test case 5GBF
"Empty line
<TAB>
as a line feed"
# now correctly parsed as "Empty line\nas a line feed"
---
# test case PRH3
' 1st non-empty
<SPC>2nd non-empty<SPC>
<TAB>3rd non-empty '
# now correctly parsed as " 1st non-empty\n2nd non-empty 3rd non-empty "
```
- Fix filtering of backslash characters in double-quoted scalars ([PR #161](https://github.com/biojppm/rapidyaml/pull/161)):
```yaml
# test cases NP9H, Q8AD
"folded<SPC>
to a space,<TAB>
<SPC>
to a line feed, or <TAB>\
\ <TAB>non-content"
# now correctly parsed as "folded to a space,\nto a line feed, or \t \tnon-content"
```
- Ensure filtering of multiline quoted scalars ([PR #161](https://github.com/biojppm/rapidyaml/pull/161)):
```yaml
# all scalars now correctly parsed as "quoted string",
# both for double and single quotes
---
"quoted
string"
--- "quoted
string"
---
- "quoted
string"
---
- "quoted
string"
---
"quoted
string": "quoted
string"
---
"quoted
string": "quoted
string"
```
#### Block scalars
- Ensure no newlines are added when emitting block scalars ([PR #161](https://github.com/biojppm/rapidyaml/pull/161))
- Fix parsing of block spec with both chomping and indentation: chomping may come before or after the indentation ([PR #161](https://github.com/biojppm/rapidyaml/pull/161)):
```yaml
# the block scalar specs below now have the same effect.
# test cases: D83L, P2AD
- |2-
explicit indent and chomp
- |-2
chomp and explicit indent
```
- Fix [inference of block indentation](https://yaml.org/spec/1.2.2/#8111-block-indentation-indicator) with leading blank lines ([PR #161](https://github.com/biojppm/rapidyaml/pull/161)):
```yaml
# test cases: 4QFQ, 7T8X
- >
# child1
# parsed as "\n\n child1"
--- # test case DWX9
|
literal
text
# Comment
# parsed as "\n\nliteral\n \n\ntext\n"
```
- Fix parsing of same-indentation block scalars ([PR #161](https://github.com/biojppm/rapidyaml/pull/161)):
```yaml
# test case W4TN
# all docs have the same value: "%!PS-Adobe-2.0"
--- |
%!PS-Adobe-2.0
...
--- >
%!PS-Adobe-2.0
...
--- |
%!PS-Adobe-2.0
...
--- >
%!PS-Adobe-2.0
...
--- |
%!PS-Adobe-2.0
--- >
%!PS-Adobe-2.0
--- |
%!PS-Adobe-2.0
--- >
%!PS-Adobe-2.0
```
- Folded block scalars: fix folding of newlines at the border of indented parts ([PR #161](https://github.com/biojppm/rapidyaml/pull/161)):
```yaml
# test case 6VJK
# now correctly parsed as "Sammy Sosa completed another fine season with great stats.\n\n 63 Home Runs\n 0.288 Batting Average\n\nWhat a year!\n"
>
Sammy Sosa completed another
fine season with great stats.
63 Home Runs
0.288 Batting Average
What a year!
---
# test case MJS9
# now correctly parsed as "foo \n\n \t bar\n\nbaz\n"
>
foo<SPC>
<SPC>
<SPC><TAB><SPC>bar
baz
```
- Folded block scalars: fix folding of newlines when the indented part is at the begining of the scalar ([PR #161](https://github.com/biojppm/rapidyaml/pull/161)):
```yaml
# test case F6MC
a: >2
more indented
regular
# parsed as a: " more indented\nregular\n"
b: >2
more indented
regular
# parsed as b: "\n\n more indented\nregular\n"
```
#### Plain scalars
- Fix parsing of whitespace within plain scalars ([PR #161](https://github.com/biojppm/rapidyaml/pull/161)):
```yaml
---
# test case NB6Z
key:
value
with
tabs
tabs
foo
bar
baz
# is now correctly parsed as "value with\ntabs tabs\nfoo\nbar baz"
---
# test case 9YRD, EX5H (trailing whitespace)
a
b
c
d
e
# is now correctly parsed as "a b c d\ne"
```
- Fix parsing of unindented plain scalars at the root level scope ([PR #161](https://github.com/biojppm/rapidyaml/pull/161))
```yaml
--- # this parsed
Bare
scalar
is indented
# was correctly parsed as "Bare scalar is indented"
--- # but this failed to parse successfully:
Bare
scalar
is not indented
# is now correctly parsed as "Bare scalar is not indented"
--- # test case NB6Z
value
with
tabs
tabs
foo
bar
baz
# now correctly parsed as "value with\ntabs tabs\nfoo\nbar baz"
---
--- # test cases EXG3, 82AN
---word1
word2
# now correctly parsed as "---word1 word2"
```
- Fix parsing of comments within plain scalars
```yaml
# test case 7TMG
--- # now correctly parsed as "word1"
word1
# comment
--- # now correctly parsed as [word1, word2]
[ word1
# comment
, word2]
```
#### Python API
- Add missing node predicates in SWIG API definition ([PR #166](https://github.com/biojppm/rapidyaml/pull/166)):
- `is_anchor_or_ref()`
- `is_key_quoted()`
- `is_val_quoted()`
- `is_quoted()`
### Thanks
--- @mbs-c
--- @simu
--- @QuellaZhang

View File

@@ -1,104 +0,0 @@
### Breaking changes
Despite ryml being still in a non-stable 0.x.y version, considerable effort goes into trying to avoid breaking changes. However, this release has to collect on the [semantic versioning](https://semver.org/) prerogative for breaking changes. This is a needed improvement, so sorry for any nuisance!
**The allocation and error callback logic was revamped** on the [amalgamation PR](https://github.com/biojppm/rapidyaml/pull/172). Now trees and parsers receive (and store) a full `ryml::Callbacks` object instead of the (now removed) `ryml::Allocator` which had a pointer to a (now removed) `ryml::MemoryResourceCallbacks`, which was a (now removed) `ryml::MemoryResource`. To be clear, the `Callbacks` class is unchanged, other than removing some unneeded helper methods.
These changes were motivated by unfortunate name clashes between `c4::Allocator/ryml::Allocator` and `c4::MemoryResource/ryml::MemoryResource`, occurring if `<c4/allocator.hpp>` or `<c4/memory_resource.hpp>` were included before `<c4/yml/common.hpp>`. They also significantly simplify this part of the API, making it really easier to understand.
As a consequence of the above changes, the global memory resource getters and setters for ryml were also removed: `ryml::get_memory_resource()/ryml::set_memory_resource()`.
Here's an example of the required changes in client code. First the old client code (from the quickstart):
```c++
struct PerTreeMemoryExample : public ryml::MemoryResource
{
void *allocate(size_t len, void * hint) override;
void free(void *mem, size_t len) override;
};
PerTreeMemoryExample mrp;
PerTreeMemoryExample mr1;
PerTreeMemoryExample mr2;
ryml::Parser parser = {ryml::Allocator(&mrp)};
ryml::Tree tree1 = {ryml::Allocator(&mr1)};
ryml::Tree tree2 = {ryml::Allocator(&mr2)};
```
Should now be rewritten to:
```c++
struct PerTreeMemoryExample
{
ryml::Callbacks callbacks() const; // helper to create the callbacks
};
PerTreeMemoryExample mrp;
PerTreeMemoryExample mr1;
PerTreeMemoryExample mr2;
ryml::Parser parser = {mrp.callbacks()};
ryml::Tree tree1 = {mr1.callbacks()};
ryml::Tree tree2 = {mr2.callbacks()};
```
### New features
- Add amalgamation into a single header file ([PR #172](https://github.com/biojppm/rapidyaml/pull/172)):
- The amalgamated header will be available together with the deliverables from each release.
- To generate the amalgamated header:
```console
$ python tools/amalgamate.py ryml_all.hpp
```
- To use the amalgamated header:
- Include at will in any header of your project.
- In one - and only one - of your project source files, `#define RYML_SINGLE_HDR_DEFINE_NOW` and then `#include <ryml_all.hpp>`. This will enable the function and class definitions in the header file. For example, here's a sample program:
```c++
#include <iostream>
#define RYML_SINGLE_HDR_DEFINE_NOW // do this before the include
#include <ryml_all.hpp>
int main()
{
auto tree = ryml::parse("{foo: bar}");
std::cout << tree["foo"].val() << "\n";
}
```
- Add `Tree::change_type()` and `NodeRef::change_type()` ([PR #171](https://github.com/biojppm/rapidyaml/pull/171)):
```c++
// clears a node and sets its type to a different type (one of `VAL`, `SEQ`, `MAP`):
Tree t = parse("{keyval0: val0, keyval1: val1, keyval2: val2}");
t[0].change_type(VAL);
t[1].change_type(MAP);
t[2].change_type(SEQ);
Tree expected = parse("{keyval0: val0, keyval1: {}, keyval2: []}");
assert(emitrs<std::string>(t) == emitrs<std::string>(expected));
```
- Add support for compilation with emscripten (WebAssembly+javascript) ([PR #176](https://github.com/biojppm/rapidyaml/pull/176)).
### Fixes
- Take block literal indentation as relative to current indentation level, rather than as an absolute indentation level ([PR #178](https://github.com/biojppm/rapidyaml/pull/178)):
```yaml
foo:
- |
child0
- |2
child2 # indentation is 4, not 2
```
- Fix parsing when seq member maps start without a key ([PR #178](https://github.com/biojppm/rapidyaml/pull/178)):
```yaml
# previously this resulted in a parse error
- - : empty key
- - : another empty key
```
- Prefer passing `substr` and `csubstr` by value instead of const reference ([PR #171](https://github.com/biojppm/rapidyaml/pull/171))
- Fix [#173](https://github.com/biojppm/rapidyaml/issues/173): add alias target `ryml::ryml` ([PR #174](https://github.com/biojppm/rapidyaml/pull/174))
- Speedup compilation of tests by removing linking with yaml-cpp and libyaml. ([PR #177](https://github.com/biojppm/rapidyaml/pull/177))
- Fix [c4core#53](https://github.com/biojppm/c4core/issues/53): cmake install targets were missing call to `export()` ([PR #179](https://github.com/biojppm/c4core/pull/179)).
- Add missing export to `Tree` ([PR #181](https://github.com/biojppm/c4core/pull/181)).
### Thanks
- @aviktorov

View File

@@ -1,229 +0,0 @@
This release improves compliance with the [YAML test suite](https://github.com/yaml/yaml-test-suite/) (thanks @ingydotnet and @perlpunk for extensive and helpful cooperation), and adds node location tracking using the parser.
### Breaking changes
As part of the [new feature to track source locations](https://github.com/biojppm/rapidyaml/pull/168), opportunity was taken to address a number of pre-existing API issues. These changes consisted of:
- Deprecate `c4::yml::parse()` and `c4::yml::Parser::parse()` overloads; all these functions will be removed in short order. Until removal, any call from client code will trigger a compiler warning.
- Add `parse()` alternatives, either `parse_in_place()` or `parse_in_arena()`:
- `parse_in_place()` receives only `substr` buffers, ie mutable YAML source buffers. Trying to pass a `csubstr` buffer to `parse_in_place()` will cause a compile error:
```c++
substr readwrite = /*...*/;
Tree tree = parse_in_place(readwrite); // OK
csubstr readonly = /*...*/;
Tree tree = parse_in_place(readonly); // compile error
```
- `parse_in_arena()` receives only `csubstr` buffers, ie immutable YAML source buffers. Prior to parsing, the buffer is copied to the tree's arena, then the copy is parsed in place. Because `parse_in_arena()` is meant for immutable buffers, overloads receiving a `substr` YAML buffer are now declared but marked deprecated, and intentionally left undefined, such that calling `parse_in_arena()` with a `substr` will cause a linker error as well as a compiler warning.
```c++
substr readwrite = /*...*/;
Tree tree = parse_in_arena(readwrite); // compile warning+linker error
```
This is to prevent an accidental extra copy of the mutable source buffer to the tree's arena: `substr` is implicitly convertible to `csubstr`. If you really intend to parse an originally mutable buffer in the tree's arena, convert it first explicitly to immutable by assigning the `substr` to a `csubstr` prior to calling `parse_in_arena()`:
```c++
substr readwrite = /*...*/;
csubstr readonly = readwrite; // ok
Tree tree = parse_in_arena(readonly); // ok
```
This problem does not occur with `parse_in_place()` because `csubstr` is not implicitly convertible to `substr`.
- In the python API, `ryml.parse()` was removed and not just deprecated; the `parse_in_arena()` and `parse_in_place()` now replace this.
- `Callbacks`: changed behavior in `Parser` and `Tree`:
- When a tree is copy-constructed or move-constructed to another, the receiving tree will start with the callbacks of the original.
- When a tree is copy-assigned or move-assigned to another, the receiving tree will now change its callbacks to the original.
- When a parser creates a new tree, the tree will now use a copy of the parser's callbacks object.
- When an existing tree is given directly to the parser, both the tree and the parser now retain their own callback objects; any allocation or error during parsing will go through the respective callback object.
### New features
- Add tracking of source code locations. This is useful for reporting semantic errors after the parsing phase (ie where the YAML is syntatically valid and parsing is successful, but the tree contents are semantically invalid). The locations can be obtained lazily from the parser when the first location is queried:
```c++
// To obtain locations, use of the parser is needed:
ryml::Parser parser;
ryml::Tree tree = parser.parse_in_arena("source.yml", R"({
aa: contents,
foo: [one, [two, three]]
})");
// After parsing, on the first call to obtain a location,
// the parser will cache a lookup structure to accelerate
// tracking the location of a node, with complexity
// O(numchars(srcbuffer)). Then it will do the lookup, with
// complexity O(log(numlines(srcbuffer))).
ryml::Location loc = parser.location(tree.rootref());
assert(parser.location_contents(loc).begins_with("{"));
// note the location members are zero-based:
assert(loc.offset == 0u);
assert(loc.line == 0u);
assert(loc.col == 0u);
// On the next call to location(), the accelerator is reused
// and only the lookup is done.
loc = parser.location(tree["aa"]);
assert(parser.location_contents(loc).begins_with("aa"));
assert(loc.offset == 2u);
assert(loc.line == 1u);
assert(loc.col == 0u);
// KEYSEQ in flow style: points at the key
loc = parser.location(tree["foo"]);
assert(parser.location_contents(loc).begins_with("foo"));
assert(loc.offset == 16u);
assert(loc.line == 2u);
assert(loc.col == 0u);
loc = parser.location(tree["foo"][0]);
assert(parser.location_contents(loc).begins_with("one"));
assert(loc.line == 2u);
assert(loc.col == 6u);
// SEQ in flow style: location points at the opening '[' (there's no key)
loc = parser.location(tree["foo"][1]);
assert(parser.location_contents(loc).begins_with("["));
assert(loc.line == 2u);
assert(loc.col == 11u);
loc = parser.location(tree["foo"][1][0]);
assert(parser.location_contents(loc).begins_with("two"));
assert(loc.line == 2u);
assert(loc.col == 12u);
loc = parser.location(tree["foo"][1][1]);
assert(parser.location_contents(loc).begins_with("three"));
assert(loc.line == 2u);
assert(loc.col == 17u);
// NOTE: reusing the parser with a new YAML source buffer
// will invalidate the accelerator.
```
See more details in the [quickstart sample](https://github.com/biojppm/rapidyaml/blob/bfb073265abf8c58bbeeeed7fb43270e9205c71c/samples/quickstart.cpp#L3759). Thanks to @cschreib for submitting a working example proving how simple it could be to achieve this.
- `Parser`:
- add `source()` and `filename()` to get the latest buffer and filename to be parsed
- add `callbacks()` to get the parser's callbacks
- Add `from_tag_long()` and `normalize_tag_long()`:
```c++
assert(from_tag_long(TAG_MAP) == "<tag:yaml.org,2002:map>");
assert(normalize_tag_long("!!map") == "<tag:yaml.org,2002:map>");
```
- Add an experimental API to resolve tags based on the tree's tag directives. This API is still imature and will likely be subject to changes, so we won't document it yet.
- Regarding emit styles (see issue [#37](https://github.com/biojppm/rapidyaml/issues/37)): add an experimental API to force flow/block style on container nodes, as well as block-literal/block-folded/double-quoted/single-quoted/plain styles on scalar nodes. This API is also immature and will likely be subject to changes, so we won't document it yet. But if you are desperate for this functionality, the new facilities will let you go further.
- Add preliminary support for bare-metal ARM architectures, with CI tests pending implementation of QEMU action. ([#193](https://github.com/biojppm/rapidyaml/issues/193), [c4core#63](https://github.com/biojppm/c4core/issues/63)).
- Add preliminary support for RISC-V architectures, with CI tests pending availability of RISC-V based github actions. ([c4core#69](https://github.com/biojppm/c4core/pulls/69)).
### Fixes
- Fix edge cases of parsing of explicit keys (ie keys after `?`) ([PR#212](https://github.com/biojppm/rapidyaml/pulls/212)):
```yaml
# all these were fixed:
? : # empty
? explicit key # this comment was not parsed correctly
? # trailing empty key was not added to the map
```
- Fixed parsing of tabs used as whitespace tokens after `:` or `-`. This feature [is costly (see some benchmark results here)](https://github.com/biojppm/rapidyaml/pull/211#issuecomment-1030688035) and thus it is disabled by default, and requires defining a macro or cmake option `RYML_WITH_TAB_TOKENS` to enable ([PR#211](https://github.com/biojppm/rapidyaml/pulls/211)).
- Allow tab indentation in flow seqs ([PR#215](https://github.com/biojppm/rapidyaml/pulls/215)) (6CA3).
- ryml now parses successfully compact JSON code `{"like":"this"}` without any need for preprocessing. This code was not valid YAML 1.1, but was made valid in YAML 1.2. So the `preprocess_json()` functions, used to insert spaces after `:` are no longer necessary and have been removed. If you were using these functions, remove the calls and just pass the original source directly to ryml's parser ([PR#210](https://github.com/biojppm/rapidyaml/pulls/210)).
- Fix handling of indentation when parsing block scalars ([PR#210](https://github.com/biojppm/rapidyaml/pulls/210)):
```yaml
---
|
hello
there
---
|
ciao
qua
---
- |
hello
there
- |
ciao
qua
---
foo: |
hello
there
bar: |
ciao
qua
```
- Fix parsing of maps when opening a scope with whitespace before the colon ([PR#210](https://github.com/biojppm/rapidyaml/pulls/210)):
```yaml
foo0 : bar
---
foo1 : bar # the " :" was causing an assert
---
foo2 : bar
---
foo3 : bar
---
foo4 : bar
```
- Ensure container keys preserve quote flags when the key is quoted ([PR#210](https://github.com/biojppm/rapidyaml/pulls/210)).
- Ensure scalars beginning with `%` are emitted with quotes (([PR#216](https://github.com/biojppm/rapidyaml/pulls/216)).
- Fix [#203](https://github.com/biojppm/rapidyaml/issues/203): when parsing, do not convert `null` or `~` to null scalar strings. Now the scalar strings contain the verbatim contents of the original scalar; to query whether a scalar value is null, use `Tree::key_is_null()/val_is_null()` and `NodeRef::key_is_null()/val_is_null()` which return true if it is empty or any of the unquoted strings `~`, `null`, `Null`, or `NULL`. ([PR#207](https://github.com/biojppm/rapidyaml/pulls/207)):
- Fix [#205](https://github.com/biojppm/rapidyaml/issues/205): fix parsing of escaped characters in double-quoted strings: `"\\\"\n\r\t\<TAB>\/\<SPC>\0\b\f\a\v\e\_\N\L\P"` ([PR#207](https://github.com/biojppm/rapidyaml/pulls/207)).
- Fix [#204](https://github.com/biojppm/rapidyaml/issues/204): add decoding of unicode codepoints `\x` `\u` `\U` in double-quoted scalars:
```c++
Tree tree = parse_in_arena(R"(["\u263A \xE2\x98\xBA \u2705 \U0001D11E"])");
assert(tree[0].val() == "☺ ☺ ✅ 𝄞");
```
This is mandated by the YAML standard and was missing from ryml ([PR#207](https://github.com/biojppm/rapidyaml/pulls/207)).
- Fix emission of nested nodes which are sequences: when these are given as the emit root, the `- ` from the parent node was added ([PR#210](https://github.com/biojppm/rapidyaml/pulls/210)):
```c++
const ryml::Tree tree = ryml::parse_in_arena(R"(
- - Rochefort 10
- Busch
- Leffe Rituel
- - and so
- many other
- wonderful beers
)");
// before (error), YAML valid but not expected
//assert(ryml::emitrs<std::string>(tree[0][3]) == R"(- - and so
// - many other
// - wonderful beers
//)");
// now: YAML valid and expected
assert(ryml::emitrs<std::string>(tree[0][3]) == R"(- and so
- many other
- wonderful beers
)");
```
- Fix parsing of isolated `!`: should be an empty val tagged with `!` (UKK06-02) ([PR#215](https://github.com/biojppm/rapidyaml/pulls/215)).
- Fix [#193](https://github.com/biojppm/rapidyaml/issues/193): amalgamated header missing `#include <stdarg.h>` which prevented compilation in bare-metal `arm-none-eabi` ([PR #195](https://github.com/biojppm/rapidyaml/pull/195), requiring also [c4core #64](https://github.com/biojppm/c4core/pull/64)).
- Accept `infinity`,`inf` and `nan` as special float values (but not mixed case: eg `InFiNiTy` or `Inf` or `NaN` are not accepted) ([PR #186](https://github.com/biojppm/rapidyaml/pull/186)).
- Accept special float values with upper or mixed case: `.Inf`, `.INF`, `.NaN`, `.NAN`. Previously, only low-case `.inf` and `.nan` were accepted ([PR #186](https://github.com/biojppm/rapidyaml/pull/186)).
- Accept `null` with upper or mixed case: `Null` or `NULL`. Previously, only low-case `null` was accepted ([PR #186](https://github.com/biojppm/rapidyaml/pull/186)).
- Fix [#182](https://github.com/biojppm/rapidyaml/issues/182): add missing export of DLL symbols, and document requirements for compiling shared library from the amalgamated header. [PR #183](https://github.com/biojppm/rapidyaml/pull/183), also [PR c4core#56](https://github.com/biojppm/c4core/pull/56) and [PR c4core#57](https://github.com/biojppm/c4core/pull/57).
- Fix [#185](https://github.com/biojppm/rapidyaml/issues/185): compilation failures in earlier Xcode versions ([PR #187](https://github.com/biojppm/rapidyaml/pull/187) and [PR c4core#61](https://github.com/biojppm/c4core/pull/61)):
- `c4/substr_fwd.hpp`: (failure in Xcode 12 and earlier) forward declaration for `std::allocator` is inside the `inline namespace __1`, unlike later versions.
- `c4/error.hpp`: (failure in debug mode in Xcode 11 and earlier) `__clang_major__` does not mean the same as in the common clang, and as a result the warning `-Wgnu-inline-cpp-without-extern` does not exist there.
- Ensure error messages do not wrap around the buffer when the YAML source line is too long ([PR#210](https://github.com/biojppm/rapidyaml/pulls/210)).
- Ensure error is emitted on unclosed flow sequence characters eg `[[[` ([PR#210](https://github.com/biojppm/rapidyaml/pulls/210)). Same thing for `[]]`.
- Refactor error message building and parser debug logging to use the new dump facilities in c4core ([PR#212](https://github.com/biojppm/rapidyaml/pulls/212)).
- Parse: fix read-after-free when duplicating a parser state node, when pushing to the stack requires a stack buffer resize ([PR#210](https://github.com/biojppm/rapidyaml/pulls/210)).
- Add support for legacy gcc 4.8 ([PR#217](https://github.com/biojppm/rapidyaml/pulls/217)).
### Improvements
- Rewrite filtering of scalars to improve parsing performance ([PR #188](https://github.com/biojppm/rapidyaml/pull/188)). Previously the scalar strings were filtered in place, which resulted in quadratic complexity in terms of scalar length. This did not matter for small scalars fitting the cache (which is the more frequent case), but grew in cost as the scalars grew larger. To achieve linearity, the code was changed so that the strings are now filtered to a temporary scratch space in the parser, and copied back to the output buffer after filtering, if any change occurred. The improvements were large for the folded scalars; the table below shows the benchmark results of throughput (MB/s) for several files containing large scalars of a single type:
| scalar type | before | after | improvement |
|:------------|-------:|-------:|---------:|
| block folded | 276 | 561 | 103% |
| block literal | 331 | 611 | 85% |
| single quoted | 247 | 267 | 8% |
| double quoted | 212 | 230 | 8% |
| plain (unquoted) | 173 | 186 | 8% |
The cost for small scalars is negligible, with benchmark improvement in the interval of -2% to 5%, so well within the margin of benchmark variability in a regular OS. In the future, this will be optimized again by copying each character in place, thus completely avoiding the staging arena.
- `Callbacks`: add `operator==()` and `operator!=()` ([PR #168](https://github.com/biojppm/rapidyaml/pull/168)).
- `Tree`: on error or assert prefer the error callback stored into the tree's current `Callbacks`, rather than the global `Callbacks` ([PR #168](https://github.com/biojppm/rapidyaml/pull/168)).
- `detail::stack<>`: improve behavior when assigning from objects `Callbacks`, test all rule-of-5 scenarios ([PR #168](https://github.com/biojppm/rapidyaml/pull/168)).
- Improve formatting of error messages.
### Thanks
- @ingydotnet
- @perlpunk
- @cschreib
- @fargies
- @Xeonacid
- @aviktorov
- @xTVaser

View File

@@ -1,11 +0,0 @@
# old gcc-4.8 support
if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND
(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 4.8) AND
(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0))
# c++17 compiler required
set(C4RYML_BUILD_BENCHMARKS OFF CACHE BOOL "" FORCE)
# LLVM required
set(C4RYML_SANITIZE OFF CACHE BOOL "" FORCE)
endif()

View File

@@ -1,9 +0,0 @@
#ifndef _C4_LOG_HPP_
#define _C4_LOG_HPP_
// FIXME - these are just dumb placeholders
#define C4_LOGF_ERR(...) fprintf(stderr, __VA_ARGS__)
#define C4_LOGF_WARN(...) fprintf(stderr, __VA_ARGS__)
#define C4_LOGP(msg, ...) printf(msg)
#endif /* _C4_LOG_HPP_ */

File diff suppressed because it is too large Load Diff

View File

@@ -1,108 +0,0 @@
sudo: required
dist: bionic
language: cpp
env:
global:
# cmake is installed into /usr/bin
- PATH=/usr/bin:/usr/local/bin:$PATH
# we're not using combination parameters here to ensure that the builds
# run in the order we want. (We want to perform the fastest tests first so
# failed tests appear as early as possible).
# NOTE: The compiler setting is unused. It simply makes the display on
# travis-ci.org more readable.
# WARNING: do not use the name CXX. Travis will ignore the value here.
matrix:
include:
# every entry does both 64 and 32 bit
# SAN := sanitizers
# VG := valgrind
# coverage: in bionic, lcov is incompatible with g++8 and later
- env: CXX_=g++-7 BT=Coverage STD=11
- env: CXX_=g++-7 BT=Coverage STD=14
- env: CXX_=g++-7 BT=Coverage STD=17
- env: CXX_=g++-10 BT=Debug STD=11 VG=ON
- env: CXX_=g++-10 BT=Release STD=11 VG=ON
- env: CXX_=g++-10 BT=Debug STD=14 VG=ON
- env: CXX_=g++-10 BT=Release STD=14 VG=ON
- env: CXX_=g++-10 BT=Debug STD=17 VG=ON
- env: CXX_=g++-10 BT=Release STD=17 VG=ON
- env: CXX_=g++-10 BT=Debug STD=20 VG=ON
- env: CXX_=g++-10 BT=Release STD=20 VG=ON
- env: CXX_=clang++-10 BT=Debug STD=11 SAN=ALL VG=ON
- env: CXX_=clang++-10 BT=Release STD=11 SAN=ALL VG=ON
- env: CXX_=clang++-10 BT=Debug STD=14 SAN=ALL VG=ON
- env: CXX_=clang++-10 BT=Release STD=14 SAN=ALL VG=ON
- env: CXX_=clang++-10 BT=Debug STD=17 SAN=ALL VG=ON
- env: CXX_=clang++-10 BT=Release STD=17 SAN=ALL VG=ON
- env: CXX_=clang++-10 BT=Debug STD=20 SAN=ALL VG=ON
- env: CXX_=clang++-10 BT=Release STD=20 SAN=ALL VG=ON
- env: CXX_=g++-9 BT=Debug
- env: CXX_=g++-9 BT=Release
- env: CXX_=clang++-9 BT=Debug
- env: CXX_=clang++-9 BT=Release
- env: CXX_=g++-8 BT=Debug
- env: CXX_=g++-8 BT=Release
- env: CXX_=clang++-8 BT=Debug
- env: CXX_=clang++-8 BT=Release
- env: CXX_=g++-7 BT=Debug
- env: CXX_=g++-7 BT=Release
- env: CXX_=clang++-7 BT=Debug
- env: CXX_=clang++-7 BT=Release
- env: CXX_=g++-6 BT=Debug
- env: CXX_=g++-6 BT=Release
- env: CXX_=clang++-6.0 BT=Debug
- env: CXX_=clang++-6.0 BT=Release
- env: CXX_=g++-5 BT=Debug
- env: CXX_=g++-5 BT=Release
- env: CXX_=clang++-5.0 BT=Debug
- env: CXX_=clang++-5.0 BT=Release
# gcc 4.9 is not available in 18.04 -- https://stackoverflow.com/questions/48398475/
#- env: CXX_=g++-4.9 BT=Debug
#- env: CXX_=g++-4.9 BT=Release
- env: CXX_=clang++-4.0 BT=Debug
- env: CXX_=clang++-4.0 BT=Release
- env: CXX_=clang++-3.9 BT=Debug
- env: CXX_=clang++-3.9 BT=Release
# ----------- clang-tidy
#
- env: CXX_=clang++-9 BT=Debug LINT=clang-tidy
- env: CXX_=clang++-9 BT=Release LINT=clang-tidy
install:
- bash -x .ci/travis-install.sh
script:
- source .ci/travis-setenv.sh
- c4core_cfg_test 64 dynamic
- c4core_run_test 64 dynamic
- c4core_cfg_test 64 static
- c4core_run_test 64 static
- c4core_cfg_test 32 static
- c4core_run_test 32 static
- echo "Success!"
after_success:
- source .ci/travis-setenv.sh
# coveralls only accepts one submission per job
#- c4core_submit_coverage 32 static coveralls
- c4core_submit_coverage 64 static coveralls
- c4core_submit_coverage 32 static codecov
- c4core_submit_coverage 64 static codecov

View File

@@ -1,82 +0,0 @@
version: '{build}'
image: Visual Studio 2019
environment:
matrix:
- {GEN: Visual Studio 16 2019, ARCH: -A x64, CFG: Debug, compiler: msvc-16-seh}
- {GEN: Visual Studio 16 2019, ARCH: -A Win32, CFG: Debug, compiler: msvc-16-seh}
- {GEN: Visual Studio 16 2019, ARCH: -A x64, CFG: Release, compiler: msvc-16-seh}
- {GEN: Visual Studio 16 2019, ARCH: -A Win32, CFG: Release, compiler: msvc-16-seh}
- {GEN: Visual Studio 16 2019, ARCH: -A x64, STD: -D C4_CXX_STANDARD=20, CFG: Debug, compiler: msvc-16-seh}
- {GEN: Visual Studio 16 2019, ARCH: -A x64, STD: -D C4_CXX_STANDARD=17, CFG: Debug, compiler: msvc-16-seh}
- {GEN: Visual Studio 16 2019, ARCH: -A x64, STD: -D C4_CXX_STANDARD=14, CFG: Debug, compiler: msvc-16-seh}
- {GEN: Visual Studio 15 2017 Win64, CFG: Debug, APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017, compiler: msvc-15-seh}
- {GEN: Visual Studio 15 2017, CFG: Debug, APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017, compiler: msvc-15-seh}
- {GEN: Visual Studio 15 2017 Win64, CFG: Release, APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017, compiler: msvc-15-seh}
- {GEN: Visual Studio 15 2017, CFG: Release, APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017, compiler: msvc-15-seh}
#- compiler: gcc-5.3.0-posix
# GEN: "MinGW Makefiles"
# cxx_path: 'C:\mingw-w64\i686-5.3.0-posix-dwarf-rt_v4-rev0\mingw32\bin'
# APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
# CFG: Quicktest
# externconfig: Debug
matrix:
fast_finish: true
install:
- git submodule update --init --recursive
# git bash conflicts with MinGW makefiles
- set "PATH=%PATH:C:\Program Files\Git\usr\bin;=%"
- if not "%cxx_path%"=="" (set "PATH=%PATH%;%cxx_path%")
- cmake --version
build_script:
- echo %GEN%
- echo %ARCH%
- echo %CFG%
- echo %STD%
- set NUM_JOBS=3
- set PROJ_DIR=%cd%
- set BUILD_DIR=%PROJ_DIR%\build
- set INSTALL_DIR=%PROJ_DIR%\install
- set C4_EXTERN_DIR=%BUILD_DIR%\extern
- md %BUILD_DIR%
- md %BUILD_DIR%\static %BUILD_DIR%\shared %BUILD_DIR%\extern
- cmake -S %PROJ_DIR% -B %BUILD_DIR%\static %STD% -DC4CORE_DEV=ON -G "%GEN%" %ARCH% "-DCMAKE_BUILD_TYPE=%CFG%" "-DCMAKE_INSTALL_PREFIX=%INSTALL_DIR%\static" -DBUILD_SHARED_LIBS=OFF
- cmake -S %PROJ_DIR% -B %BUILD_DIR%\shared %STD% -DC4CORE_DEV=ON -G "%GEN%" %ARCH% "-DCMAKE_BUILD_TYPE=%CFG%" "-DCMAKE_INSTALL_PREFIX=%INSTALL_DIR%\shared" -DBUILD_SHARED_LIBS=ON
- cmake --build %BUILD_DIR%\static --config %configuration% --target test-build --parallel %NUM_JOBS%
- cmake --build %BUILD_DIR%\shared --config %configuration% --target test-build --parallel %NUM_JOBS%
test_script:
- cmake --build %BUILD_DIR%\static --config %configuration% --target test
- cmake --build %BUILD_DIR%\shared --config %configuration% --target test
#artifacts:
# - path: '_build/CMakeFiles/*.log'
# name: logs
# - path: '_build/Testing/**/*.xml'
# name: test_results
skip_commits:
files:
- .gitignore
- .travis*
- .ci/travis*
- .ci/dev_*
- .ci/show_*
- .ci/vagrant*
- .ci/Vagrant*
- bm/html/*
- doc/*
- img/*
- CHANGELOG.md
- CONTRIBUTING.md
- LICENSE.txt
- README.*
- ROADMAP.*

View File

@@ -1,129 +0,0 @@
#!/bin/bash
# useful to iterate when fixing the release:
# ver=0.2.1 ; ( set -x ; git tag -d v$ver ; git push origin :v$ver ) ; (set -x ; set -e ; tbump --only-patch --non-interactive $ver ; git add -u ; git commit --amend --no-edit ; git tag --annotate --message "v$ver" "v$ver" ; git push -f --tags origin )
function c4_release_create()
{
( \
set -euxo pipefail ; \
ver=$(_c4_validate_ver $1) ; \
branch=$(_c4_validate_branch) ; \
c4_release_bump $ver ; \
c4_release_commit $ver $branch \
)
}
function c4_release_redo()
{
( \
set -euxo pipefail ; \
ver=$(_c4_validate_ver $1) ; \
branch=$(_c4_validate_branch) ; \
c4_release_delete $ver ; \
c4_release_bump $ver ; \
c4_release_amend $ver $branch \
)
}
function c4_release_bump()
{
( \
set -euxo pipefail ; \
ver=$(_c4_validate_ver $1) ; \
tbump --non-interactive --only-patch $ver \
)
}
function c4_release_commit()
{
( \
set -euxo pipefail ; \
ver=$(_c4_validate_ver $1) ; \
branch=$(_c4_validate_branch) ; \
tag=v$ver ; \
git add -u ; \
git commit -m $tag ; \
git tag --annotate --message $tag $tag ; \
)
}
function c4_release_amend()
{
( \
set -euxo pipefail ; \
ver=$(_c4_validate_ver $1) ; \
branch=$(_c4_validate_branch) ; \
tag=v$ver ; \
git add -u ; \
git commit --amend -m $tag ; \
git tag --annotate --message $tag $tag ; \
)
}
function c4_release_delete()
{
( \
set -euxo pipefail ; \
ver=$(_c4_validate_ver $1) ; \
git tag -d v$ver ; \
git push origin :v$ver \
)
}
function c4_release_push()
{
( \
set -euxo pipefail ; \
ver=$(_c4_validate_ver $1) ; \
branch=$(_c4_validate_branch) ; \
tag=v$ver ; \
git push origin $branch ; \
git push --tags origin $tag \
)
}
function c4_release_force_push()
{
( \
set -euxo pipefail ; \
ver=$(_c4_validate_ver $1) ; \
branch=$(_c4_validate_branch) ; \
tag=v$ver ; \
git push -f origin $branch ; \
git push -f --tags origin $tag \
)
}
function _c4_validate_ver()
{
ver=$1
if [ -z "$ver" ] ; then \
exit 1
fi
ver=$(echo $ver | sed "s:v\(.*\):\1:")
#sver=$(echo $ver | sed "s:\([0-9]*\.[0-9]*\..[0-9]*\).*:\1:")
if [ ! -f changelog/$ver.md ] ; then \
if [ -f changelog/current.md ] ; then
git mv changelog/current.md changelog/$ver.md
touch changelog/current.md
git add changelog/current.md
else
echo "ERROR: could not find changelog/$ver.md or changelog/current.md"
exit 1
fi
fi
echo $ver
}
function _c4_validate_branch()
{
branch=$(git rev-parse --abbrev-ref HEAD)
if [ "$branch" != "master" ] ; then
echo "ERROR: release branch must be master"
exit 1
fi
echo $branch
}

View File

@@ -1,306 +0,0 @@
#!/usr/bin/env bash
set -x
# input environment variables:
# OS: the operating system
# CXX_: the compiler version. eg, g++-9 or clang++-6.0
# BT: the build type
# VG: whether to install valgrind
# ARM: whether to arm cross-compiler and emulator
# GITHUB_WORKFLOW: when run from github
# API: whether to install swig
# CMANY: whether to install cmany
#-------------------------------------------------------------------------------
function c4_install_test_requirements()
{
os=$1
case "$os" in
ubuntu*)
c4_install_test_requirements_ubuntu
return 0
;;
macos*)
c4_install_test_requirements_macos
return 0
;;
win*)
c4_install_test_requirements_windows
return 0
;;
*)
return 0
;;
esac
}
function c4_install_test_requirements_windows()
{
if [ "$CMANY" == "ON" ] ; then
pip install cmany
fi
if [ "$API" == "ON" ] ; then
choco install swig
which swig
fi
# ensure chocolatey does not override cmake's cpack
which cpack
choco_cpack="/c/ProgramData/Chocolatey/bin/cpack.exe"
if [ -f $choco_cpack ] ; then
newname=$(echo $choco_cpack | sed 's:cpack:choco-cpack:')
mv -vf $choco_cpack $newname
fi
which cpack
}
function c4_install_test_requirements_macos()
{
if [ "$CMANY" == "ON" ] ; then
sudo pip3 install cmany
fi
}
function c4_install_test_requirements_ubuntu()
{
APT_PKG="" # all
PIP_PKG=""
c4_gather_test_requirements_ubuntu
echo "apt packages: $APT_PKG"
echo "pip packages: $PIP_PKG"
c4_install_test_requirements_ubuntu_impl
echo 'INSTALL COMPLETE!'
}
function c4_install_all_possible_requirements_ubuntu()
{
export CXX_=all
export BT=Coverage
APT_PKG="" # all
PIP_PKG=""
sudo dpkg --add-architecture i386
c4_gather_test_requirements_ubuntu
_c4_add_arm_compilers
echo "apt packages: $APT_PKG"
echo "pip packages: $PIP_PKG"
c4_install_test_requirements_ubuntu_impl
echo 'INSTALL COMPLETE!'
}
function c4_gather_test_requirements_ubuntu()
{
if [ "$GITHUB_WORKFLOW" != "" ] ; then
sudo dpkg --add-architecture i386
else
_add_apt build-essential
_add_apt cmake
fi
_add_apt linux-libc-dev:i386
_add_apt libc6:i386
_add_apt libc6-dev:i386
_add_apt libc6-dbg:i386
_c4_addlibcxx
_c4_gather_compilers "$CXX_"
_add_apt python3-setuptools
_add_apt python3-pip
#_add_apt iwyu
#_add_apt cppcheck
#_add_pip cpplint
# oclint?
if [ "$VG" == "ON" ] ; then
_add_apt valgrind
fi
if [ "$BT" == "Coverage" ]; then
_add_apt lcov
_add_apt libffi-dev
_add_apt libssl-dev
_add_pip requests[security]
_add_pip pyopenssl
_add_pip ndg-httpsclient
_add_pip pyasn1
_add_pip cpp-coveralls
fi
if [ "$CMANY" != "" ] ; then
_add_pip cmany
fi
case "$CXX_" in
arm*)
_c4_add_arm_compilers
;;
esac
}
function c4_install_test_requirements_ubuntu_impl()
{
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key 2>/dev/null | sudo apt-key add -
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | sudo apt-key add -
sudo -E apt-add-repository --yes 'deb https://apt.kitware.com/ubuntu/ bionic main'
sudo -E add-apt-repository --yes ppa:ubuntu-toolchain-r/test
if [ "$APT_PKG" != "" ] ; then
#sudo -E apt-get clean
sudo -E apt-get update
sudo -E apt-get install -y --force-yes $APT_PKG
fi
if [ "$PIP_PKG" != "" ]; then
sudo pip3 install $PIP_PKG
fi
}
#-------------------------------------------------------------------------------
function _c4_add_arm_compilers()
{
# this is going to be deprecated:
# https://askubuntu.com/questions/1243252/how-to-install-arm-none-eabi-gdb-on-ubuntu-20-04-lts-focal-fossa
sudo -E add-apt-repository --yes ppa:team-gcc-arm-embedded/ppa
_add_apt gcc-arm-embedded
_add_apt g++-arm-linux-gnueabihf
_add_apt g++-multilib-arm-linux-gnueabihf
_add_apt qemu
}
function _c4_gather_compilers()
{
cxx=$1
case $cxx in
g++-11 ) _c4_addgcc 11 ;;
g++-10 ) _c4_addgcc 10 ;;
g++-9 ) _c4_addgcc 9 ;;
g++-8 ) _c4_addgcc 8 ;;
g++-7 ) _c4_addgcc 7 ;;
g++-6 ) _c4_addgcc 6 ;;
g++-5 ) _c4_addgcc 5 ;;
#g++-4.9 ) _c4_addgcc 4.9 ;; # https://askubuntu.com/questions/1036108/install-gcc-4-9-at-ubuntu-18-04
g++-4.8 ) _c4_addgcc 4.8 ;;
clang++-12 ) _c4_addclang 12 ;;
clang++-11 ) _c4_addclang 11 ;;
clang++-10 ) _c4_addclang 10 ;;
clang++-9 ) _c4_addclang 9 ;;
clang++-8 ) _c4_addclang 8 ;;
clang++-7 ) _c4_addclang 7 ;;
clang++-6.0) _c4_addclang 6.0 ;;
clang++-5.0) _c4_addclang 5.0 ;;
clang++-4.0) _c4_addclang 4.0 ;;
clang++-3.9) _c4_addclang 3.9 ;;
all)
all="g++-11 g++-10 g++-9 g++-8 g++-7 g++-6 g++-5 clang++-12 clang++-11 clang++-10 clang++-9 clang++-8 clang++-7 clang++-6.0 clang++-5.0 clang++-4.0 clang++-3.9"
echo "installing all compilers: $all"
for cxx in $all ; do
_c4_gather_compilers $cxx
done
;;
"")
# use default compiler
;;
arm*)
;;
*)
echo "unknown compiler: $cxx"
exit 1
;;
esac
}
# add a gcc compiler
function _c4_addgcc()
{
gccversion=$1
case $gccversion in
5 )
_add_apt gcc-5 "deb http://dk.archive.ubuntu.com/ubuntu/ xenial main"
_add_apt gcc-5 "deb http://dk.archive.ubuntu.com/ubuntu/ xenial universe"
;;
*)
;;
esac
_add_apt g++-$gccversion
_add_apt g++-$gccversion-multilib
_add_apt libstdc++-$gccversion-dev
_add_apt lib32stdc++-$gccversion-dev
}
# add a clang compiler
function _c4_addclang()
{
clversion=$1
case $clversion in
# in 18.04, clang9 and later require PPAs
9 | 10 | 11 | 12 )
_add_apt clang-$clversion "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-$clversion main"
# libstdc++ is required
_c4_addgcc 11
_c4_addgcc 10
_c4_addgcc 9
;;
*)
_add_apt clang-$clversion
;;
esac
_add_apt g++-multilib # this is required for 32 bit https://askubuntu.com/questions/1057341/unable-to-find-stl-headers-in-ubuntu-18-04
_add_apt clang-tidy-$clversion
}
# add libc++
function _c4_addlibcxx()
{
_add_apt libc++1
_add_apt libc++abi-dev
_add_apt libc++-dev
_add_apt libc++1:i386
_add_apt libc++abi-dev:i386
_add_apt libc++-dev:i386
}
#-------------------------------------------------------------------------------
# add a pip package to the list
function _add_pip()
{
pkgs=$*
PIP_PKG="$PIP_PKG $pkgs"
echo "adding to pip packages: $pkgs"
}
# add a debian package to the list
function _add_apt()
{
pkgs=$1
sourceslist=$2
APT_PKG="$APT_PKG $pkgs"
echo "adding to apt packages: $pkgs"
_add_src "$sourceslist" "# for packages: $pkgs"
}
# add an apt source
function _add_src()
{
sourceslist=$1
comment=$2
if [ ! -z "$sourceslist" ] ; then
echo "adding apt source: $sourceslist"
sudo bash -c "cat >> /etc/apt/sources.list <<EOF
$comment
$sourceslist
EOF"
#cat /etc/apt/sources.list
fi
}

View File

@@ -1,410 +0,0 @@
#!/usr/bin/env bash
set -e
set -x
PROJ_DIR=$(pwd)
function c4_show_info()
{
set +x
env | sort
echo "PROJ_DIR=$PROJ_DIR"
echo "PROJ_PFX_TARGET=$PROJ_PFX_TARGET"
echo "PROJ_PFX_CMAKE=$PROJ_PFX_CMAKE"
echo "CMAKE_FLAGS=$CMAKE_FLAGS"
echo "NUM_JOBS_BUILD=$NUM_JOBS_BUILD"
echo "GITHUB_WORKSPACE=$GITHUB_WORKSPACE"
pwd
ls -lFhp
echo "BITLINKS=$BITLINKS"
for bl in shared64 static64 shared32 static32 ; do
if _c4skipbitlink $bl ; then
echo "skip $bl"
else
echo "exec $bl"
fi
done
echo "CXX_=$CXX_"
echo "BT=$BT"
echo "LINT=$LINT"
echo "SAN=$SAN"
echo "SAN_ONLY=$SAN"
echo "VG=$VG"
echo "BM=$BM"
echo "STD=$STD"
echo "ARM=$ARM"
echo "LIBCXX=$LIBCXX"
echo "VERBOSE_MAKEFILES=$VERBOSE_MAKEFILES"
which cmake
cmake --version
case "$CXX_" in
xcode)
# https://gist.github.com/nlutsenko/ee245fbd239087d22137
echo "number of cores=$(sysctl -n hw.ncpu)"
#defaults read com.apple.dt.xcodebuild | grep -i Number | grep -i Build
#defaults read com.apple.dt.Xcode | grep -i Number | grep -i Tasks
;;
gcc*|g++*|*clang*)
echo "number of cores=$(nproc)"
$CXX_ --version
;;
esac
set -x
git branch
git rev-parse HEAD
git tag || echo
git log -1 --format='%H'
}
function _c4bits()
{
case "$1" in
shared64|static64|arm64) echo 64 ;;
shared32|static32|arm32|arm) echo 32 ;;
*) exit 1 ;;
esac
}
function _c4linktype()
{
case "$1" in
shared64|shared32) echo shared ;;
static64|static32) echo static ;;
*) exit 1 ;;
esac
}
function _c4skipbitlink()
{
bitlink___=$1
if [ -z "$BITLINKS" ] ; then
return 1 # return nonzero as failure, meaning DO NOT SKIP
fi
for bl___ in $BITLINKS ; do
if [ "${bl___}" == "${bitlink___}" ] ; then
return 1 # return nonzero as failure, meaning DO NOT SKIP
fi
done
return 0 # return nonzero as success, meaning DO SKIP
}
function c4_build_test()
{
c4_build_target $* test-build
}
function c4_run_test()
{
c4_run_target $* test
}
function c4_build_target() # runs in parallel
{
if _c4skipbitlink "$1" ; then return 0 ; fi
id=$1
target=$2
if [ ! -z "$target" ] ; then
target="--target $target"
fi
build_dir=`pwd`/build/$id
export CTEST_OUTPUT_ON_FAILURE=1
# watchout: the `--parallel` flag to `cmake --build` is broken:
# https://discourse.cmake.org/t/parallel-does-not-really-enable-parallel-compiles-with-msbuild/964/10
# https://gitlab.kitware.com/cmake/cmake/-/issues/20564
cmake --build $build_dir --config $BT $target -- $(_c4_generator_build_flags) $(_c4_parallel_build_flags)
}
function c4_run_target() # does not run in parallel
{
if _c4skipbitlink "$1" ; then return 0 ; fi
id=$1
target=$2
build_dir=`pwd`/build/$id
export CTEST_OUTPUT_ON_FAILURE=1
cmake --build $build_dir --config $BT --target $target -- $(_c4_generator_build_flags)
}
function c4_package()
{
if _c4skipbitlink "$1" ; then return 0 ; fi
id=$1
generator=$2
build_dir=`pwd`/build/$id
if [ -z "$generator" ] ; then
c4_run_target $id package
else
( cd $build_dir ; cpack -G $generator )
fi
}
function c4_submit_coverage()
{
if [ "$BT" != "Coverage" ] ; then
echo "build type is \"$BT\": no coverage to submit"
return 0
fi
if _c4skipbitlink "$1" ; then return 0 ; fi
id=$1
coverage_service=$2
build_dir=`pwd`/build/$id
echo "Submitting coverage data: $build_dir --> $coverage_service"
cmake --build $build_dir --config $BT --target ${PROJ_PFX_TARGET}coverage-submit-$coverage_service
}
# WIP
function c4_run_static_analysis()
{
if _c4skipbitlink "$1" ; then return 0 ; fi
id=$1
linktype=$(_c4linktype $id)
build_dir=`pwd`/build/$id
# https://blog.kitware.com/static-checks-with-cmake-cdash-iwyu-clang-tidy-lwyu-cpplint-and-cppcheck/
pushd $PROJ_DIR
}
function c4_cfg_test()
{
if _c4skipbitlink "$1" ; then return 0 ; fi
id=$1
#
build_dir=`pwd`/build/$id
install_dir=`pwd`/install/$id
mkdir -p $build_dir
mkdir -p $install_dir
#
if [ "$TOOLCHAIN" != "" ] ; then
toolchain_file=`pwd`/$TOOLCHAIN
if [ ! -f "$toolchain_file" ] ; then
echo "ERROR: toolchain not found: $toolchain_file"
exit 1
fi
_addcmkflags -DCMAKE_TOOLCHAIN_FILE=$toolchain_file
else
bits=$(_c4bits $id)
linktype=$(_c4linktype $id)
case "$linktype" in
static) _addcmkflags -DBUILD_SHARED_LIBS=OFF ;;
shared) _addcmkflags -DBUILD_SHARED_LIBS=ON ;;
*)
echo "ERROR: unknown linktype: $linktype"
exit 1
;;
esac
fi
if [ "$STD" != "" ] ; then
_addcmkflags -DC4_CXX_STANDARD=$STD
_addprojflags CXX_STANDARD=$STD
fi
if [ "$LIBCXX" != "" ] ; then
_addprojflags USE_LIBCXX=$LIBCXX
fi
#
if [ "$DEV" != "OFF" ] ; then
_addprojflags DEV=ON
fi
case "$LINT" in
all ) _addprojflags LINT=ON LINT_TESTS=ON LINT_CLANG_TIDY=ON LINT_PVS_STUDIO=ON ;;
clang-tidy) _addprojflags LINT=ON LINT_TESTS=ON LINT_CLANG_TIDY=ON LINT_PVS_STUDIO=OFF ;;
pvs-studio) _addprojflags LINT=ON LINT_TESTS=ON LINT_CLANG_TIDY=OFF LINT_PVS_STUDIO=ON ;;
* ) _addprojflags LINT=OFF ;;
esac
case "$SAN" in
ALL) _addprojflags SANITIZE=ON ;;
A ) _addprojflags SANITIZE=ON ASAN=ON TSAN=OFF MSAN=OFF UBSAN=OFF ;;
T ) _addprojflags SANITIZE=ON ASAN=OFF TSAN=ON MSAN=OFF UBSAN=OFF ;;
M ) _addprojflags SANITIZE=ON ASAN=OFF TSAN=OFF MSAN=ON UBSAN=OFF ;;
UB ) _addprojflags SANITIZE=ON ASAN=OFF TSAN=OFF MSAN=OFF UBSAN=ON ;;
* ) _addprojflags SANITIZE=OFF ;;
esac
case "$SAN_ONLY" in
ON) _addprojflags SANITIZE_ONLY=ON ;;
* ) _addprojflags SANITIZE_ONLY=OFF ;;
esac
case "$VG" in
ON) _addprojflags VALGRIND=ON VALGRIND_SGCHECK=OFF ;; # FIXME SGCHECK should be ON
* ) _addprojflags VALGRIND=OFF VALGRIND_SGCHECK=OFF ;;
esac
case "$BM" in
ON) _addprojflags BUILD_BENCHMARKS=ON ;;
* ) _addprojflags BUILD_BENCHMARKS=OFF ;;
esac
if [ "$BT" == "Coverage" ] ; then
# the coverage repo tokens can be set in the travis environment:
# export CODECOV_TOKEN=.......
# export COVERALLS_REPO_TOKEN=.......
_addprojflags COVERAGE_CODECOV=ON COVERAGE_CODECOV_SILENT=ON
_addprojflags COVERAGE_COVERALLS=ON COVERAGE_COVERALLS_SILENT=ON
fi
if [ ! -z "$VERBOSE_MAKEFILES" ] ; then
_addcmkflags -DCMAKE_VERBOSE_MAKEFILES=$VERBOSE_MAKEFILES
fi
_addcmkflags -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
if [ ! -z "$CMAKE_FLAGS" ] ; then
_addcmkflags $CMAKE_FLAGS
fi
echo "building with additional cmake flags: $CMFLAGS"
export C4_EXTERN_DIR=`pwd`/build/extern
mkdir -p $C4_EXTERN_DIR
cmake --version
pwd
#
# bash quote handling is a fiasco, and I could not find a way of storing
# quoted strings in variables and then expand the variables with correct quotes
# so we have to do this precious jewell of chicanery:
case "$CXX_" in
vs2019)
g='Visual Studio 16 2019'
case "$bits" in
64) a=x64 ;;
32) a=Win32 ;;
esac
cmake -S $PROJ_DIR -B $build_dir -DCMAKE_INSTALL_PREFIX="$install_dir" \
-DCMAKE_BUILD_TYPE=$BT -G "$g" -A $a $CMFLAGS
;;
vs2017)
case "$bits" in
64) g="Visual Studio 15 2017 Win64" ;;
32) g="Visual Studio 15 2017" ;;
esac
cmake -S $PROJ_DIR -B $build_dir -DCMAKE_INSTALL_PREFIX="$install_dir" \
-DCMAKE_BUILD_TYPE=$BT -G "$g" $CMFLAGS
;;
xcode)
g=Xcode
case "$bits" in
64) a="x86_64" ;;
32) a="i386"
exit 1 # i386 is deprecated in xcode
;;
esac
cmake -S $PROJ_DIR -B $build_dir -DCMAKE_INSTALL_PREFIX="$install_dir" \
-DCMAKE_BUILD_TYPE=$BT -G "$g" -DCMAKE_OSX_ARCHITECTURES=$a $CMFLAGS
;;
arm*|"") # make sure arm* comes before *g++ or *gcc*
cmake -S $PROJ_DIR -B $build_dir -DCMAKE_INSTALL_PREFIX="$install_dir" \
-DCMAKE_BUILD_TYPE=$BT $CMFLAGS
;;
*g++*|*gcc*|*clang*)
export CC_=$(echo "$CXX_" | sed 's:clang++:clang:g' | sed 's:g++:gcc:g')
_c4_choose_clang_tidy $CXX_
cmake -S $PROJ_DIR -B $build_dir -DCMAKE_INSTALL_PREFIX="$install_dir" \
-DCMAKE_BUILD_TYPE=$BT $CMFLAGS \
-DCMAKE_C_COMPILER=$CC_ -DCMAKE_CXX_COMPILER=$CXX_ \
-DCMAKE_C_FLAGS="-std=c99 -m$bits" -DCMAKE_CXX_FLAGS="-m$bits"
cmake --build $build_dir --target help | sed 1d | sort
;;
em++)
emcmake cmake -S $PROJ_DIR -B $build_dir -DCMAKE_INSTALL_PREFIX="$install_dir" \
-DCMAKE_BUILD_TYPE=$BT $CMFLAGS -DCMAKE_CXX_FLAGS="-s DISABLE_EXCEPTION_CATCHING=0"
;;
*)
echo "unknown compiler"
exit 1
;;
esac
}
function _c4_choose_clang_tidy()
{
cxx=$1
# only for clang compilers.
case $cxx in
clang*)
# try with version first
clang_tidy_ver=$(echo $cxx | sed "s:++:-tidy:")
clang_tidy=$(echo $cxx | sed "s:++.*:-tidy:")
for n in $clang_tidy_ver $clang_tidy ; do
exe=$(which $n)
echo "searching for $n: $exe"
if [ -z "$exe" ] ; then
echo "could not find $clang_tidy"
else
_addcmkflags "-DCLANG_TIDY=$exe"
return 0
fi
done
echo "error: could not find clang-tidy for $cxx"
exit 1
;;
esac
}
# add cmake flags without project prefix
function _addcmkflags()
{
for f in $* ; do
CMFLAGS="$CMFLAGS ${f}"
done
}
# add cmake flags with project prefix
function _addprojflags()
{
for f in $* ; do
CMFLAGS="$CMFLAGS -D${PROJ_PFX_CMAKE}${f}"
done
}
function _c4_parallel_build_flags()
{
case "$CXX_" in
vs2019|vs2017|vs2015)
# https://docs.microsoft.com/en-us/visualstudio/msbuild/msbuild-command-line-reference?view=vs-2019
# https://stackoverflow.com/questions/2619198/how-to-get-number-of-cores-in-win32
if [ -z "$NUM_JOBS_BUILD" ] ; then
echo "/maxcpucount:$NUMBER_OF_PROCESSORS"
else
echo "/maxcpucount:$NUM_JOBS_BUILD"
fi
;;
xcode)
# https://stackoverflow.com/questions/5417835/how-to-modify-the-number-of-parallel-compilation-with-xcode
# https://gist.github.com/nlutsenko/ee245fbd239087d22137
if [ -z "$NUM_JOBS_BUILD" ] ; then
echo "-IDEBuildOperationMaxNumberOfConcurrentCompileTasks=$(sysctl -n hw.ncpu)"
else
echo "-IDEBuildOperationMaxNumberOfConcurrentCompileTasks=$NUM_JOBS_BUILD"
fi
;;
*g++*|*gcc*|*clang*|em++)
if [ -z "$NUM_JOBS_BUILD" ] ; then
echo "-j $(nproc)"
else
echo "-j $NUM_JOBS_BUILD"
fi
;;
"") # allow empty compiler
;;
*)
echo "unknown compiler"
exit 1
;;
esac
}
function _c4_generator_build_flags()
{
case "$CXX_" in
vs2019|vs2017|vs2015)
;;
xcode)
# WTF???
# https://github.com/biojppm/rapidyaml/pull/97/checks?check_run_id=1504677928#step:7:964
# https://stackoverflow.com/questions/51153525/xcode-10-unable-to-attach-db-error
echo "-UseModernBuildSystem=NO"
;;
*g++*|*gcc*|*clang*|em++)
;;
"") # allow empty compiler
;;
*)
echo "unknown compiler"
exit 1
;;
esac
}

View File

@@ -1,80 +0,0 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
# 1) download and install vagrant: https://www.vagrantup.com/downloads.html
# (do not install ubuntu's 14.04 16.04 version, see https://stackoverflow.com/questions/22717428/vagrant-error-failed-to-mount-folders-in-linux-guest ):
# 2) vagrant plugin install vagrant-vbguest
# 3) vagrant up --provider virtualbox
# 4) vagrant ssh
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure(2) do |config|
# The most common configuration options are documented and commented below.
# For a complete reference, please see the online documentation at
# https://docs.vagrantup.com.
# Every Vagrant development environment requires a box. You can search for
# boxes at https://atlas.hashicorp.com/search.
config.vm.box = "generic/ubuntu1804"
# Disable automatic box update checking. If you disable this, then
# boxes will only be checked for updates when the user runs
# `vagrant box outdated`. This is not recommended.
# config.vm.box_check_update = false
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
# config.vm.network "forwarded_port", guest: 80, host: 8080
#config.ssh.username = 'travis'
#config.ssh.password = 'travis'
# Create a private network, which allows host-only access to the machine
# using a specific IP.
# config.vm.network "private_network", ip: "192.168.33.10"
# Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on
# your network.
# config.vm.network "public_network"
# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
config.vm.synced_folder "../../../..", "/vagrant"
#config.vm.synced_folder '.', '/vagrant', disabled: true
# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
# Example for VirtualBox:
#
# config.vm.provider "virtualbox" do |vb|
# # Display the VirtualBox GUI when booting the machine
# vb.gui = true
#
# # Customize the amount of memory on the VM:
# vb.memory = "1024"
# end
#
# View the documentation for the provider you are using for more
# information on available options.
# Define a Vagrant Push strategy for pushing to Atlas. Other push strategies
# such as FTP and Heroku are also available. See the documentation at
# https://docs.vagrantup.com/v2/push/atlas.html for more information.
# config.push.define "atlas" do |push|
# push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME"
# end
# Enable provisioning with a shell script. Additional provisioners such as
# Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
# documentation for more information about their specific syntax and use.
#config.vm.provision "shell", path: "travis-install.sh"
end

View File

@@ -1,71 +0,0 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
# The most common configuration options are documented and commented below.
# For a complete reference, please see the online documentation at
# https://docs.vagrantup.com.
# Every Vagrant development environment requires a box. You can search for
# boxes at https://vagrantcloud.com/search.
config.vm.box = "ramsey/macos-catalina"
config.vm.box_version = "1.0.0"
# Disable automatic box update checking. If you disable this, then
# boxes will only be checked for updates when the user runs
# `vagrant box outdated`. This is not recommended.
# config.vm.box_check_update = false
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
# NOTE: This will enable public access to the opened port
# config.vm.network "forwarded_port", guest: 80, host: 8080
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine and only allow access
# via 127.0.0.1 to disable public access
# config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
# Create a private network, which allows host-only access to the machine
# using a specific IP.
# config.vm.network "private_network", ip: "192.168.33.10"
# Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on
# your network.
# config.vm.network "public_network"
# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# config.vm.synced_folder "../data", "/vagrant_data"
# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
# Example for VirtualBox:
#
# config.vm.provider "virtualbox" do |vb|
# # Display the VirtualBox GUI when booting the machine
# vb.gui = true
#
# # Customize the amount of memory on the VM:
# vb.memory = "1024"
# end
#
# View the documentation for the provider you are using for more
# information on available options.
# Enable provisioning with a shell script. Additional provisioners such as
# Ansible, Chef, Docker, Puppet and Salt are also available. Please see the
# documentation for more information about their specific syntax and use.
# config.vm.provision "shell", inline: <<-SHELL
# apt-get update
# apt-get install -y apache2
# SHELL
end

View File

@@ -1,71 +0,0 @@
#!/usr/bin/env bash
set -x
# https://askubuntu.com/questions/735201/installing-clang-3-8-on-ubuntu-14-04-3
wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key | sudo apt-key add -
done=$(grep C4STL /etc/apt/sources.list)
if [ -z "$done" ] ; then
cat >> /etc/apt/sources.list <<EOF
# C4STL
# http://apt.llvm.org/
#deb http://llvm.org/apt/trusty/ llvm-toolchain-trusty-3.7 main
#deb http://llvm.org/apt/trusty/ llvm-toolchain-trusty-3.8 main
deb http://llvm.org/apt/trusty/ llvm-toolchain-trusty-3.9 main
deb http://llvm.org/apt/trusty/ llvm-toolchain-trusty-4.0 main
#deb http://llvm.org/apt/trusty/ llvm-toolchain-trusty-5.0 main
EOF
fi
sudo -E apt-get install -y software-properties-common python-software-properties
sudo -E add-apt-repository -y ppa:ubuntu-toolchain-r/test
sudo -E add-apt-repository -y ppa:george-edison55/cmake-3.x
sudo -E apt-get -yq update
sudo -E apt-get install -yq --force-yes \
build-essential \
cmake \
g++-5 \
g++-5-multilib \
g++-6 \
g++-6-multilib \
g++-7 \
g++-7-multilib \
g++-8 \
g++-8-multilib \
g++-9 \
g++-9-multilib \
g++-10 \
g++-10-multilib \
g++-11 \
g++-11-multilib \
clang-3.7 \
clang-3.8 \
clang-3.9 \
clang-4.0 \
swig3.0 \
libssl-dev \
zlib1g-dev \
libbz2-dev \
libreadline-dev \
libsqlite3-dev \
wget \
curl \
llvm \
libncurses5-dev \
libncursesw5-dev \
xz-utils \
tk-dev \
libffi-dev \
liblzma-dev \
python-openssl \
git \
python3 \
python3-pip \
python3-venv
sudo -E pip install cmany
exit 0

View File

@@ -1,116 +0,0 @@
name: rarearchs
defaults:
#if: "!contains(github.event.head_commit.message, 'skip ci')" # SKIP
run:
# Use a bash shell so we can use the same syntax for environment variable
# access regardless of the host operating system
shell: bash -e -x {0}
on:
# https://github.community/t/how-to-trigger-an-action-on-push-or-pull-request-but-not-both/16662
workflow_dispatch:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
rarearchs:
name: ${{matrix.arch}}/c++${{matrix.std}}/${{matrix.bt}}
continue-on-error: true
if: always() # https://stackoverflow.com/questions/62045967/github-actions-is-there-a-way-to-continue-on-error-while-still-getting-correct
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
include:
- {std: 11, bt: Debug , arch: aarch64, distro: ubuntu20.04}
- {std: 11, bt: Release, arch: aarch64, distro: ubuntu20.04}
- {std: 14, bt: Debug , arch: aarch64, distro: ubuntu20.04}
- {std: 14, bt: Release, arch: aarch64, distro: ubuntu20.04}
- {std: 17, bt: Debug , arch: aarch64, distro: ubuntu20.04}
- {std: 17, bt: Release, arch: aarch64, distro: ubuntu20.04}
#
- {std: 11, bt: Debug , arch: ppc64le, distro: ubuntu20.04}
- {std: 11, bt: Release, arch: ppc64le, distro: ubuntu20.04}
- {std: 14, bt: Debug , arch: ppc64le, distro: ubuntu20.04}
- {std: 14, bt: Release, arch: ppc64le, distro: ubuntu20.04}
- {std: 17, bt: Debug , arch: ppc64le, distro: ubuntu20.04}
- {std: 17, bt: Release, arch: ppc64le, distro: ubuntu20.04}
#
- {std: 11, bt: Debug , arch: s390x , distro: ubuntu20.04}
- {std: 11, bt: Release, arch: s390x , distro: ubuntu20.04}
- {std: 14, bt: Debug , arch: s390x , distro: ubuntu20.04}
- {std: 14, bt: Release, arch: s390x , distro: ubuntu20.04}
- {std: 17, bt: Debug , arch: s390x , distro: ubuntu20.04}
- {std: 17, bt: Release, arch: s390x , distro: ubuntu20.04}
#
#- {std: 11, bt: Debug , arch: armv6 , distro: bullseye}
#- {std: 11, bt: Release, arch: armv6 , distro: bullseye}
#- {std: 14, bt: Debug , arch: armv6 , distro: bullseye}
#- {std: 14, bt: Release, arch: armv6 , distro: bullseye}
#- {std: 17, bt: Debug , arch: armv6 , distro: bullseye}
#- {std: 17, bt: Release, arch: armv6 , distro: bullseye}
#
#- {std: 11, bt: Debug , arch: armv7 , distro: ubuntu20.04}
#- {std: 11, bt: Release, arch: armv7 , distro: ubuntu20.04}
#- {std: 14, bt: Debug , arch: armv7 , distro: ubuntu20.04}
#- {std: 14, bt: Release, arch: armv7 , distro: ubuntu20.04}
#- {std: 17, bt: Debug , arch: armv7 , distro: ubuntu20.04}
#- {std: 17, bt: Release, arch: armv7 , distro: ubuntu20.04}
steps:
- {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive}}
- name: test
uses: uraimo/run-on-arch-action@v2.0.5
with:
arch: ${{matrix.arch}}
distro: ${{matrix.distro}}
install: |
set -x
apt-get update -y
apt-get install -y \
git \
build-essential
# arm platforms need an up-to-date cmake:
# https://gitlab.kitware.com/cmake/cmake/-/issues/20568
if [ "${{matrix.arch}}" == "armv6" ] || [ "${{matrix.arch}}" == "armv7" ] ; then
apt-get install -y \
gpg \
wget \
apt-transport-https
wget --no-check-certificate -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null
echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ focal main' | tee /etc/apt/sources.list.d/kitware.list >/dev/null
apt-get update -y
rm /usr/share/keyrings/kitware-archive-keyring.gpg
apt-get install kitware-archive-keyring
apt-get update -y
fi
apt-get install -y cmake cmake-data
cmake --version
run: |
set -x
uname -a
pwd
ls -lFhp .
#
bdir=build_${{matrix.arch}}_${{matrix.bt}}_${{matrix.std}}
idir=install_${{matrix.arch}}_${{matrix.bt}}_${{matrix.std}}
mkdir -p $bdir
#
cmake -S . -B $bdir \
-DCMAKE_INSTALL_PREFIX=$idir \
-DCMAKE_BUILD_TYPE=${{matrix.bt}} \
-DC4_CXX_STANDARD=${{matrix.std}} \
-DCXX_STANDARD=${{matrix.std}} \
-DC4CORE_DEV=ON \
-DC4CORE_BUILD_BENCHMARKS=OFF \
-DC4CORE_SANITIZE=OFF \
-DC4CORE_LINT=OFF \
-DC4CORE_VALGRIND=OFF
#
cmake --build $bdir -j --target c4core-test-build
#
cmake --build $bdir --target c4core-test-run

View File

@@ -1,87 +0,0 @@
name: benchmarks
defaults:
run:
# Use a bash shell so we can use the same syntax for environment variable
# access regardless of the host operating system
shell: bash -e -x {0}
on:
# https://github.community/t/how-to-trigger-an-action-on-push-or-pull-request-but-not-both/16662
workflow_dispatch:
push:
branches:
- master
pull_request:
branches:
- master
env:
PROJ_PFX_TARGET: c4core-
PROJ_PFX_CMAKE: C4CORE_
CMAKE_FLAGS:
NUM_JOBS_BUILD: # 4
jobs:
benchmarks:
name: bm/c++${{matrix.std}}/${{matrix.cxx}}/${{matrix.bt}}
if: |
(!contains(github.event.head_commit.message, 'skip all')) ||
(!contains(github.event.head_commit.message, 'skip benchmarks')) ||
contains(github.event.head_commit.message, 'only benchmarks')
continue-on-error: true
runs-on: ${{matrix.os}}
strategy:
fail-fast: false
matrix:
include:
- {std: 11, cxx: g++-10, bt: Debug , os: ubuntu-18.04 , bitlinks: static64 static32}
- {std: 11, cxx: g++-10, bt: Release, os: ubuntu-18.04 , bitlinks: static64 static32}
- {std: 17, cxx: g++-10, bt: Debug , os: ubuntu-18.04 , bitlinks: static64 static32}
- {std: 17, cxx: g++-10, bt: Release, os: ubuntu-18.04 , bitlinks: static64 static32}
- {std: 20, cxx: g++-10, bt: Debug , os: ubuntu-18.04 , bitlinks: static64 static32}
- {std: 20, cxx: g++-10, bt: Release, os: ubuntu-18.04 , bitlinks: static64 static32}
- {std: 11, cxx: vs2019, bt: Debug , os: windows-latest, bitlinks: static64 static32}
- {std: 11, cxx: vs2019, bt: Release, os: windows-latest, bitlinks: static64 static32}
- {std: 17, cxx: vs2019, bt: Debug , os: windows-latest, bitlinks: static64 static32}
- {std: 17, cxx: vs2019, bt: Release, os: windows-latest, bitlinks: static64 static32}
- {std: 20, cxx: vs2019, bt: Debug , os: windows-latest, bitlinks: static64 static32}
- {std: 20, cxx: vs2019, bt: Release, os: windows-latest, bitlinks: static64 static32}
env: {BM: ON, STD: "${{matrix.std}}", CXX_: "${{matrix.cxx}}", BT: "${{matrix.bt}}", BITLINKS: "${{matrix.bitlinks}}", VG: "${{matrix.vg}}", SAN: "${{matrix.san}}", LINT: "${{matrix.lint}}", OS: "${{matrix.os}}"}
steps:
# use fetch-depth to ensure all tags are fetched
- {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive, fetch-depth: 0}}
- {name: install requirements, run: source .github/reqs.sh && c4_install_test_requirements $OS}
- {name: show info, run: source .github/setenv.sh && c4_show_info}
- name: shared64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared64
- {name: shared64-build, run: source .github/setenv.sh && c4_build_target shared64 c4core-bm-build}
- {name: shared64-run, run: export NUM_JOBS_BUILD=1 && source .github/setenv.sh && c4_run_target shared64 c4core-bm-run}
- name: static64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static64
- {name: static64-build, run: source .github/setenv.sh && c4_build_target static64 c4core-bm-build}
- {name: static64-run, run: export NUM_JOBS_BUILD=1 && source .github/setenv.sh && c4_run_target static64 c4core-bm-run}
- name: static32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static32
- {name: static32-build, run: source .github/setenv.sh && c4_build_target static32 c4core-bm-build}
- {name: static32-run, run: export NUM_JOBS_BUILD=1 && source .github/setenv.sh && c4_run_target static32 c4core-bm-run}
- name: shared32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared32
- {name: shared32-build, run: source .github/setenv.sh && c4_build_target shared32 c4core-bm-build}
- {name: shared32-run, run: export NUM_JOBS_BUILD=1 && source .github/setenv.sh && c4_run_target shared32 c4core-bm-run}
- name: gather benchmark results
run: |
set -x
desc=$(git describe || git rev-parse --short HEAD)
for bl in ${{matrix.bitlinks}} ; do
dst=$(echo benchmark_results/$desc/${{matrix.cxx}}-${{matrix.bt}}-c++${{matrix.std}}-$bl | sed 's:++-:xx:g' | sed 's:+:x:g')
mkdir -p $dst
find build -name bm-results
mv -vf build/$bl/bm/bm-results/* $dst/.
done
- name: upload benchmark result artifacts
uses: actions/upload-artifact@v2
with:
name: benchmark_results
path: benchmark_results/

View File

@@ -1,692 +0,0 @@
name: ci
defaults:
#if: "!contains(github.event.head_commit.message, 'skip ci')" # SKIP
run:
# Use a bash shell so we can use the same syntax for environment variable
# access regardless of the host operating system
shell: bash -e -x {0}
on:
- push
- pull_request
- workflow_dispatch
env:
PROJ_PFX_TARGET: c4core-
PROJ_PFX_CMAKE: C4CORE_
CMAKE_FLAGS:
NUM_JOBS_BUILD: # 4
# ubuntu-20.04:
# # https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-README.md
# gcc: 7.5.0, 8.4.0, 9.3.0, 10.2.0
# clang: 8.0.1, 9.0.1, 10.0.0
# ubuntu-18.04:
# # https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu1804-README.md
# gcc: 7.5.0, 8.4.0, 9.3.0, 10.1.0
# clang: 6.0.0, 8.0.0, 9.0.0
# ubuntu-16.04:
# # https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu1604-README.md
# gcc: 5.5.0, 7.5.0, 8.4.0, 9.3.0
# clang: 6.0.0, 8.0.0, 9.0.1
# macos-11.0: macOS Big Sur 11.0
# # https://github.com/actions/virtual-environments/blob/main/images/macos/macos-11.0-Readme.md
# Xcode 12.1 11.7
# clang/LLVM 10.0.1
# gcc-8 gcc-9
# macos-10.15: macOS Catalina 10.15
# # https://github.com/actions/virtual-environments/blob/main/images/macos/macos-10.15-Readme.md
# Xcode 12.1 11.7
# clang/LLVM 11.0.0
# gcc-8 gcc-9
# windows-2019:
# # https://github.com/actions/virtual-environments/blob/main/images/win/Windows2019-Readme.md
# vs2019
# windows-2016:
# # https://github.com/actions/virtual-environments/blob/main/images/win/Windows2019-Readme.md
# vs2017
jobs:
#----------------------------------------------------------------------------
test_coverage:
# if: github.ref == 'refs/heads/master'
continue-on-error: true
if: always() # https://stackoverflow.com/questions/62045967/github-actions-is-there-a-way-to-continue-on-error-while-still-getting-correct
runs-on: ${{matrix.os}}
strategy:
fail-fast: false
matrix:
include:
- {std: 11, cxx: g++-7, bt: Coverage, os: ubuntu-18.04}
- {std: 14, cxx: g++-7, bt: Coverage, os: ubuntu-18.04}
- {std: 17, cxx: g++-7, bt: Coverage, os: ubuntu-18.04}
env: {STD: "${{matrix.std}}", CXX_: "${{matrix.cxx}}", BT: "${{matrix.bt}}", BITLINKS: "${{matrix.bitlinks}}", VG: "${{matrix.vg}}", SAN: "${{matrix.san}}", LINT: "${{matrix.lint}}", OS: "${{matrix.os}}", CODECOV_TOKEN: "${{secrets.CODECOV_TOKEN}}", COVERALLS_REPO_TOKEN: "${{secrets.COVERALLS_REPO_TOKEN}}"}
steps:
- {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive}}
- {name: install requirements, run: source .github/reqs.sh && c4_install_test_requirements $OS}
- {name: show info, run: source .github/setenv.sh && c4_show_info}
- name: shared64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared64
- {name: shared64-build, run: source .github/setenv.sh && c4_build_test shared64}
- {name: shared64-run, run: source .github/setenv.sh && c4_run_test shared64}
- name: shared64-submit
run: |
source .github/setenv.sh
c4_submit_coverage shared64 codecov
#c4_submit_coverage shared64 coveralls # only accepts one submission per job
- name: static64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static64
- {name: static64-build, run: source .github/setenv.sh && c4_build_test static64}
- {name: static64-run, run: source .github/setenv.sh && c4_run_test static64}
- name: static64-submit
run: |
source .github/setenv.sh
c4_submit_coverage static64 codecov
c4_submit_coverage static64 coveralls
- name: static32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static32
- {name: static32-build, run: source .github/setenv.sh && c4_build_test static32}
- {name: static32-run, run: source .github/setenv.sh && c4_run_test static32}
- name: static32-submit
run: |
source .github/setenv.sh
c4_submit_coverage static32 codecov
#c4_submit_coverage static32 coveralls # only accepts one submission per job
- name: shared32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared32
- {name: shared32-build, run: source .github/setenv.sh && c4_build_test shared32}
- {name: shared32-run, run: source .github/setenv.sh && c4_run_test shared32}
- name: shared32-submit
run: |
source .github/setenv.sh
c4_submit_coverage shared32 codecov
#c4_submit_coverage shared32 coveralls # only accepts one submission per job
- name: static32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static32
- {name: static32-build, run: source .github/setenv.sh && c4_build_test static32}
- {name: static32-run, run: source .github/setenv.sh && c4_run_test static32}
- name: static32-submit
run: |
source .github/setenv.sh
c4_submit_coverage static32 codecov
#c4_submit_coverage static32 coveralls # only accepts one submission per job
#----------------------------------------------------------------------------
test_windows:
continue-on-error: true
if: always() # https://stackoverflow.com/questions/62045967/github-actions-is-there-a-way-to-continue-on-error-while-still-getting-correct
runs-on: ${{matrix.os}}
strategy:
fail-fast: false
matrix:
include:
- {std: 11, cxx: vs2017, bt: Debug , os: windows-2016, bitlinks: shared64 static32}
- {std: 11, cxx: vs2017, bt: Release, os: windows-2016, bitlinks: shared64 static32}
- {std: 14, cxx: vs2017, bt: Debug , os: windows-2016, bitlinks: shared64 static32}
- {std: 14, cxx: vs2017, bt: Release, os: windows-2016, bitlinks: shared64 static32}
- {std: 11, cxx: vs2019, bt: Debug , os: windows-2019, bitlinks: shared64 static32}
- {std: 11, cxx: vs2019, bt: Release, os: windows-2019, bitlinks: shared64 static32}
- {std: 14, cxx: vs2019, bt: Debug , os: windows-2019, bitlinks: shared64 static32}
- {std: 14, cxx: vs2019, bt: Release, os: windows-2019, bitlinks: shared64 static32}
- {std: 17, cxx: vs2019, bt: Debug , os: windows-2019, bitlinks: shared64 static32}
- {std: 17, cxx: vs2019, bt: Release, os: windows-2019, bitlinks: shared64 static32}
- {std: 20, cxx: vs2019, bt: Debug , os: windows-2019, bitlinks: shared64 static32}
- {std: 20, cxx: vs2019, bt: Release, os: windows-2019, bitlinks: shared64 static32}
env: {STD: "${{matrix.std}}", CXX_: "${{matrix.cxx}}", BT: "${{matrix.bt}}", BITLINKS: "${{matrix.bitlinks}}", VG: "${{matrix.vg}}", SAN: "${{matrix.san}}", LINT: "${{matrix.lint}}", OS: "${{matrix.os}}"}
steps:
- {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive}}
- {name: install requirements, run: source .github/reqs.sh && c4_install_test_requirements $OS}
- {name: show info, run: source .github/setenv.sh && c4_show_info}
- name: shared64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared64
- {name: shared64-build, run: source .github/setenv.sh && c4_build_test shared64}
- {name: shared64-run, run: source .github/setenv.sh && c4_run_test shared64}
- {name: shared64-pack, run: source .github/setenv.sh && c4_package shared64}
- name: static64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static64
- {name: static64-build, run: source .github/setenv.sh && c4_build_test static64}
- {name: static64-run, run: source .github/setenv.sh && c4_run_test static64}
- {name: static64-pack, run: source .github/setenv.sh && c4_package static64}
- name: shared32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared32
- {name: shared32-build, run: source .github/setenv.sh && c4_build_test shared32}
- {name: shared32-run, run: source .github/setenv.sh && c4_run_test shared32}
- {name: shared32-pack, run: source .github/setenv.sh && c4_package shared32}
- name: static32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static32
- {name: static32-build, run: source .github/setenv.sh && c4_build_test static32}
- {name: static32-run, run: source .github/setenv.sh && c4_run_test static32}
- {name: static32-pack, run: source .github/setenv.sh && c4_package static32}
#----------------------------------------------------------------------------
test_macosx:
continue-on-error: true
if: always() # https://stackoverflow.com/questions/62045967/github-actions-is-there-a-way-to-continue-on-error-while-still-getting-correct
runs-on: ${{matrix.os}}
strategy:
fail-fast: false
matrix:
include:
- {std: 11, cxx: xcode, bt: Debug , os: macos-11.0, bitlinks: shared64 static64}
- {std: 11, cxx: xcode, bt: Release, os: macos-11.0, bitlinks: shared64 static64}
- {std: 14, cxx: xcode, bt: Debug , os: macos-11.0, bitlinks: shared64 static64}
- {std: 14, cxx: xcode, bt: Release, os: macos-11.0, bitlinks: shared64 static64}
- {std: 17, cxx: xcode, bt: Debug , os: macos-11.0, bitlinks: shared64 static64}
- {std: 17, cxx: xcode, bt: Release, os: macos-11.0, bitlinks: shared64 static64}
env: {STD: "${{matrix.std}}", CXX_: "${{matrix.cxx}}", BT: "${{matrix.bt}}", BITLINKS: "${{matrix.bitlinks}}", VG: "${{matrix.vg}}", SAN: "${{matrix.san}}", LINT: "${{matrix.lint}}", OS: "${{matrix.os}}"}
steps:
- {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive}}
- {name: install requirements, run: source .github/reqs.sh && c4_install_test_requirements $OS}
- {name: show info, run: source .github/setenv.sh && c4_show_info}
- name: shared64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared64
- {name: shared64-build, run: source .github/setenv.sh && c4_build_test shared64}
- {name: shared64-run, run: source .github/setenv.sh && c4_run_test shared64}
- {name: shared64-pack, run: source .github/setenv.sh && c4_package shared64}
- name: static64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static64
- {name: static64-build, run: source .github/setenv.sh && c4_build_test static64}
- {name: static64-run, run: source .github/setenv.sh && c4_run_test static64}
- {name: static64-pack, run: source .github/setenv.sh && c4_package static64}
- name: shared32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared32
- {name: shared32-build, run: source .github/setenv.sh && c4_build_test shared32}
- {name: shared32-run, run: source .github/setenv.sh && c4_run_test shared32}
- {name: shared32-pack, run: source .github/setenv.sh && c4_package shared32}
- name: static32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static32
- {name: static32-build, run: source .github/setenv.sh && c4_build_test static32}
- {name: static32-run, run: source .github/setenv.sh && c4_run_test static32}
- {name: static32-pack, run: source .github/setenv.sh && c4_package static32}
#----------------------------------------------------------------------------
test_gcc_canary:
continue-on-error: true
if: always() # https://stackoverflow.com/questions/62045967/github-actions-is-there-a-way-to-continue-on-error-while-still-getting-correct
runs-on: ${{matrix.os}}
strategy:
fail-fast: false
matrix:
include:
- {std: 11, cxx: g++-7 , bt: Debug , os: ubuntu-18.04, bitlinks: shared64 static32}
- {std: 11, cxx: g++-7 , bt: Release, os: ubuntu-18.04, bitlinks: shared64 static32}
- {std: 20, cxx: g++-10 , bt: Debug , os: ubuntu-18.04, bitlinks: shared64 static32}
- {std: 20, cxx: g++-10 , bt: Release, os: ubuntu-18.04, bitlinks: shared64 static32}
- {std: 11, cxx: g++-5 , bt: Debug , os: ubuntu-16.04, bitlinks: shared64 static32}
- {std: 11, cxx: g++-5 , bt: Release, os: ubuntu-16.04, bitlinks: shared64 static32}
env: {STD: "${{matrix.std}}", CXX_: "${{matrix.cxx}}", BT: "${{matrix.bt}}", BITLINKS: "${{matrix.bitlinks}}", VG: "${{matrix.vg}}", SAN: "${{matrix.san}}", LINT: "${{matrix.lint}}", OS: "${{matrix.os}}"}
steps:
- {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive}}
- {name: install requirements, run: source .github/reqs.sh && c4_install_test_requirements $OS}
- {name: show info, run: source .github/setenv.sh && c4_show_info}
- name: shared64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared64
- {name: shared64-build, run: source .github/setenv.sh && c4_build_test shared64}
- {name: shared64-run, run: source .github/setenv.sh && c4_run_test shared64}
- {name: shared64-pack, run: source .github/setenv.sh && c4_package shared64}
- name: static64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static64
- {name: static64-build, run: source .github/setenv.sh && c4_build_test static64}
- {name: static64-run, run: source .github/setenv.sh && c4_run_test static64}
- {name: static64-pack, run: source .github/setenv.sh && c4_package static64}
- name: static32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static32
- {name: static32-build, run: source .github/setenv.sh && c4_build_test static32}
- {name: static32-run, run: source .github/setenv.sh && c4_run_test static32}
- {name: static32-pack, run: source .github/setenv.sh && c4_package static32}
- name: shared32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared32
- {name: shared32-build, run: source .github/setenv.sh && c4_build_test shared32}
- {name: shared32-run, run: source .github/setenv.sh && c4_run_test shared32}
- {name: shared32-pack, run: source .github/setenv.sh && c4_package shared32}
#----------------------------------------------------------------------------
test_clang_canary:
continue-on-error: true
if: always() # https://stackoverflow.com/questions/62045967/github-actions-is-there-a-way-to-continue-on-error-while-still-getting-correct
runs-on: ${{matrix.os}}
strategy:
fail-fast: false
matrix:
include:
- {std: 20, cxx: clang++-10 , bt: Debug , os: ubuntu-18.04, bitlinks: shared64 static32}
- {std: 20, cxx: clang++-10 , bt: Release, os: ubuntu-18.04, bitlinks: shared64 static32}
- {std: 11, cxx: clang++-6.0, bt: Debug , os: ubuntu-16.04, bitlinks: shared64 static32}
- {std: 11, cxx: clang++-6.0, bt: Release, os: ubuntu-16.04, bitlinks: shared64 static32}
env: {STD: "${{matrix.std}}", CXX_: "${{matrix.cxx}}", BT: "${{matrix.bt}}", BITLINKS: "${{matrix.bitlinks}}", VG: "${{matrix.vg}}", SAN: "${{matrix.san}}", LINT: "${{matrix.lint}}", OS: "${{matrix.os}}"}
steps:
- {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive}}
- {name: install requirements, run: source .github/reqs.sh && c4_install_test_requirements $OS}
- {name: show info, run: source .github/setenv.sh && c4_show_info}
- name: shared64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared64
- {name: shared64-build, run: source .github/setenv.sh && c4_build_test shared64}
- {name: shared64-run, run: source .github/setenv.sh && c4_run_test shared64}
- {name: shared64-pack, run: source .github/setenv.sh && c4_package shared64}
- name: static64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static64
- {name: static64-build, run: source .github/setenv.sh && c4_build_test static64}
- {name: static64-run, run: source .github/setenv.sh && c4_run_test static64}
- {name: static64-pack, run: source .github/setenv.sh && c4_package static64}
- name: static32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static32
- {name: static32-build, run: source .github/setenv.sh && c4_build_test static32}
- {name: static32-run, run: source .github/setenv.sh && c4_run_test static32}
- {name: static32-pack, run: source .github/setenv.sh && c4_package static32}
- name: shared32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared32
- {name: shared32-build, run: source .github/setenv.sh && c4_build_test shared32}
- {name: shared32-run, run: source .github/setenv.sh && c4_run_test shared32}
- {name: shared32-pack, run: source .github/setenv.sh && c4_package shared32}
#----------------------------------------------------------------------------
test_clang_tidy:
continue-on-error: true
if: always() # https://stackoverflow.com/questions/62045967/github-actions-is-there-a-way-to-continue-on-error-while-still-getting-correct
runs-on: ${{matrix.os}}
strategy:
fail-fast: false
matrix:
include:
# clang tidy takes a long time, so don't do multiple bits/linktypes
- {std: 11, cxx: clang++-9, bt: Debug , lint: clang-tidy, bitlinks: shared64, os: ubuntu-18.04}
- {std: 11, cxx: clang++-9, bt: Debug , lint: clang-tidy, bitlinks: shared32, os: ubuntu-18.04}
- {std: 11, cxx: clang++-9, bt: Debug , lint: clang-tidy, bitlinks: static64, os: ubuntu-18.04}
- {std: 11, cxx: clang++-9, bt: Debug , lint: clang-tidy, bitlinks: static32, os: ubuntu-18.04}
- {std: 11, cxx: clang++-9, bt: ReleaseWithDebInfo, lint: clang-tidy, bitlinks: shared64, os: ubuntu-18.04}
- {std: 11, cxx: clang++-9, bt: ReleaseWithDebInfo, lint: clang-tidy, bitlinks: shared32, os: ubuntu-18.04}
- {std: 11, cxx: clang++-9, bt: ReleaseWithDebInfo, lint: clang-tidy, bitlinks: static64, os: ubuntu-18.04}
- {std: 11, cxx: clang++-9, bt: ReleaseWithDebInfo, lint: clang-tidy, bitlinks: static32, os: ubuntu-18.04}
env: {STD: "${{matrix.std}}", CXX_: "${{matrix.cxx}}", BT: "${{matrix.bt}}", BITLINKS: "${{matrix.bitlinks}}", VG: "${{matrix.vg}}", SAN: "${{matrix.san}}", LINT: "${{matrix.lint}}", OS: "${{matrix.os}}"}
steps:
- {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive}}
- {name: install requirements, run: source .github/reqs.sh && c4_install_test_requirements $OS}
- {name: show info, run: source .github/setenv.sh && c4_show_info}
- name: shared64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared64
- {name: shared64-build, run: source .github/setenv.sh && c4_build_test shared64}
- {name: shared64-run, run: source .github/setenv.sh && c4_run_test shared64}
- {name: shared64-pack, run: source .github/setenv.sh && c4_package shared64}
- name: static64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static64
- {name: static64-build, run: source .github/setenv.sh && c4_build_test static64}
- {name: static64-run, run: source .github/setenv.sh && c4_run_test static64}
- {name: static64-pack, run: source .github/setenv.sh && c4_package static64}
- name: static32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static32
- {name: static32-build, run: source .github/setenv.sh && c4_build_test static32}
- {name: static32-run, run: source .github/setenv.sh && c4_run_test static32}
- {name: static32-pack, run: source .github/setenv.sh && c4_package static32}
- name: shared32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared32
- {name: shared32-build, run: source .github/setenv.sh && c4_build_test shared32}
- {name: shared32-run, run: source .github/setenv.sh && c4_run_test shared32}
- {name: shared32-pack, run: source .github/setenv.sh && c4_package shared32}
#----------------------------------------------------------------------------
test_gcc_extended:
continue-on-error: true
if: always() # https://stackoverflow.com/questions/62045967/github-actions-is-there-a-way-to-continue-on-error-while-still-getting-correct
runs-on: ${{matrix.os}}
strategy:
fail-fast: false
matrix:
include:
# VALGRIND
- {std: 11, cxx: g++-10, bt: Debug , vg: ON, os: ubuntu-18.04}
- {std: 11, cxx: g++-10, bt: Release, vg: ON, os: ubuntu-18.04}
- {std: 14, cxx: g++-10, bt: Debug , vg: ON, os: ubuntu-18.04}
- {std: 14, cxx: g++-10, bt: Release, vg: ON, os: ubuntu-18.04}
- {std: 17, cxx: g++-10, bt: Debug , vg: ON, os: ubuntu-18.04}
- {std: 17, cxx: g++-10, bt: Release, vg: ON, os: ubuntu-18.04}
- {std: 20, cxx: g++-10, bt: Debug , vg: ON, os: ubuntu-18.04}
- {std: 20, cxx: g++-10, bt: Release, vg: ON, os: ubuntu-18.04}
#
- {std: 11, cxx: g++-9, bt: Debug , os: ubuntu-18.04}
- {std: 11, cxx: g++-9, bt: Release, os: ubuntu-18.04}
- {std: 11, cxx: g++-8, bt: Debug , os: ubuntu-18.04}
- {std: 11, cxx: g++-8, bt: Release, os: ubuntu-18.04}
- {std: 11, cxx: g++-7, bt: Debug , os: ubuntu-18.04}
- {std: 11, cxx: g++-7, bt: Release, os: ubuntu-18.04}
- {std: 11, cxx: g++-6, bt: Debug , os: ubuntu-18.04}
- {std: 11, cxx: g++-6, bt: Release, os: ubuntu-18.04}
- {std: 11, cxx: g++-5, bt: Debug , os: ubuntu-18.04}
- {std: 11, cxx: g++-5, bt: Release, os: ubuntu-18.04}
env: {STD: "${{matrix.std}}", CXX_: "${{matrix.cxx}}", BT: "${{matrix.bt}}", BITLINKS: "${{matrix.bitlinks}}", VG: "${{matrix.vg}}", SAN: "${{matrix.san}}", LINT: "${{matrix.lint}}", OS: "${{matrix.os}}"}
steps:
- {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive}}
- {name: install requirements, run: source .github/reqs.sh && c4_install_test_requirements $OS}
- {name: show info, run: source .github/setenv.sh && c4_show_info}
- name: shared64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared64
- {name: shared64-build, run: source .github/setenv.sh && c4_build_test shared64}
- {name: shared64-run, run: source .github/setenv.sh && c4_run_test shared64}
- {name: shared64-pack, run: source .github/setenv.sh && c4_package shared64}
- name: static64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static64
- {name: static64-build, run: source .github/setenv.sh && c4_build_test static64}
- {name: static64-run, run: source .github/setenv.sh && c4_run_test static64}
- {name: static64-pack, run: source .github/setenv.sh && c4_package static64}
- name: static32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static32
- {name: static32-build, run: source .github/setenv.sh && c4_build_test static32}
- {name: static32-run, run: source .github/setenv.sh && c4_run_test static32}
- {name: static32-pack, run: source .github/setenv.sh && c4_package static32}
- name: shared32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared32
- {name: shared32-build, run: source .github/setenv.sh && c4_build_test shared32}
- {name: shared32-run, run: source .github/setenv.sh && c4_run_test shared32}
- {name: shared32-pack, run: source .github/setenv.sh && c4_package shared32}
#----------------------------------------------------------------------------
test_clang_extended:
continue-on-error: true
if: always() # https://stackoverflow.com/questions/62045967/github-actions-is-there-a-way-to-continue-on-error-while-still-getting-correct
runs-on: ${{matrix.os}}
strategy:
fail-fast: false
matrix:
include:
- {std: 20, cxx: clang++-10 , bt: Debug , vg: on, os: ubuntu-18.04}
- {std: 20, cxx: clang++-10 , bt: Release, vg: on, os: ubuntu-18.04}
- {std: 11, cxx: clang++-9 , bt: Debug , vg: on, os: ubuntu-18.04}
- {std: 11, cxx: clang++-9 , bt: Release, vg: on, os: ubuntu-18.04}
- {std: 11, cxx: clang++-8 , bt: Debug , vg: on, os: ubuntu-18.04}
- {std: 11, cxx: clang++-8 , bt: Release, vg: on, os: ubuntu-18.04}
- {std: 11, cxx: clang++-7 , bt: Debug , vg: on, os: ubuntu-18.04}
- {std: 11, cxx: clang++-7 , bt: Release, vg: on, os: ubuntu-18.04}
- {std: 11, cxx: clang++-6.0, bt: Debug , vg: on, os: ubuntu-18.04}
- {std: 11, cxx: clang++-6.0, bt: Release, vg: on, os: ubuntu-18.04}
- {std: 11, cxx: clang++-5.0, bt: Debug , vg: on, os: ubuntu-18.04}
- {std: 11, cxx: clang++-5.0, bt: Release, vg: on, os: ubuntu-18.04}
- {std: 11, cxx: clang++-4.0, bt: Debug , vg: on, os: ubuntu-18.04}
- {std: 11, cxx: clang++-4.0, bt: Release, vg: on, os: ubuntu-18.04}
- {std: 11, cxx: clang++-3.9, bt: Debug , vg: on, os: ubuntu-18.04}
- {std: 11, cxx: clang++-3.9, bt: Release, vg: on, os: ubuntu-18.04}
env: {STD: "${{matrix.std}}", CXX_: "${{matrix.cxx}}", BT: "${{matrix.bt}}", BITLINKS: "${{matrix.bitlinks}}", VG: "${{matrix.vg}}", SAN: "${{matrix.san}}", LINT: "${{matrix.lint}}", OS: "${{matrix.os}}"}
steps:
- {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive}}
- {name: install requirements, run: source .github/reqs.sh && c4_install_test_requirements $OS}
- {name: show info, run: source .github/setenv.sh && c4_show_info}
- name: shared64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared64
- {name: shared64-build, run: source .github/setenv.sh && c4_build_test shared64}
- {name: shared64-run, run: source .github/setenv.sh && c4_run_test shared64}
- {name: shared64-pack, run: source .github/setenv.sh && c4_package shared64}
- name: static64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static64
- {name: static64-build, run: source .github/setenv.sh && c4_build_test static64}
- {name: static64-run, run: source .github/setenv.sh && c4_run_test static64}
- {name: static64-pack, run: source .github/setenv.sh && c4_package static64}
- name: static32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static32
- {name: static32-build, run: source .github/setenv.sh && c4_build_test static32}
- {name: static32-run, run: source .github/setenv.sh && c4_run_test static32}
- {name: static32-pack, run: source .github/setenv.sh && c4_package static32}
- name: shared32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared32
- {name: shared32-build, run: source .github/setenv.sh && c4_build_test shared32}
- {name: shared32-run, run: source .github/setenv.sh && c4_run_test shared32}
- {name: shared32-pack, run: source .github/setenv.sh && c4_package shared32}
#----------------------------------------------------------------------------
test_clang_sanitize:
continue-on-error: true
if: always() # https://stackoverflow.com/questions/62045967/github-actions-is-there-a-way-to-continue-on-error-while-still-getting-correct
runs-on: ${{matrix.os}}
strategy:
fail-fast: false
matrix:
include:
# these jobs take much longer, so run only one bitlink pair per job to profit from parallelism
- {std: 11, cxx: clang++-10 , bt: Debug , vg: ON, san: ALL, bitlinks: shared64 static64, os: ubuntu-18.04}
- {std: 11, cxx: clang++-10 , bt: Debug , vg: ON, san: ALL, bitlinks: shared32 static32, os: ubuntu-18.04}
- {std: 11, cxx: clang++-10 , bt: Release, vg: ON, san: ALL, bitlinks: shared64 static64, os: ubuntu-18.04}
- {std: 11, cxx: clang++-10 , bt: Release, vg: ON, san: ALL, bitlinks: shared32 static32, os: ubuntu-18.04}
- {std: 14, cxx: clang++-10 , bt: Debug , vg: ON, san: ALL, bitlinks: shared64 static64, os: ubuntu-18.04}
- {std: 14, cxx: clang++-10 , bt: Debug , vg: ON, san: ALL, bitlinks: shared32 static32, os: ubuntu-18.04}
- {std: 14, cxx: clang++-10 , bt: Release, vg: ON, san: ALL, bitlinks: shared64 static64, os: ubuntu-18.04}
- {std: 14, cxx: clang++-10 , bt: Release, vg: ON, san: ALL, bitlinks: shared32 static32, os: ubuntu-18.04}
- {std: 17, cxx: clang++-10 , bt: Debug , vg: ON, san: ALL, bitlinks: shared64 static64, os: ubuntu-18.04}
- {std: 17, cxx: clang++-10 , bt: Debug , vg: ON, san: ALL, bitlinks: shared32 static32, os: ubuntu-18.04}
- {std: 17, cxx: clang++-10 , bt: Release, vg: ON, san: ALL, bitlinks: shared64 static64, os: ubuntu-18.04}
- {std: 17, cxx: clang++-10 , bt: Release, vg: ON, san: ALL, bitlinks: shared32 static32, os: ubuntu-18.04}
- {std: 20, cxx: clang++-10 , bt: Debug , vg: ON, san: ALL, bitlinks: shared64 static64, os: ubuntu-18.04}
- {std: 20, cxx: clang++-10 , bt: Debug , vg: ON, san: ALL, bitlinks: shared32 static32, os: ubuntu-18.04}
- {std: 20, cxx: clang++-10 , bt: Release, vg: ON, san: ALL, bitlinks: shared64 static64, os: ubuntu-18.04}
- {std: 20, cxx: clang++-10 , bt: Release, vg: ON, san: ALL, bitlinks: shared32 static32, os: ubuntu-18.04}
env: {STD: "${{matrix.std}}", CXX_: "${{matrix.cxx}}", BT: "${{matrix.bt}}", BITLINKS: "${{matrix.bitlinks}}", VG: "${{matrix.vg}}", SAN: "${{matrix.san}}", LINT: "${{matrix.lint}}", OS: "${{matrix.os}}"}
steps:
- {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive}}
- {name: install requirements, run: source .github/reqs.sh && c4_install_test_requirements $OS}
- {name: show info, run: source .github/setenv.sh && c4_show_info}
- name: shared64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared64
- {name: shared64-build, run: source .github/setenv.sh && c4_build_test shared64}
- {name: shared64-run, run: source .github/setenv.sh && c4_run_test shared64}
- {name: shared64-pack, run: source .github/setenv.sh && c4_package shared64}
- name: static64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static64
- {name: static64-build, run: source .github/setenv.sh && c4_build_test static64}
- {name: static64-run, run: source .github/setenv.sh && c4_run_test static64}
- {name: static64-pack, run: source .github/setenv.sh && c4_package static64}
- name: static32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static32
- {name: static32-build, run: source .github/setenv.sh && c4_build_test static32}
- {name: static32-run, run: source .github/setenv.sh && c4_run_test static32}
- {name: static32-pack, run: source .github/setenv.sh && c4_package static32}
- name: shared32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared32
- {name: shared32-build, run: source .github/setenv.sh && c4_build_test shared32}
- {name: shared32-run, run: source .github/setenv.sh && c4_run_test shared32}
- {name: shared32-pack, run: source .github/setenv.sh && c4_package shared32}
#----------------------------------------------------------------------------
test_arm:
continue-on-error: true
if: always() # https://stackoverflow.com/questions/62045967/github-actions-is-there-a-way-to-continue-on-error-while-still-getting-correct
runs-on: ${{matrix.os}}
strategy:
fail-fast: false
matrix:
include:
# these jobs take much longer, so run only one bitlink pair per job to profit from parallelism
- {std: 11, bt: Debug , toolchain: cmake/Toolchain-Arm-ubuntu.cmake, cxx: arm-linux-gnueabihf-gcc, os: ubuntu-18.04}
- {std: 11, bt: Release, toolchain: cmake/Toolchain-Arm-ubuntu.cmake, cxx: arm-linux-gnueabihf-gcc, os: ubuntu-18.04}
- {std: 14, bt: Debug , toolchain: cmake/Toolchain-Arm-ubuntu.cmake, cxx: arm-linux-gnueabihf-gcc, os: ubuntu-18.04}
- {std: 14, bt: Release, toolchain: cmake/Toolchain-Arm-ubuntu.cmake, cxx: arm-linux-gnueabihf-gcc, os: ubuntu-18.04}
- {std: 17, bt: Debug , toolchain: cmake/Toolchain-Arm-ubuntu.cmake, cxx: arm-linux-gnueabihf-gcc, os: ubuntu-18.04}
- {std: 17, bt: Release, toolchain: cmake/Toolchain-Arm-ubuntu.cmake, cxx: arm-linux-gnueabihf-gcc, os: ubuntu-18.04}
env: {TOOLCHAIN: "${{matrix.toolchain}}", STD: "${{matrix.std}}", CXX_: "${{matrix.cxx}}", BT: "${{matrix.bt}}", BITLINKS: "${{matrix.bitlinks}}", VG: "${{matrix.vg}}", SAN: "${{matrix.san}}", LINT: "${{matrix.lint}}", OS: "${{matrix.os}}"}
steps:
- {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive}}
- {name: install requirements, run: source .github/reqs.sh && c4_install_test_requirements $OS}
- {name: show info, run: source .github/setenv.sh && c4_show_info}
- name: configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test arm
- {name: build, run: source .github/setenv.sh && c4_build_test arm}
- {name: run, run: source .github/setenv.sh && c4_run_test arm}
- {name: pack, run: source .github/setenv.sh && c4_package arm}
# #----------------------------------------------------------------------------
# # https://blog.kitware.com/static-checks-with-cmake-cdash-iwyu-clang-tidy-lwyu-cpplint-and-cppcheck/
# static_analysis:
# continue-on-error: true
# if: always() # https://stackoverflow.com/questions/62045967/github-actions-is-there-a-way-to-continue-on-error-while-still-getting-correct
# runs-on: ${{matrix.os}}
# strategy:
# fail-fast: false
# matrix:
# include:
# # these jobs take much longer, so run only one bitlink pair per job to profit from parallelism
# - {std: 11, cxx: clang++-10, bt: Debug , bitlinks: shared64, os: ubuntu-18.04}
# - {std: 11, cxx: clang++-10, bt: Release, bitlinks: shared64, os: ubuntu-18.04}
# - {std: 14, cxx: clang++-10, bt: Debug , bitlinks: shared64, os: ubuntu-18.04}
# - {std: 14, cxx: clang++-10, bt: Release, bitlinks: shared64, os: ubuntu-18.04}
# - {std: 17, cxx: clang++-10, bt: Debug , bitlinks: shared64, os: ubuntu-18.04}
# - {std: 17, cxx: clang++-10, bt: Release, bitlinks: shared64, os: ubuntu-18.04}
# - {std: 20, cxx: clang++-10, bt: Debug , bitlinks: shared64, os: ubuntu-18.04}
# - {std: 20, cxx: clang++-10, bt: Release, bitlinks: shared64, os: ubuntu-18.04}
# env: {STD: "${{matrix.std}}", CXX_: "${{matrix.cxx}}", BT: "${{matrix.bt}}", BITLINKS: "${{matrix.bitlinks}}", VG: "${{matrix.vg}}", SAN: "${{matrix.san}}", LINT: "${{matrix.lint}}", OS: "${{matrix.os}}"}
# steps:
# - {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive}}
# - {name: install requirements, run: source .github/reqs.sh && c4_install_test_requirements $OS}
# - {name: show info, run: source .github/setenv.sh && c4_show_info}
# - name: shared64-configure---------------------------------------------------
# run: source .github/setenv.sh && c4_cfg_test shared64
# - {name: shared64-build, run: source .github/setenv.sh && c4_build_test shared64}
# - {name: clang-tidy, run: cmake "-DCMAKE_CXX_CLANG_TIDY=/usr/bin/clang-tidy-3.9;-checks=*" ../path/to/source}
# - {name: cppcheck, run: cmake "-DCMAKE_CXX_CPPCHECK=/usr/bin/cppcheck;--std=c++11" ../path/to/source}
# - {name: cpplint, run: cmake "-DCMAKE_CXX_CPPLINT=/usr/local/bin/cpplint;--linelength=179" ..}
# - {name: include-what-you-use, run: cmake "-DCMAKE_CXX_INCLUDE_WHAT_YOU_USE=/usr/bin/iwyu;--transitive_includes_only" ..}
# - {name: link-what-you-use, run: cmake -DCMAKE_LINK_WHAT_YOU_USE=TRUE ..}
#----------------------------------------------------------------------------
# useful to iterate when fixing the release
# ver=0.0.0-rc1 ; ( set -x ; git tag -d v$ver ; git push origin :v$ver ) ; (set -x ; set -e ; git add -u ; git commit --amend --no-edit ; git tag --annotate --message "v$ver" "v$ver" ; git push -f --tags origin gh_actions )
release:
if: contains(github.ref, 'tags/v')
runs-on: ubuntu-latest
#needs: [test_coverage, test_windows, test_macosx, test_gcc_canary, test_clang_canary, test_clang_tidy, test_gcc_extended, test_clang_extended, test_clang_sanitize, test_api]
steps:
- name: Install requirements
run: |
sudo -E pip install git-archive-all
- name: Get version
id: get_version
# https://github.community/t/how-to-get-just-the-tag-name/16241/11
run: |
echo ::set-output name=SRC_TAG::${GITHUB_REF#refs/tags/}
echo ::set-output name=SRC_VERSION::${GITHUB_REF#refs/tags/v}
echo SRC_TAG=${GITHUB_REF#refs/tags/}
echo SRC_VERSION=${GITHUB_REF#refs/tags/v}
- {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive}}
- name: Create Release
id: create_release
uses: actions/create-release@v1 # https://github.com/marketplace/actions/create-a-release
env:
GITHUB_TOKEN: "${{secrets.GITHUB_TOKEN}}"
SRC_TAG: "${{steps.get_version.outputs.SRC_TAG}}"
SRC_VERSION: "${{steps.get_version.outputs.SRC_VERSION}}"
with:
tag_name: ${{github.ref}}
release_name: Release ${{steps.get_version.outputs.SRC_VERSION}}
draft: true # to create a draft (unpublished) release, false to create a published one. Default: false
prerelease: ${{contains(github.ref, '-rc')}}
body_path: ${{github.workspace}}/changelog/${{steps.get_version.outputs.SRC_VERSION}}.md
- name: Create source packs
id: src_pack
run: |
version=${{steps.get_version.outputs.SRC_VERSION}}
name=${PROJ_PFX_TARGET}src-$version
git-archive-all --prefix $name $name.tgz
git-archive-all --prefix $name $name.zip
echo ::set-output name=TGZ::$name.tgz
echo ::set-output name=ZIP::$name.zip
- name: Upload tgz source pack
id: upload_src_tgz_to_release
uses: actions/upload-release-asset@v1.0.1
env: {GITHUB_TOKEN: "${{secrets.GITHUB_TOKEN}}"}
with:
upload_url: ${{steps.create_release.outputs.upload_url}}
asset_path: ${{steps.src_pack.outputs.TGZ}}
asset_name: ${{steps.src_pack.outputs.TGZ}}
asset_content_type: application/gzip
- name: Upload zip source pack
id: upload_src_zip_to_release
uses: actions/upload-release-asset@v1.0.1
env: {GITHUB_TOKEN: "${{secrets.GITHUB_TOKEN}}"}
with:
upload_url: ${{steps.create_release.outputs.upload_url}}
asset_path: ${{steps.src_pack.outputs.ZIP}}
asset_name: ${{steps.src_pack.outputs.ZIP}}
asset_content_type: application/zip
- name: Save Release URL for uploading binary artifacts
run: |
echo "UPLOAD_URL: ${{steps.create_release.outputs.upload_url}}"
echo "${{steps.create_release.outputs.upload_url}}" > ./upload_url
- name: Upload Release URL
uses: actions/upload-artifact@v1
with:
path: ./upload_url
name: upload_url
# since this is a library, we just provide the source packages (done above)
# #----------------------------------------------------------------------------
# publish:
# needs: release
# name: publish/${{matrix.config.os}}/${{matrix.config.gen}}
# runs-on: ${{matrix.config.os}}
# env: {DEV: OFF, BT: Release, OS: "${{matrix.config.os}}", CXX_: "${{matrix.config.cxx}}", GEN: "${{matrix.config.gen}}"}
# strategy:
# fail-fast: false
# matrix:
# config:
# # name of the artifact | suffix | cpack gen | mime type | os | cxx
# - {name: Ubuntu 20.04 deb , sfx: unix64.deb, gen: DEB , mime: vnd.debian.binary-package, os: ubuntu-20.04 }
# - {name: Ubuntu 20.04 sh , sfx: unix64.sh , gen: STGZ , mime: x-sh , os: ubuntu-20.04 }
# - {name: Ubuntu 18.04 deb , sfx: unix64.deb, gen: DEB , mime: vnd.debian.binary-package, os: ubuntu-18.04 }
# - {name: Ubuntu 18.04 sh , sfx: unix64.sh , gen: STGZ , mime: x-sh , os: ubuntu-18.04 }
# - {name: Ubuntu 16.04 deb , sfx: unix64.deb, gen: DEB , mime: vnd.debian.binary-package, os: ubuntu-16.04 }
# - {name: Ubuntu 16.04 sh , sfx: unix64.sh , gen: STGZ , mime: x-sh , os: ubuntu-16.04 }
# - {name: Windows VS2017 zip, sfx: win64.zip , gen: ZIP , mime: zip , os: windows-2016, cxx: vs2017}
# - {name: Windows VS2019 zip, sfx: win64.zip , gen: ZIP , mime: zip , os: windows-2019, cxx: vs2019}
# - {name: MacOSX sh , sfx: apple64.sh, gen: STGZ , mime: x-sh , os: macos-11.0 , cxx: xcode }
# steps:
# - name: Get version
# id: get_version
# # https://github.community/t/how-to-get-just-the-tag-name/16241/11
# run: |
# echo ::set-output name=SRC_VERSION::${GITHUB_REF#refs/tags/v}
# echo SRC_VERSION=${GITHUB_REF#refs/tags/v}
# echo GEN=$GEN
# - name: Download upload URL
# uses: actions/download-artifact@v1
# with: {name: upload_url, path: ./}
# - name: Preprocess
# id: preprocess
# run: |
# upload_url=`cat ./upload_url`
# echo ::set-output name=upload_url::$upload_url
# # the package has the same name in multiple same-platform+same-sfx
# # instances, but the uploaded asset needs to have different names:
# sfx=${{matrix.config.sfx}}
# case "${{matrix.config.os}}" in
# ubuntu*)
# sfx=$(echo $sfx | sed "s:unix64:${{matrix.config.os}}:")
# ;;
# windows*)
# sfx=$(echo $sfx | sed "s:win64:win64-${{matrix.config.cxx}}:")
# ;;
# macos*)
# sfx=$(echo $sfx | sed "s:apple64:macosx-${{matrix.config.cxx}}:")
# ;;
# esac
# asset_name=${PROJ_PFX_TARGET}${{steps.get_version.outputs.SRC_VERSION}}-$sfx
# echo ::set-output name=asset_name::$asset_name
# - {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive}}
# - {name: install requirements, run: source .github/reqs.sh && c4_install_test_requirements $OS}
# - {name: show info, run: source .github/setenv.sh && c4_show_info }
# - name: shared64-configure---------------------------------------------------
# run: source .github/setenv.sh && c4_cfg_test shared64
# - {name: shared64-build, run: source .github/setenv.sh && c4_build_target shared64 all}
# - name: shared64-pack
# run: |
# source .github/setenv.sh && c4_package shared64 $GEN
# src=./build/shared64/${PROJ_PFX_TARGET}${{steps.get_version.outputs.SRC_VERSION}}-${{matrix.config.sfx}}
# dst=${{steps.preprocess.outputs.asset_name}}
# cp -fav $src $dst
# - name: Upload artifact
# id: upload_to_release
# uses: actions/upload-release-asset@v1.0.1
# env: {GITHUB_TOKEN: "${{secrets.GITHUB_TOKEN}}"}
# with:
# upload_url: ${{steps.preprocess.outputs.upload_url}}
# asset_path: ${{steps.preprocess.outputs.asset_name}}
# asset_name: ${{steps.preprocess.outputs.asset_name}}
# asset_content_type: application/${{matrix.config.mime}}
# #- name: Report artifact URL
# # run: echo "artifact uploaded successfully: ${{steps.upload_to_release.outputs.browser_download_url}}"

View File

@@ -1,95 +0,0 @@
name: emscripten
defaults:
#if: "!contains(github.event.head_commit.message, 'skip ci')" # SKIP
run:
# Use a bash shell so we can use the same syntax for environment variable
# access regardless of the host operating system
shell: bash -e -x {0}
on:
# https://github.community/t/how-to-trigger-an-action-on-push-or-pull-request-but-not-both/16662
workflow_dispatch:
push:
branches:
- master
pull_request:
branches:
- master
env:
PROJ_PFX_TARGET: c4core-
PROJ_PFX_CMAKE: C4CORE_
CMAKE_FLAGS:
NUM_JOBS_BUILD: # 4
EMSCRIPTEN_CACHE_FOLDER: 'emsdk-cache'
# ubuntu-20.04:
# # https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-README.md
# gcc: 7.5.0, 8.4.0, 9.3.0, 10.2.0
# clang: 8.0.1, 9.0.1, 10.0.0
# ubuntu-18.04:
# # https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu1804-README.md
# gcc: 7.5.0, 8.4.0, 9.3.0, 10.1.0
# clang: 6.0.0, 8.0.0, 9.0.0
# macos-11.0: macOS Big Sur 11.0
# # https://github.com/actions/virtual-environments/blob/main/images/macos/macos-11.0-Readme.md
# Xcode 12.1 11.7
# clang/LLVM 10.0.1
# gcc-8 gcc-9
# macos-10.15: macOS Catalina 10.15
# # https://github.com/actions/virtual-environments/blob/main/images/macos/macos-10.15-Readme.md
# Xcode 12.1 11.7
# clang/LLVM 11.0.0
# gcc-8 gcc-9
# windows-2019:
# # https://github.com/actions/virtual-environments/blob/main/images/win/Windows2019-Readme.md
# vs2019
# windows-2016:
# # https://github.com/actions/virtual-environments/blob/main/images/win/Windows2016-Readme.md
# vs2017
jobs:
#----------------------------------------------------------------------------
emscripten:
name: emscripten/${{matrix.emver}}/c++${{matrix.std}}/${{matrix.bt}}
continue-on-error: true
if: always() # https://stackoverflow.com/questions/62045967/github-actions-is-there-a-way-to-continue-on-error-while-still-getting-correct
runs-on: ${{matrix.os}}
strategy:
fail-fast: false
matrix:
include:
- {std: 11, cxx: em++, emver: 2.0.34, bt: Debug , os: ubuntu-latest, bitlinks: static32}
- {std: 11, cxx: em++, emver: 2.0.34, bt: Release, os: ubuntu-latest, bitlinks: static32}
- {std: 20, cxx: em++, emver: 2.0.34, bt: Debug , os: ubuntu-latest, bitlinks: static32}
- {std: 20, cxx: em++, emver: 2.0.34, bt: Release, os: ubuntu-latest, bitlinks: static32}
- {std: 11, cxx: em++, emver: 3.0.0 , bt: Debug , os: ubuntu-latest, bitlinks: static32}
- {std: 11, cxx: em++, emver: 3.0.0 , bt: Release, os: ubuntu-latest, bitlinks: static32}
- {std: 20, cxx: em++, emver: 3.0.0 , bt: Debug , os: ubuntu-latest, bitlinks: static32}
- {std: 20, cxx: em++, emver: 3.0.0 , bt: Release, os: ubuntu-latest, bitlinks: static32}
env:
STD: "${{matrix.std}}"
CXX_: "${{matrix.cxx}}"
BT: "${{matrix.bt}}"
BITLINKS: "${{matrix.bitlinks}}"
VG: "${{matrix.vg}}"
SAN: "${{matrix.san}}"
LINT: "${{matrix.lint}}"
OS: "${{matrix.os}}"
steps:
- {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive}}
- name: setup emscripten cache
id: cache-system-libraries
uses: actions/cache@v2
with: {path: "${{env.EMSCRIPTEN_CACHE_FOLDER}}", key: "${{matrix.emver}}-${{runner.os}}"}
- name: setup emscripten
uses: mymindstorm/setup-emsdk@v11
with: {version: "${{matrix.emver}}", actions-cache-folder: "${{env.EMSCRIPTEN_CACHE_FOLDER}}"}
- {name: show info, run: source .github/setenv.sh && c4_show_info}
- name: static32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static32
- {name: static32-build, run: source .github/setenv.sh && c4_build_test static32}
- {name: static32-run, run: source .github/setenv.sh && c4_run_test static32}

View File

@@ -1,111 +0,0 @@
name: libcxx
defaults:
#if: "!contains(github.event.head_commit.message, 'skip ci')" # SKIP
run:
# Use a bash shell so we can use the same syntax for environment variable
# access regardless of the host operating system
shell: bash -e -x {0}
on:
# https://github.community/t/how-to-trigger-an-action-on-push-or-pull-request-but-not-both/16662
workflow_dispatch:
push:
branches:
- master
pull_request:
branches:
- master
env:
PROJ_PFX_TARGET: c4core-
PROJ_PFX_CMAKE: C4CORE_
CMAKE_FLAGS:
NUM_JOBS_BUILD: # 4
# ubuntu-20.04:
# # https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-README.md
# gcc: 7.5.0, 8.4.0, 9.3.0, 10.2.0
# clang: 8.0.1, 9.0.1, 10.0.0
# ubuntu-18.04:
# # https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu1804-README.md
# gcc: 7.5.0, 8.4.0, 9.3.0, 10.1.0
# clang: 6.0.0, 8.0.0, 9.0.0
# macos-11.0: macOS Big Sur 11.0
# # https://github.com/actions/virtual-environments/blob/main/images/macos/macos-11.0-Readme.md
# Xcode 12.1 11.7
# clang/LLVM 10.0.1
# gcc-8 gcc-9
# macos-10.15: macOS Catalina 10.15
# # https://github.com/actions/virtual-environments/blob/main/images/macos/macos-10.15-Readme.md
# Xcode 12.1 11.7
# clang/LLVM 11.0.0
# gcc-8 gcc-9
# windows-2019:
# # https://github.com/actions/virtual-environments/blob/main/images/win/Windows2019-Readme.md
# vs2019
# windows-2016:
# # https://github.com/actions/virtual-environments/blob/main/images/win/Windows2016-Readme.md
# vs2017
jobs:
#----------------------------------------------------------------------------
libcxx:
name: libc++/${{matrix.cxx}}/c++${{matrix.std}}/${{matrix.bt}}
continue-on-error: true
if: always() # https://stackoverflow.com/questions/62045967/github-actions-is-there-a-way-to-continue-on-error-while-still-getting-correct
runs-on: ${{matrix.os}}
strategy:
fail-fast: false
matrix:
include:
- {std: 20, cxx: clang++-10 , bt: Debug , os: ubuntu-18.04, bitlinks: shared64 static32}
- {std: 20, cxx: clang++-10 , bt: Release, os: ubuntu-18.04, bitlinks: shared64 static32}
- {std: 17, cxx: clang++-10 , bt: Debug , os: ubuntu-18.04, bitlinks: shared64 static32}
- {std: 17, cxx: clang++-10 , bt: Release, os: ubuntu-18.04, bitlinks: shared64 static32}
- {std: 14, cxx: clang++-10 , bt: Debug , os: ubuntu-18.04, bitlinks: shared64 static32}
- {std: 14, cxx: clang++-10 , bt: Release, os: ubuntu-18.04, bitlinks: shared64 static32}
- {std: 11, cxx: clang++-10 , bt: Debug , os: ubuntu-18.04, bitlinks: shared64 static32}
- {std: 11, cxx: clang++-10 , bt: Release, os: ubuntu-18.04, bitlinks: shared64 static32}
- {std: 17, cxx: clang++-6.0, bt: Debug , os: ubuntu-18.04, bitlinks: shared64 static32}
- {std: 17, cxx: clang++-6.0, bt: Release, os: ubuntu-18.04, bitlinks: shared64 static32}
- {std: 14, cxx: clang++-6.0, bt: Debug , os: ubuntu-18.04, bitlinks: shared64 static32}
- {std: 14, cxx: clang++-6.0, bt: Release, os: ubuntu-18.04, bitlinks: shared64 static32}
- {std: 11, cxx: clang++-6.0, bt: Debug , os: ubuntu-18.04, bitlinks: shared64 static32}
- {std: 11, cxx: clang++-6.0, bt: Release, os: ubuntu-18.04, bitlinks: shared64 static32}
env:
LIBCXX: ON # <---- enable libc++
STD: "${{matrix.std}}"
CXX_: "${{matrix.cxx}}"
BT: "${{matrix.bt}}"
BITLINKS: "${{matrix.bitlinks}}"
VG: "${{matrix.vg}}"
SAN: "${{matrix.san}}"
LINT: "${{matrix.lint}}"
OS: "${{matrix.os}}"
steps:
- {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive}}
- {name: install requirements, run: source .github/reqs.sh && c4_install_test_requirements $OS}
- {name: show info, run: source .github/setenv.sh && c4_show_info}
- name: shared64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared64
- {name: shared64-build, run: source .github/setenv.sh && c4_build_test shared64}
- {name: shared64-run, run: source .github/setenv.sh && c4_run_test shared64}
- {name: shared64-pack, run: source .github/setenv.sh && c4_package shared64}
- name: static64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static64
- {name: static64-build, run: source .github/setenv.sh && c4_build_test static64}
- {name: static64-run, run: source .github/setenv.sh && c4_run_test static64}
- {name: static64-pack, run: source .github/setenv.sh && c4_package static64}
- name: static32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static32
- {name: static32-build, run: source .github/setenv.sh && c4_build_test static32}
- {name: static32-run, run: source .github/setenv.sh && c4_run_test static32}
- {name: static32-pack, run: source .github/setenv.sh && c4_package static32}
- name: shared32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared32
- {name: shared32-build, run: source .github/setenv.sh && c4_build_test shared32}
- {name: shared32-run, run: source .github/setenv.sh && c4_run_test shared32}
- {name: shared32-pack, run: source .github/setenv.sh && c4_package shared32}

View File

@@ -1,103 +0,0 @@
name: macosx
defaults:
#if: "!contains(github.event.head_commit.message, 'skip ci')" # SKIP
run:
# Use a bash shell so we can use the same syntax for environment variable
# access regardless of the host operating system
shell: bash -e -x {0}
on:
# https://github.community/t/how-to-trigger-an-action-on-push-or-pull-request-but-not-both/16662
workflow_dispatch:
push:
branches:
- master
pull_request:
branches:
- master
env:
PROJ_PFX_TARGET: c4core-
PROJ_PFX_CMAKE: C4CORE_
CMAKE_FLAGS:
NUM_JOBS_BUILD: # 4
# ubuntu-20.04:
# # https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-README.md
# gcc: 7.5.0, 8.4.0, 9.3.0, 10.2.0
# clang: 8.0.1, 9.0.1, 10.0.0
# ubuntu-18.04:
# # https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu1804-README.md
# gcc: 7.5.0, 8.4.0, 9.3.0, 10.1.0
# clang: 6.0.0, 8.0.0, 9.0.0
# macos-11.0: macOS Big Sur 11.0
# # https://github.com/actions/virtual-environments/blob/main/images/macos/macos-11.0-Readme.md
# Xcode 12.1 11.7
# clang/LLVM 10.0.1
# gcc-8 gcc-9
# macos-10.15: macOS Catalina 10.15
# # https://github.com/actions/virtual-environments/blob/main/images/macos/macos-10.15-Readme.md
# Xcode 12.1 11.7
# clang/LLVM 11.0.0
# gcc-8 gcc-9
# windows-2019:
# # https://github.com/actions/virtual-environments/blob/main/images/win/Windows2019-Readme.md
# vs2019
# windows-2016:
# # https://github.com/actions/virtual-environments/blob/main/images/win/Windows2016-Readme.md
# vs2017
jobs:
#----------------------------------------------------------------------------
xcode:
name: xcode${{matrix.xcver}}/c++${{matrix.std}}/${{matrix.bt}}
continue-on-error: true
if: always() # https://stackoverflow.com/questions/62045967/github-actions-is-there-a-way-to-continue-on-error-while-still-getting-correct
runs-on: ${{matrix.os}}
strategy:
fail-fast: false
matrix:
include:
- {std: 11, cxx: xcode, xcver: 13, bt: Debug , os: macos-11, bitlinks: shared64 static64}
- {std: 11, cxx: xcode, xcver: 13, bt: Release, os: macos-11, bitlinks: shared64 static64}
- {std: 17, cxx: xcode, xcver: 13, bt: Debug , os: macos-11, bitlinks: shared64 static64}
- {std: 17, cxx: xcode, xcver: 13, bt: Release, os: macos-11, bitlinks: shared64 static64}
#
- {std: 11, cxx: xcode, xcver: 12, bt: Debug , os: macos-11, bitlinks: shared64 static64}
- {std: 11, cxx: xcode, xcver: 12, bt: Release, os: macos-11, bitlinks: shared64 static64}
- {std: 17, cxx: xcode, xcver: 12, bt: Debug , os: macos-11, bitlinks: shared64 static64}
- {std: 17, cxx: xcode, xcver: 12, bt: Release, os: macos-11, bitlinks: shared64 static64}
#
- {std: 11, cxx: xcode, xcver: 11, bt: Debug , os: macos-11, bitlinks: shared64 static64}
- {std: 11, cxx: xcode, xcver: 11, bt: Release, os: macos-11, bitlinks: shared64 static64}
- {std: 17, cxx: xcode, xcver: 11, bt: Debug , os: macos-11, bitlinks: shared64 static64}
- {std: 17, cxx: xcode, xcver: 11, bt: Release, os: macos-11, bitlinks: shared64 static64}
env: {STD: "${{matrix.std}}", CXX_: "${{matrix.cxx}}", BT: "${{matrix.bt}}", BITLINKS: "${{matrix.bitlinks}}", VG: "${{matrix.vg}}", SAN: "${{matrix.san}}", LINT: "${{matrix.lint}}", OS: "${{matrix.os}}"}
steps:
- {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive}}
- {name: xcode, uses: maxim-lobanov/setup-xcode@v1, with: {xcode-version: "${{matrix.xcver}}" }}
- {name: install requirements, run: source .github/reqs.sh && c4_install_test_requirements $OS}
- {name: show info, run: source .github/setenv.sh && c4_show_info}
- name: shared64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared64
- {name: shared64-build, run: source .github/setenv.sh && c4_build_test shared64}
- {name: shared64-run, run: source .github/setenv.sh && c4_run_test shared64}
- {name: shared64-pack, run: source .github/setenv.sh && c4_package shared64}
- name: static64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static64
- {name: static64-build, run: source .github/setenv.sh && c4_build_test static64}
- {name: static64-run, run: source .github/setenv.sh && c4_run_test static64}
- {name: static64-pack, run: source .github/setenv.sh && c4_package static64}
- name: shared32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared32
- {name: shared32-build, run: source .github/setenv.sh && c4_build_test shared32}
- {name: shared32-run, run: source .github/setenv.sh && c4_run_test shared32}
- {name: shared32-pack, run: source .github/setenv.sh && c4_package shared32}
- name: static32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static32
- {name: static32-build, run: source .github/setenv.sh && c4_build_test static32}
- {name: static32-run, run: source .github/setenv.sh && c4_run_test static32}
- {name: static32-pack, run: source .github/setenv.sh && c4_package static32}

View File

@@ -1,199 +0,0 @@
name: release
defaults:
#if: "!contains(github.event.head_commit.message, 'skip ci')" # SKIP
run:
# Use a bash shell so we can use the same syntax for environment variable
# access regardless of the host operating system
shell: bash -e -x {0}
on:
# https://github.community/t/how-to-trigger-an-action-on-push-or-pull-request-but-not-both/16662
workflow_dispatch:
push:
tags:
- v0.*
- v1.*
- v2.*
branches:
- master
pull_request:
branches:
- master
env:
PROJ_PKG_NAME: c4core-
PROJ_PFX_TARGET: c4core-
PROJ_PFX_CMAKE: C4CORE_
CMAKE_FLAGS:
NUM_JOBS_BUILD: # 4
# useful to iterate when fixing the release:
# ver=0.2.1 ; ( set -x ; git tag -d v$ver ; git push origin :v$ver ) ; (set -x ; set -e ; tbump --only-patch --non-interactive $ver ; git add -u ; git commit --amend --no-edit ; git tag --annotate --message "v$ver" "v$ver" ; git push -f --tags origin )
jobs:
gettag:
runs-on: ubuntu-latest
steps:
# use fetch-depth to ensure all tags are fetched
- {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive, fetch-depth: 0}}
- name: Variables (from tag)
if: contains(github.ref, 'tags/v')
run: |
# https://github.community/t/how-to-get-just-the-tag-name/16241/11
SRC_TAG=${GITHUB_REF#refs/tags/}
SRC_VERSION=${GITHUB_REF#refs/tags/v}
cat <<EOF > vars.sh
export SRC_TAG=$SRC_TAG
export SRC_VERSION=$SRC_VERSION
EOF
- name: Variables (from commit, no tag)
if: ${{ !contains(github.ref, 'tags/v') }}
run: |
set -x
branch_name=${GITHUB_REF#refs/heads/}
# builds triggered from PRs have the branch_name like this: refs/pull/150/merge
# so filter to eg pr0150_merge
branch_name=`echo $branch_name | sed "s:refs/pull/\([0-9]*\)/\(.*\):pr0\1_\2:"`
# sanitize the branch name; eg merge/foo-bar -> merge_foo_bar
branch_name=`echo $branch_name | sed 's:[/.-]:_:g'`
SRC_TAG=$(git describe || git rev-parse --short HEAD) # eg v0.2.0-110-gda837e0
SRC_VERSION="${branch_name}-${SRC_TAG}"
cat <<EOF > vars.sh
export SRC_TAG=$SRC_TAG
export SRC_VERSION=$SRC_VERSION
EOF
- name: Verify vars.sh
run: cat vars.sh ; source vars.sh ; echo $SRC_TAG ; echo $SRC_VERSION
- name: Save vars.sh
uses: actions/upload-artifact@v1
with: {name: vars.sh, path: ./vars.sh}
#----------------------------------------------------------------------------
# create source packages
src:
needs: gettag
runs-on: ubuntu-latest
steps:
- {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive}}
- name: Download vars.sh
uses: actions/download-artifact@v1
with: {name: vars.sh, path: ./}
- name: Install python 3.9
uses: actions/setup-python@v2
with: { python-version: 3.9 }
- name: Install requirements
run: |
sudo -E pip install git-archive-all
- name: Create source packages
run: |
pwd
ls -lFhp
source vars.sh
echo SRC_TAG=$SRC_TAG
echo SRC_VERSION=$SRC_VERSION
id=${PROJ_PKG_NAME}${SRC_VERSION}
name=${id}-src
mkdir -p assets
git-archive-all --prefix $name assets/$name.tgz
git-archive-all --prefix $name assets/$name.zip
python --version
python tools/amalgamate.py assets/$id.hpp
- name: Save source artifacts
uses: actions/upload-artifact@v1
with: {name: assets, path: assets}
#----------------------------------------------------------------------------
# create c++ packages
cpp:
name: cpp/${{matrix.config.os}}/${{matrix.config.gen}}
needs: gettag
runs-on: ${{matrix.config.os}}
env: {DEV: OFF, BT: Release, OS: "${{matrix.config.os}}", CXX_: "${{matrix.config.cxx}}", GEN: "${{matrix.config.gen}}"}
strategy:
fail-fast: false
matrix:
config:
# name of the artifact | suffix (gen) | suffix (package) | cpack gen | mime type | os | cxx
# ubuntu 20.04 is disabled because of a problem installing libc++:i386:
#- {name: Ubuntu 20.04 deb , sfxg: unix64-shared-Release.deb, sfxp: ubuntu-20.04.deb , gen: DEB , mime: vnd.debian.binary-package, os: ubuntu-20.04 }
- {name: Ubuntu 18.04 deb , sfxg: unix64-shared-Release.deb, sfxp: ubuntu-18.04.deb , gen: DEB , mime: vnd.debian.binary-package, os: ubuntu-18.04 }
- {name: Windows VS2019 zip, sfxg: win64-shared-Release.zip , sfxp: windows-vs2019.zip , gen: ZIP , mime: zip , os: windows-2019, cxx: vs2019}
- {name: MacOSX sh , sfxg: apple64-shared-Release.sh, sfxp: macosx-xcode.sh , gen: STGZ , mime: x-sh , os: macos-11.0 , cxx: xcode }
steps:
- {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive}}
- name: Download vars.sh
uses: actions/download-artifact@v1
with: {name: vars.sh, path: ./}
- {name: install requirements, run: source .github/reqs.sh && c4_install_test_requirements $OS}
- {name: show info, run: source .github/setenv.sh && c4_show_info }
- name: shared64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared64
- {name: shared64-build, run: source .github/setenv.sh && c4_build_target shared64}
- name: shared64-pack
run: source .github/setenv.sh && c4_package shared64 $GEN
- name: shared64-normalize
run: |
set -x
source vars.sh
mkdir -p assets
asset_src=`ls -1 ./build/shared64/${PROJ_PFX_TARGET}*-${{matrix.config.sfxg}}`
asset_dst=./assets/${PROJ_PKG_NAME}${SRC_VERSION}-${{matrix.config.sfxp}}
[ ! -f $asset_src ] && exit 1
cp -fav $asset_src $asset_dst
- name: Save artifacts
uses: actions/upload-artifact@v1
with: {name: assets, path: assets}
#----------------------------------------------------------------------------
release:
runs-on: ubuntu-latest
needs:
- src
- cpp
steps:
- {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive}}
- name: Gather artifacts - ./assets
uses: actions/download-artifact@v2
with: {name: assets, path: assets}
- name: Verify existing artifacts
run: |
ls -lFhp assets/
#
# Github
- name: Restore vars.sh
if: contains(github.ref, 'tags/v')
uses: actions/download-artifact@v1
with: {name: vars.sh, path: ./}
- name: Save vars for following steps
if: contains(github.ref, 'tags/v')
id: vars
run: |
source vars.sh
version_body=${{github.workspace}}/changelog/$SRC_VERSION.md
if [ ! -f $version_body ] ; then
echo "version body file was not found: $version_body"
exit 1
fi
echo "::set-output name=VERSION::$SRC_VERSION"
echo "::set-output name=VERSION_BODY::$version_body"
- name: Create Github Release
if: contains(github.ref, 'tags/v')
id: create_release
uses: actions/create-release@v1
env: { GITHUB_TOKEN: "${{secrets.GITHUB_TOKEN}}" }
with:
tag_name: ${{github.ref}}
release_name: Release ${{steps.vars.outputs.VERSION}}
body_path: ${{steps.vars.outputs.VERSION_BODY}}
draft: true
prerelease: ${{contains(github.ref, 'rc')}}
- name: Upload assets to Github Release
if: contains(github.ref, 'tags/v')
uses: dwenegar/upload-release-assets@v1
env: { GITHUB_TOKEN: "${{secrets.GITHUB_TOKEN}}" }
with:
release_id: ${{steps.create_release.outputs.id}}
assets_path: ./assets/

View File

@@ -1,576 +0,0 @@
name: test
defaults:
#if: "!contains(github.event.head_commit.message, 'skip ci')" # SKIP
run:
# Use a bash shell so we can use the same syntax for environment variable
# access regardless of the host operating system
shell: bash -e -x {0}
on:
# https://github.community/t/how-to-trigger-an-action-on-push-or-pull-request-but-not-both/16662
workflow_dispatch:
push:
branches:
- master
pull_request:
branches:
- master
env:
PROJ_PFX_TARGET: c4core-
PROJ_PFX_CMAKE: C4CORE_
CMAKE_FLAGS:
NUM_JOBS_BUILD: # 4
# ubuntu-20.04:
# # https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-README.md
# gcc: 7.5.0, 8.4.0, 9.3.0, 10.2.0
# clang: 8.0.1, 9.0.1, 10.0.0
# ubuntu-18.04:
# # https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu1804-README.md
# gcc: 7.5.0, 8.4.0, 9.3.0, 10.1.0
# clang: 6.0.0, 8.0.0, 9.0.0
# macos-11.0: macOS Big Sur 11.0
# # https://github.com/actions/virtual-environments/blob/main/images/macos/macos-11.0-Readme.md
# Xcode 12.1 11.7
# clang/LLVM 10.0.1
# gcc-8 gcc-9
# macos-10.15: macOS Catalina 10.15
# # https://github.com/actions/virtual-environments/blob/main/images/macos/macos-10.15-Readme.md
# Xcode 12.1 11.7
# clang/LLVM 11.0.0
# gcc-8 gcc-9
# windows-2019:
# # https://github.com/actions/virtual-environments/blob/main/images/win/Windows2019-Readme.md
# vs2019
# windows-2016:
# # https://github.com/actions/virtual-environments/blob/main/images/win/Windows2016-Readme.md
# vs2017
jobs:
#----------------------------------------------------------------------------
coverage:
name: coverage/c++${{matrix.std}}
# if: github.ref == 'refs/heads/master'
continue-on-error: true
if: always() # https://stackoverflow.com/questions/62045967/github-actions-is-there-a-way-to-continue-on-error-while-still-getting-correct
runs-on: ${{matrix.os}}
strategy:
fail-fast: false
matrix:
include:
- {std: 11, cxx: g++-7, cc: gcc-7, bt: Coverage, os: ubuntu-18.04}
- {std: 14, cxx: g++-7, cc: gcc-7, bt: Coverage, os: ubuntu-18.04}
- {std: 17, cxx: g++-7, cc: gcc-7, bt: Coverage, os: ubuntu-18.04}
env: {STD: "${{matrix.std}}", CXX_: "${{matrix.cxx}}", BT: "${{matrix.bt}}", BITLINKS: "${{matrix.bitlinks}}", VG: "${{matrix.vg}}", SAN: "${{matrix.san}}", LINT: "${{matrix.lint}}", OS: "${{matrix.os}}", CODECOV_TOKEN: "${{secrets.CODECOV_TOKEN}}", COVERALLS_REPO_TOKEN: "${{secrets.COVERALLS_REPO_TOKEN}}"}
steps:
- {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive}}
- {name: install requirements, run: source .github/reqs.sh && c4_install_test_requirements $OS}
- {name: show info, run: source .github/setenv.sh && c4_show_info}
- name: shared64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared64
- {name: shared64-build, run: source .github/setenv.sh && c4_build_test shared64}
- {name: shared64-run, run: source .github/setenv.sh && c4_run_test shared64}
- name: shared64-submit
run: |
source .github/setenv.sh
c4_submit_coverage shared64 codecov
#c4_submit_coverage shared64 coveralls # only accepts one submission per job
- name: static64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static64
- {name: static64-build, run: source .github/setenv.sh && c4_build_test static64}
- {name: static64-run, run: source .github/setenv.sh && c4_run_test static64}
- name: static64-submit
run: |
source .github/setenv.sh
c4_submit_coverage static64 codecov
c4_submit_coverage static64 coveralls
- name: static32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static32
- {name: static32-build, run: source .github/setenv.sh && c4_build_test static32}
- {name: static32-run, run: source .github/setenv.sh && c4_run_test static32}
- name: static32-submit
run: |
source .github/setenv.sh
c4_submit_coverage static32 codecov
#c4_submit_coverage static32 coveralls # only accepts one submission per job
- name: shared32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared32
- {name: shared32-build, run: source .github/setenv.sh && c4_build_test shared32}
- {name: shared32-run, run: source .github/setenv.sh && c4_run_test shared32}
- name: shared32-submit
run: |
source .github/setenv.sh
c4_submit_coverage shared32 codecov
#c4_submit_coverage shared32 coveralls # only accepts one submission per job
- name: static32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static32
- {name: static32-build, run: source .github/setenv.sh && c4_build_test static32}
- {name: static32-run, run: source .github/setenv.sh && c4_run_test static32}
- name: static32-submit
run: |
source .github/setenv.sh
c4_submit_coverage static32 codecov
#c4_submit_coverage static32 coveralls # only accepts one submission per job
#----------------------------------------------------------------------------
coverage_nofastfloat:
name: coverage/c++${{matrix.std}}/nofastfloat
# if: github.ref == 'refs/heads/master'
continue-on-error: true
if: always() # https://stackoverflow.com/questions/62045967/github-actions-is-there-a-way-to-continue-on-error-while-still-getting-correct
runs-on: ${{matrix.os}}
strategy:
fail-fast: false
matrix:
include:
- {std: 11, cxx: g++-7, cc: gcc-7, bt: Coverage, os: ubuntu-18.04}
- {std: 14, cxx: g++-7, cc: gcc-7, bt: Coverage, os: ubuntu-18.04}
- {std: 17, cxx: g++-7, cc: gcc-7, bt: Coverage, os: ubuntu-18.04}
env: {
STD: "${{matrix.std}}",
CXX_: "${{matrix.cxx}}",
BT: "${{matrix.bt}}",
OS: "${{matrix.os}}",
CODECOV_TOKEN: "${{secrets.CODECOV_TOKEN}}",
COVERALLS_REPO_TOKEN: "${{secrets.COVERALLS_REPO_TOKEN}}",
BDIR: "build/nofastfloat-${{matrix.cxx}}-cxx${{matrix.std}}",
IDIR: "install/nofastfloat-${{matrix.cxx}}-cxx${{matrix.std}}",
}
steps:
- {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive}}
- {name: install requirements, run: source .github/reqs.sh && c4_install_test_requirements $OS}
- {name: show info, run: source .github/setenv.sh && c4_show_info}
- name: nofastfloat-configure------------------------------------------------
run: |
set -x
mkdir -p $BDIR
mkdir -p $IDIR
cmake -S . -B $BDIR \
-DC4CORE_WITH_FASTFLOAT=OFF \
-DC4_CXX_STANDARD=${{matrix.std}} \
-DC4CORE_CXX_STANDARD=${{matrix.std}} \
-DC4CORE_BUILD_TESTS=ON \
-DC4CORE_VALGRIND=OFF \
-DC4CORE_COVERAGE_CODECOV=ON \
-DC4CORE_COVERAGE_CODECOV_SILENT=ON \
-DC4CORE_COVERAGE_COVERALLS=ON \
-DC4CORE_COVERAGE_COVERALLS_SILENT=ON \
-DCMAKE_INSTALL_PREFIX=$IDIR \
-DCMAKE_BUILD_TYPE=Coverage \
-DCMAKE_CXX_COMPILER=${{matrix.cxx}} \
-DCMAKE_C_COMPILER=${{matrix.cc}}
- name: nofastfloat-build
run: |
cmake --build $BDIR --config Coverage --target c4core-test-build -j
- name: nofastfloat-run
run: |
cmake --build $BDIR --config Coverage --target c4core-test-run
- name: nofastfloat-submit
run: |
cmake --build $BDIR --config Coverage --target c4core-coverage-submit-codecov
#cmake --build $BDIR --config Coverage --target c4core-coverage-submit-coveralls
#----------------------------------------------------------------------------
windows:
name: win/${{matrix.cxx}}/c++${{matrix.std}}/${{matrix.bt}}
continue-on-error: true
if: always() # https://stackoverflow.com/questions/62045967/github-actions-is-there-a-way-to-continue-on-error-while-still-getting-correct
runs-on: ${{matrix.os}}
strategy:
fail-fast: false
matrix:
include:
- {std: 11, cxx: vs2017, bt: Debug , os: windows-2016, bitlinks: shared64 static32}
- {std: 11, cxx: vs2017, bt: Release, os: windows-2016, bitlinks: shared64 static32}
- {std: 14, cxx: vs2017, bt: Debug , os: windows-2016, bitlinks: shared64 static32}
- {std: 14, cxx: vs2017, bt: Release, os: windows-2016, bitlinks: shared64 static32}
- {std: 11, cxx: vs2019, bt: Debug , os: windows-2019, bitlinks: shared64 static32}
- {std: 11, cxx: vs2019, bt: Release, os: windows-2019, bitlinks: shared64 static32}
- {std: 14, cxx: vs2019, bt: Debug , os: windows-2019, bitlinks: shared64 static32}
- {std: 14, cxx: vs2019, bt: Release, os: windows-2019, bitlinks: shared64 static32}
- {std: 17, cxx: vs2019, bt: Debug , os: windows-2019, bitlinks: shared64 static32}
- {std: 17, cxx: vs2019, bt: Release, os: windows-2019, bitlinks: shared64 static32}
- {std: 20, cxx: vs2019, bt: Debug , os: windows-2019, bitlinks: shared64 static32}
- {std: 20, cxx: vs2019, bt: Release, os: windows-2019, bitlinks: shared64 static32}
env: {STD: "${{matrix.std}}", CXX_: "${{matrix.cxx}}", BT: "${{matrix.bt}}", BITLINKS: "${{matrix.bitlinks}}", VG: "${{matrix.vg}}", SAN: "${{matrix.san}}", LINT: "${{matrix.lint}}", OS: "${{matrix.os}}"}
steps:
- {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive}}
- {name: install requirements, run: source .github/reqs.sh && c4_install_test_requirements $OS}
- {name: show info, run: source .github/setenv.sh && c4_show_info}
- name: shared64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared64
- {name: shared64-build, run: source .github/setenv.sh && c4_build_test shared64}
- {name: shared64-run, run: source .github/setenv.sh && c4_run_test shared64}
- {name: shared64-pack, run: source .github/setenv.sh && c4_package shared64}
- name: static64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static64
- {name: static64-build, run: source .github/setenv.sh && c4_build_test static64}
- {name: static64-run, run: source .github/setenv.sh && c4_run_test static64}
- {name: static64-pack, run: source .github/setenv.sh && c4_package static64}
- name: shared32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared32
- {name: shared32-build, run: source .github/setenv.sh && c4_build_test shared32}
- {name: shared32-run, run: source .github/setenv.sh && c4_run_test shared32}
- {name: shared32-pack, run: source .github/setenv.sh && c4_package shared32}
- name: static32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static32
- {name: static32-build, run: source .github/setenv.sh && c4_build_test static32}
- {name: static32-run, run: source .github/setenv.sh && c4_run_test static32}
- {name: static32-pack, run: source .github/setenv.sh && c4_package static32}
#----------------------------------------------------------------------------
gcc_canary:
name: gcc_canary/${{matrix.cxx}}/c++${{matrix.std}}/${{matrix.bt}}
continue-on-error: true
if: always() # https://stackoverflow.com/questions/62045967/github-actions-is-there-a-way-to-continue-on-error-while-still-getting-correct
runs-on: ${{matrix.os}}
strategy:
fail-fast: false
matrix:
include:
- {std: 11, cxx: g++-7 , bt: Debug , os: ubuntu-18.04, bitlinks: shared64 static32}
- {std: 11, cxx: g++-7 , bt: Release, os: ubuntu-18.04, bitlinks: shared64 static32}
- {std: 20, cxx: g++-10 , bt: Debug , os: ubuntu-18.04, bitlinks: shared64 static32}
- {std: 20, cxx: g++-10 , bt: Release, os: ubuntu-18.04, bitlinks: shared64 static32}
- {std: 11, cxx: g++-5 , bt: Debug , os: ubuntu-18.04, bitlinks: shared64 static32}
- {std: 11, cxx: g++-5 , bt: Release, os: ubuntu-18.04, bitlinks: shared64 static32}
- {std: 11, cxx: g++-4.8 , bt: Debug, os: ubuntu-18.04, bitlinks: shared64 static32}
- {std: 11, cxx: g++-4.8 , bt: Release, os: ubuntu-18.04, bitlinks: shared64 static32}
env: {STD: "${{matrix.std}}", CXX_: "${{matrix.cxx}}", BT: "${{matrix.bt}}", BITLINKS: "${{matrix.bitlinks}}", VG: "${{matrix.vg}}", SAN: "${{matrix.san}}", LINT: "${{matrix.lint}}", OS: "${{matrix.os}}"}
steps:
- {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive}}
- {name: install requirements, run: source .github/reqs.sh && c4_install_test_requirements $OS}
- {name: show info, run: source .github/setenv.sh && c4_show_info}
- name: shared64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared64
- {name: shared64-build, run: source .github/setenv.sh && c4_build_test shared64}
- {name: shared64-run, run: source .github/setenv.sh && c4_run_test shared64}
- {name: shared64-pack, run: source .github/setenv.sh && c4_package shared64}
- name: static64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static64
- {name: static64-build, run: source .github/setenv.sh && c4_build_test static64}
- {name: static64-run, run: source .github/setenv.sh && c4_run_test static64}
- {name: static64-pack, run: source .github/setenv.sh && c4_package static64}
- name: static32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static32
- {name: static32-build, run: source .github/setenv.sh && c4_build_test static32}
- {name: static32-run, run: source .github/setenv.sh && c4_run_test static32}
- {name: static32-pack, run: source .github/setenv.sh && c4_package static32}
- name: shared32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared32
- {name: shared32-build, run: source .github/setenv.sh && c4_build_test shared32}
- {name: shared32-run, run: source .github/setenv.sh && c4_run_test shared32}
- {name: shared32-pack, run: source .github/setenv.sh && c4_package shared32}
#----------------------------------------------------------------------------
clang_canary:
name: clang_canary/${{matrix.cxx}}/c++${{matrix.std}}/${{matrix.bt}}
continue-on-error: true
if: always() # https://stackoverflow.com/questions/62045967/github-actions-is-there-a-way-to-continue-on-error-while-still-getting-correct
runs-on: ${{matrix.os}}
strategy:
fail-fast: false
matrix:
include:
- {std: 20, cxx: clang++-10 , bt: Debug , os: ubuntu-18.04, bitlinks: shared64 static32}
- {std: 20, cxx: clang++-10 , bt: Release, os: ubuntu-18.04, bitlinks: shared64 static32}
- {std: 11, cxx: clang++-6.0, bt: Debug , os: ubuntu-18.04, bitlinks: shared64 static32}
- {std: 11, cxx: clang++-6.0, bt: Release, os: ubuntu-18.04, bitlinks: shared64 static32}
env: {STD: "${{matrix.std}}", CXX_: "${{matrix.cxx}}", BT: "${{matrix.bt}}", BITLINKS: "${{matrix.bitlinks}}", VG: "${{matrix.vg}}", SAN: "${{matrix.san}}", LINT: "${{matrix.lint}}", OS: "${{matrix.os}}"}
steps:
- {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive}}
- {name: install requirements, run: source .github/reqs.sh && c4_install_test_requirements $OS}
- {name: show info, run: source .github/setenv.sh && c4_show_info}
- name: shared64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared64
- {name: shared64-build, run: source .github/setenv.sh && c4_build_test shared64}
- {name: shared64-run, run: source .github/setenv.sh && c4_run_test shared64}
- {name: shared64-pack, run: source .github/setenv.sh && c4_package shared64}
- name: static64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static64
- {name: static64-build, run: source .github/setenv.sh && c4_build_test static64}
- {name: static64-run, run: source .github/setenv.sh && c4_run_test static64}
- {name: static64-pack, run: source .github/setenv.sh && c4_package static64}
- name: static32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static32
- {name: static32-build, run: source .github/setenv.sh && c4_build_test static32}
- {name: static32-run, run: source .github/setenv.sh && c4_run_test static32}
- {name: static32-pack, run: source .github/setenv.sh && c4_package static32}
- name: shared32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared32
- {name: shared32-build, run: source .github/setenv.sh && c4_build_test shared32}
- {name: shared32-run, run: source .github/setenv.sh && c4_run_test shared32}
- {name: shared32-pack, run: source .github/setenv.sh && c4_package shared32}
#----------------------------------------------------------------------------
clang_tidy:
name: clang_tidy/c++${{matrix.std}}/${{matrix.bt}}
continue-on-error: true
if: always() # https://stackoverflow.com/questions/62045967/github-actions-is-there-a-way-to-continue-on-error-while-still-getting-correct
runs-on: ${{matrix.os}}
strategy:
fail-fast: false
matrix:
include:
# clang tidy takes a long time, so don't do multiple bits/linktypes
- {std: 11, cxx: clang++-9, bt: Debug , lint: clang-tidy, bitlinks: shared64, os: ubuntu-18.04}
- {std: 11, cxx: clang++-9, bt: Debug , lint: clang-tidy, bitlinks: shared32, os: ubuntu-18.04}
- {std: 11, cxx: clang++-9, bt: Debug , lint: clang-tidy, bitlinks: static64, os: ubuntu-18.04}
- {std: 11, cxx: clang++-9, bt: Debug , lint: clang-tidy, bitlinks: static32, os: ubuntu-18.04}
- {std: 11, cxx: clang++-9, bt: ReleaseWithDebInfo, lint: clang-tidy, bitlinks: shared64, os: ubuntu-18.04}
- {std: 11, cxx: clang++-9, bt: ReleaseWithDebInfo, lint: clang-tidy, bitlinks: shared32, os: ubuntu-18.04}
- {std: 11, cxx: clang++-9, bt: ReleaseWithDebInfo, lint: clang-tidy, bitlinks: static64, os: ubuntu-18.04}
- {std: 11, cxx: clang++-9, bt: ReleaseWithDebInfo, lint: clang-tidy, bitlinks: static32, os: ubuntu-18.04}
env: {STD: "${{matrix.std}}", CXX_: "${{matrix.cxx}}", BT: "${{matrix.bt}}", BITLINKS: "${{matrix.bitlinks}}", VG: "${{matrix.vg}}", SAN: "${{matrix.san}}", LINT: "${{matrix.lint}}", OS: "${{matrix.os}}"}
steps:
- {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive}}
- {name: install requirements, run: source .github/reqs.sh && c4_install_test_requirements $OS}
- {name: show info, run: source .github/setenv.sh && c4_show_info}
- name: shared64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared64
- {name: shared64-build, run: source .github/setenv.sh && c4_build_test shared64}
- {name: shared64-run, run: source .github/setenv.sh && c4_run_test shared64}
- {name: shared64-pack, run: source .github/setenv.sh && c4_package shared64}
- name: static64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static64
- {name: static64-build, run: source .github/setenv.sh && c4_build_test static64}
- {name: static64-run, run: source .github/setenv.sh && c4_run_test static64}
- {name: static64-pack, run: source .github/setenv.sh && c4_package static64}
- name: static32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static32
- {name: static32-build, run: source .github/setenv.sh && c4_build_test static32}
- {name: static32-run, run: source .github/setenv.sh && c4_run_test static32}
- {name: static32-pack, run: source .github/setenv.sh && c4_package static32}
- name: shared32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared32
- {name: shared32-build, run: source .github/setenv.sh && c4_build_test shared32}
- {name: shared32-run, run: source .github/setenv.sh && c4_run_test shared32}
- {name: shared32-pack, run: source .github/setenv.sh && c4_package shared32}
#----------------------------------------------------------------------------
gcc_extended:
name: gcc_extended/${{matrix.cxx}}/c++${{matrix.std}}/${{matrix.bt}}/vg${{matrix.vg}}
continue-on-error: true
if: always() # https://stackoverflow.com/questions/62045967/github-actions-is-there-a-way-to-continue-on-error-while-still-getting-correct
runs-on: ${{matrix.os}}
strategy:
fail-fast: false
matrix:
include:
# VALGRIND
- {std: 11, cxx: g++-10, bt: Debug , vg: ON, os: ubuntu-18.04}
- {std: 11, cxx: g++-10, bt: Release, vg: ON, os: ubuntu-18.04}
- {std: 14, cxx: g++-10, bt: Debug , vg: ON, os: ubuntu-18.04}
- {std: 14, cxx: g++-10, bt: Release, vg: ON, os: ubuntu-18.04}
- {std: 17, cxx: g++-10, bt: Debug , vg: ON, os: ubuntu-18.04}
- {std: 17, cxx: g++-10, bt: Release, vg: ON, os: ubuntu-18.04}
- {std: 20, cxx: g++-10, bt: Debug , vg: ON, os: ubuntu-18.04}
- {std: 20, cxx: g++-10, bt: Release, vg: ON, os: ubuntu-18.04}
#
- {std: 11, cxx: g++-9, bt: Debug , os: ubuntu-18.04}
- {std: 11, cxx: g++-9, bt: Release, os: ubuntu-18.04}
- {std: 11, cxx: g++-8, bt: Debug , os: ubuntu-18.04}
- {std: 11, cxx: g++-8, bt: Release, os: ubuntu-18.04}
- {std: 11, cxx: g++-7, bt: Debug , os: ubuntu-18.04}
- {std: 11, cxx: g++-7, bt: Release, os: ubuntu-18.04}
- {std: 11, cxx: g++-6, bt: Debug , os: ubuntu-18.04}
- {std: 11, cxx: g++-6, bt: Release, os: ubuntu-18.04}
- {std: 11, cxx: g++-5, bt: Debug , os: ubuntu-18.04}
- {std: 11, cxx: g++-5, bt: Release, os: ubuntu-18.04}
- {std: 11, cxx: g++-4.8, bt: Debug, os: ubuntu-18.04}
- {std: 11, cxx: g++-4.8, bt: Release, os: ubuntu-18.04}
env: {STD: "${{matrix.std}}", CXX_: "${{matrix.cxx}}", BT: "${{matrix.bt}}", BITLINKS: "${{matrix.bitlinks}}", VG: "${{matrix.vg}}", SAN: "${{matrix.san}}", LINT: "${{matrix.lint}}", OS: "${{matrix.os}}"}
steps:
- {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive}}
- {name: install requirements, run: source .github/reqs.sh && c4_install_test_requirements $OS}
- {name: show info, run: source .github/setenv.sh && c4_show_info}
- name: shared64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared64
- {name: shared64-build, run: source .github/setenv.sh && c4_build_test shared64}
- {name: shared64-run, run: source .github/setenv.sh && c4_run_test shared64}
- {name: shared64-pack, run: source .github/setenv.sh && c4_package shared64}
- name: static64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static64
- {name: static64-build, run: source .github/setenv.sh && c4_build_test static64}
- {name: static64-run, run: source .github/setenv.sh && c4_run_test static64}
- {name: static64-pack, run: source .github/setenv.sh && c4_package static64}
- name: static32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static32
- {name: static32-build, run: source .github/setenv.sh && c4_build_test static32}
- {name: static32-run, run: source .github/setenv.sh && c4_run_test static32}
- {name: static32-pack, run: source .github/setenv.sh && c4_package static32}
- name: shared32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared32
- {name: shared32-build, run: source .github/setenv.sh && c4_build_test shared32}
- {name: shared32-run, run: source .github/setenv.sh && c4_run_test shared32}
- {name: shared32-pack, run: source .github/setenv.sh && c4_package shared32}
#----------------------------------------------------------------------------
clang_extended:
name: clang_extended/${{matrix.cxx}}/c++${{matrix.std}}/${{matrix.bt}}/vg${{matrix.vg}}
continue-on-error: true
if: always() # https://stackoverflow.com/questions/62045967/github-actions-is-there-a-way-to-continue-on-error-while-still-getting-correct
runs-on: ${{matrix.os}}
strategy:
fail-fast: false
matrix:
include:
- {std: 20, cxx: clang++-10 , bt: Debug , vg: on, os: ubuntu-18.04}
- {std: 20, cxx: clang++-10 , bt: Release, vg: on, os: ubuntu-18.04}
- {std: 11, cxx: clang++-9 , bt: Debug , vg: on, os: ubuntu-18.04}
- {std: 11, cxx: clang++-9 , bt: Release, vg: on, os: ubuntu-18.04}
- {std: 11, cxx: clang++-8 , bt: Debug , vg: on, os: ubuntu-18.04}
- {std: 11, cxx: clang++-8 , bt: Release, vg: on, os: ubuntu-18.04}
- {std: 11, cxx: clang++-7 , bt: Debug , vg: on, os: ubuntu-18.04}
- {std: 11, cxx: clang++-7 , bt: Release, vg: on, os: ubuntu-18.04}
- {std: 11, cxx: clang++-6.0, bt: Debug , vg: on, os: ubuntu-18.04}
- {std: 11, cxx: clang++-6.0, bt: Release, vg: on, os: ubuntu-18.04}
- {std: 11, cxx: clang++-5.0, bt: Debug , vg: on, os: ubuntu-18.04}
- {std: 11, cxx: clang++-5.0, bt: Release, vg: on, os: ubuntu-18.04}
- {std: 11, cxx: clang++-4.0, bt: Debug , vg: on, os: ubuntu-18.04}
- {std: 11, cxx: clang++-4.0, bt: Release, vg: on, os: ubuntu-18.04}
- {std: 11, cxx: clang++-3.9, bt: Debug , vg: on, os: ubuntu-18.04}
- {std: 11, cxx: clang++-3.9, bt: Release, vg: on, os: ubuntu-18.04}
env: {STD: "${{matrix.std}}", CXX_: "${{matrix.cxx}}", BT: "${{matrix.bt}}", BITLINKS: "${{matrix.bitlinks}}", VG: "${{matrix.vg}}", SAN: "${{matrix.san}}", LINT: "${{matrix.lint}}", OS: "${{matrix.os}}"}
steps:
- {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive}}
- {name: install requirements, run: source .github/reqs.sh && c4_install_test_requirements $OS}
- {name: show info, run: source .github/setenv.sh && c4_show_info}
- name: shared64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared64
- {name: shared64-build, run: source .github/setenv.sh && c4_build_test shared64}
- {name: shared64-run, run: source .github/setenv.sh && c4_run_test shared64}
- {name: shared64-pack, run: source .github/setenv.sh && c4_package shared64}
- name: static64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static64
- {name: static64-build, run: source .github/setenv.sh && c4_build_test static64}
- {name: static64-run, run: source .github/setenv.sh && c4_run_test static64}
- {name: static64-pack, run: source .github/setenv.sh && c4_package static64}
- name: static32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static32
- {name: static32-build, run: source .github/setenv.sh && c4_build_test static32}
- {name: static32-run, run: source .github/setenv.sh && c4_run_test static32}
- {name: static32-pack, run: source .github/setenv.sh && c4_package static32}
- name: shared32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared32
- {name: shared32-build, run: source .github/setenv.sh && c4_build_test shared32}
- {name: shared32-run, run: source .github/setenv.sh && c4_run_test shared32}
- {name: shared32-pack, run: source .github/setenv.sh && c4_package shared32}
#----------------------------------------------------------------------------
clang_sanitize:
name: clang_sanitize/c++${{matrix.std}}/${{matrix.bt}}/vg${{matrix.vg}}
continue-on-error: true
if: always() # https://stackoverflow.com/questions/62045967/github-actions-is-there-a-way-to-continue-on-error-while-still-getting-correct
runs-on: ${{matrix.os}}
strategy:
fail-fast: false
matrix:
include:
# these jobs take much longer, so run only one bitlink pair per job to profit from parallelism
- {std: 11, cxx: clang++-10 , bt: Debug , vg: ON, san: ALL, bitlinks: shared64 static64, os: ubuntu-18.04}
- {std: 11, cxx: clang++-10 , bt: Debug , vg: ON, san: ALL, bitlinks: shared32 static32, os: ubuntu-18.04}
- {std: 11, cxx: clang++-10 , bt: Release, vg: ON, san: ALL, bitlinks: shared64 static64, os: ubuntu-18.04}
- {std: 11, cxx: clang++-10 , bt: Release, vg: ON, san: ALL, bitlinks: shared32 static32, os: ubuntu-18.04}
- {std: 14, cxx: clang++-10 , bt: Debug , vg: ON, san: ALL, bitlinks: shared64 static64, os: ubuntu-18.04}
- {std: 14, cxx: clang++-10 , bt: Debug , vg: ON, san: ALL, bitlinks: shared32 static32, os: ubuntu-18.04}
- {std: 14, cxx: clang++-10 , bt: Release, vg: ON, san: ALL, bitlinks: shared64 static64, os: ubuntu-18.04}
- {std: 14, cxx: clang++-10 , bt: Release, vg: ON, san: ALL, bitlinks: shared32 static32, os: ubuntu-18.04}
- {std: 17, cxx: clang++-10 , bt: Debug , vg: ON, san: ALL, bitlinks: shared64 static64, os: ubuntu-18.04}
- {std: 17, cxx: clang++-10 , bt: Debug , vg: ON, san: ALL, bitlinks: shared32 static32, os: ubuntu-18.04}
- {std: 17, cxx: clang++-10 , bt: Release, vg: ON, san: ALL, bitlinks: shared64 static64, os: ubuntu-18.04}
- {std: 17, cxx: clang++-10 , bt: Release, vg: ON, san: ALL, bitlinks: shared32 static32, os: ubuntu-18.04}
- {std: 20, cxx: clang++-10 , bt: Debug , vg: ON, san: ALL, bitlinks: shared64 static64, os: ubuntu-18.04}
- {std: 20, cxx: clang++-10 , bt: Debug , vg: ON, san: ALL, bitlinks: shared32 static32, os: ubuntu-18.04}
- {std: 20, cxx: clang++-10 , bt: Release, vg: ON, san: ALL, bitlinks: shared64 static64, os: ubuntu-18.04}
- {std: 20, cxx: clang++-10 , bt: Release, vg: ON, san: ALL, bitlinks: shared32 static32, os: ubuntu-18.04}
env: {STD: "${{matrix.std}}", CXX_: "${{matrix.cxx}}", BT: "${{matrix.bt}}", BITLINKS: "${{matrix.bitlinks}}", VG: "${{matrix.vg}}", SAN: "${{matrix.san}}", LINT: "${{matrix.lint}}", OS: "${{matrix.os}}"}
steps:
- {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive}}
- {name: install requirements, run: source .github/reqs.sh && c4_install_test_requirements $OS}
- {name: show info, run: source .github/setenv.sh && c4_show_info}
- name: shared64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared64
- {name: shared64-build, run: source .github/setenv.sh && c4_build_test shared64}
- {name: shared64-run, run: source .github/setenv.sh && c4_run_test shared64}
- {name: shared64-pack, run: source .github/setenv.sh && c4_package shared64}
- name: static64-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static64
- {name: static64-build, run: source .github/setenv.sh && c4_build_test static64}
- {name: static64-run, run: source .github/setenv.sh && c4_run_test static64}
- {name: static64-pack, run: source .github/setenv.sh && c4_package static64}
- name: static32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test static32
- {name: static32-build, run: source .github/setenv.sh && c4_build_test static32}
- {name: static32-run, run: source .github/setenv.sh && c4_run_test static32}
- {name: static32-pack, run: source .github/setenv.sh && c4_package static32}
- name: shared32-configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test shared32
- {name: shared32-build, run: source .github/setenv.sh && c4_build_test shared32}
- {name: shared32-run, run: source .github/setenv.sh && c4_run_test shared32}
- {name: shared32-pack, run: source .github/setenv.sh && c4_package shared32}
#----------------------------------------------------------------------------
arm:
continue-on-error: true
if: always() # https://stackoverflow.com/questions/62045967/github-actions-is-there-a-way-to-continue-on-error-while-still-getting-correct
runs-on: ${{matrix.os}}
strategy:
fail-fast: false
matrix:
include:
# these jobs take much longer, so run only one bitlink pair per job to profit from parallelism
- {std: 11, bt: Debug , toolchain: cmake/Toolchain-Arm-ubuntu.cmake, cxx: arm-linux-gnueabihf-gcc, os: ubuntu-18.04}
- {std: 11, bt: Release, toolchain: cmake/Toolchain-Arm-ubuntu.cmake, cxx: arm-linux-gnueabihf-gcc, os: ubuntu-18.04}
- {std: 14, bt: Debug , toolchain: cmake/Toolchain-Arm-ubuntu.cmake, cxx: arm-linux-gnueabihf-gcc, os: ubuntu-18.04}
- {std: 14, bt: Release, toolchain: cmake/Toolchain-Arm-ubuntu.cmake, cxx: arm-linux-gnueabihf-gcc, os: ubuntu-18.04}
- {std: 17, bt: Debug , toolchain: cmake/Toolchain-Arm-ubuntu.cmake, cxx: arm-linux-gnueabihf-gcc, os: ubuntu-18.04}
- {std: 17, bt: Release, toolchain: cmake/Toolchain-Arm-ubuntu.cmake, cxx: arm-linux-gnueabihf-gcc, os: ubuntu-18.04}
env: {TOOLCHAIN: "${{matrix.toolchain}}", STD: "${{matrix.std}}", CXX_: "${{matrix.cxx}}", BT: "${{matrix.bt}}", BITLINKS: "${{matrix.bitlinks}}", VG: "${{matrix.vg}}", SAN: "${{matrix.san}}", LINT: "${{matrix.lint}}", OS: "${{matrix.os}}"}
steps:
- {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive}}
- {name: install requirements, run: source .github/reqs.sh && c4_install_test_requirements $OS}
- {name: show info, run: source .github/setenv.sh && c4_show_info}
- name: configure---------------------------------------------------
run: source .github/setenv.sh && c4_cfg_test arm
- {name: build, run: source .github/setenv.sh && c4_build_test arm}
- {name: run, run: source .github/setenv.sh && c4_run_test arm}
- {name: pack, run: source .github/setenv.sh && c4_package arm}
#----------------------------------------------------------------------------
# # https://blog.kitware.com/static-checks-with-cmake-cdash-iwyu-clang-tidy-lwyu-cpplint-and-cppcheck/
# static_analysis:
# continue-on-error: true
# if: always() # https://stackoverflow.com/questions/62045967/github-actions-is-there-a-way-to-continue-on-error-while-still-getting-correct
# runs-on: ${{matrix.os}}
# strategy:
# fail-fast: false
# matrix:
# include:
# # these jobs take much longer, so run only one bitlink pair per job to profit from parallelism
# - {std: 11, cxx: clang++-10, bt: Debug , bitlinks: shared64, os: ubuntu-18.04}
# - {std: 11, cxx: clang++-10, bt: Release, bitlinks: shared64, os: ubuntu-18.04}
# - {std: 14, cxx: clang++-10, bt: Debug , bitlinks: shared64, os: ubuntu-18.04}
# - {std: 14, cxx: clang++-10, bt: Release, bitlinks: shared64, os: ubuntu-18.04}
# - {std: 17, cxx: clang++-10, bt: Debug , bitlinks: shared64, os: ubuntu-18.04}
# - {std: 17, cxx: clang++-10, bt: Release, bitlinks: shared64, os: ubuntu-18.04}
# - {std: 20, cxx: clang++-10, bt: Debug , bitlinks: shared64, os: ubuntu-18.04}
# - {std: 20, cxx: clang++-10, bt: Release, bitlinks: shared64, os: ubuntu-18.04}
# env: {STD: "${{matrix.std}}", CXX_: "${{matrix.cxx}}", BT: "${{matrix.bt}}", BITLINKS: "${{matrix.bitlinks}}", VG: "${{matrix.vg}}", SAN: "${{matrix.san}}", LINT: "${{matrix.lint}}", OS: "${{matrix.os}}"}
# steps:
# - {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive}}
# - {name: install requirements, run: source .github/reqs.sh && c4_install_test_requirements $OS}
# - {name: show info, run: source .github/setenv.sh && c4_show_info}
# - name: shared64-configure---------------------------------------------------
# run: source .github/setenv.sh && c4_cfg_test shared64
# - {name: shared64-build, run: source .github/setenv.sh && c4_build_test shared64}
# - {name: clang-tidy, run: cmake "-DCMAKE_CXX_CLANG_TIDY=/usr/bin/clang-tidy-3.9;-checks=*" ../path/to/source}
# - {name: cppcheck, run: cmake "-DCMAKE_CXX_CPPCHECK=/usr/bin/cppcheck;--std=c++11" ../path/to/source}
# - {name: cpplint, run: cmake "-DCMAKE_CXX_CPPLINT=/usr/local/bin/cpplint;--linelength=179" ..}
# - {name: include-what-you-use, run: cmake "-DCMAKE_CXX_INCLUDE_WHAT_YOU_USE=/usr/bin/iwyu;--transitive_includes_only" ..}
# - {name: link-what-you-use, run: cmake -DCMAKE_LINK_WHAT_YOU_USE=TRUE ..}

View File

@@ -1,104 +0,0 @@
name: test_install
defaults:
#if: "!contains(github.event.head_commit.message, 'skip ci')" # SKIP
run:
# Use a bash shell so we can use the same syntax for environment variable
# access regardless of the host operating system
shell: bash -e -x {0}
on:
# https://github.community/t/how-to-trigger-an-action-on-push-or-pull-request-but-not-both/16662
workflow_dispatch:
push:
branches:
- master
pull_request:
branches:
- master
env:
PROJ_PFX_TARGET: c4core-
PROJ_PFX_CMAKE: C4CORE_
CMAKE_FLAGS:
NUM_JOBS_BUILD: # 4
jobs:
#----------------------------------------------------------------------------
install_tests:
name: ${{matrix.name}}/${{matrix.bt}}
# if: github.ref == 'refs/heads/master'
continue-on-error: true
if: always() # https://stackoverflow.com/questions/62045967/github-actions-is-there-a-way-to-continue-on-error-while-still-getting-correct
runs-on: ${{matrix.os}}
strategy:
fail-fast: false
matrix:
include:
- {name: find_package/linux , sdir: test/test_install , os: ubuntu-18.04, cxx: g++-10 , gen: "-DCMAKE_CXX_COMPILER=g++-10" , tgt: all , bt: Release, vars: "-Dc4core_DIR=$GITHUB_WORKSPACE/$PDIR/lib/cmake/c4core -DC4CORE_TEST_INSTALL_PACKAGE_MODE=ON", commonvars: }
- {name: find_package/linux , sdir: test/test_install , os: ubuntu-18.04, cxx: g++-10 , gen: "-DCMAKE_CXX_COMPILER=g++-10" , tgt: all , bt: Debug , vars: "-Dc4core_DIR=$GITHUB_WORKSPACE/$PDIR/lib/cmake/c4core -DC4CORE_TEST_INSTALL_PACKAGE_MODE=ON", commonvars: }
- {name: find_package/linux/libcxx, sdir: test/test_install , os: ubuntu-18.04, cxx: clang++-9, gen: "-DCMAKE_CXX_COMPILER=clang++-9" , tgt: all , bt: Release, vars: "-Dc4core_DIR=$GITHUB_WORKSPACE/$PDIR/lib/cmake/c4core -DC4CORE_TEST_INSTALL_PACKAGE_MODE=ON", commonvars: "-DC4CORE_USE_LIBCXX=ON"}
- {name: find_package/linux/libcxx, sdir: test/test_install , os: ubuntu-18.04, cxx: clang++-9, gen: "-DCMAKE_CXX_COMPILER=clang++-9" , tgt: all , bt: Debug , vars: "-Dc4core_DIR=$GITHUB_WORKSPACE/$PDIR/lib/cmake/c4core -DC4CORE_TEST_INSTALL_PACKAGE_MODE=ON", commonvars: "-DC4CORE_USE_LIBCXX=ON"}
- {name: find_package/macos , sdir: test/test_install , os: macos-11.0 , cxx: xcode , gen: "-G Xcode -DCMAKE_OSX_ARCHITECTURES=x86_64", tgt: ALL_BUILD, bt: Release, vars: "-Dc4core_DIR=$GITHUB_WORKSPACE/$PDIR/lib/cmake/c4core -DC4CORE_TEST_INSTALL_PACKAGE_MODE=ON", commonvars: }
- {name: find_package/macos , sdir: test/test_install , os: macos-11.0 , cxx: xcode , gen: "-G Xcode -DCMAKE_OSX_ARCHITECTURES=x86_64", tgt: ALL_BUILD, bt: Debug , vars: "-Dc4core_DIR=$GITHUB_WORKSPACE/$PDIR/lib/cmake/c4core -DC4CORE_TEST_INSTALL_PACKAGE_MODE=ON", commonvars: }
- {name: find_package/win , sdir: test/test_install , os: windows-2019, cxx: vs2019 , gen: "-G 'Visual Studio 16 2019' -A x64" , tgt: ALL_BUILD, bt: Release, vars: "-Dc4core_DIR=$GITHUB_WORKSPACE/$PDIR/cmake -DC4CORE_TEST_INSTALL_PACKAGE_MODE=ON", commonvars: }
- {name: find_package/win , sdir: test/test_install , os: windows-2019, cxx: vs2019 , gen: "-G 'Visual Studio 16 2019' -A x64" , tgt: ALL_BUILD, bt: Debug , vars: "-Dc4core_DIR=$GITHUB_WORKSPACE/$PDIR/cmake -DC4CORE_TEST_INSTALL_PACKAGE_MODE=ON", commonvars: }
#
- {name: find_library/linux , sdir: test/test_install , os: ubuntu-18.04, cxx: g++-10 , gen: "-DCMAKE_CXX_COMPILER=g++-10" , tgt: all , bt: Release, vars: "-DCMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/$PDIR -DC4CORE_TEST_INSTALL_PACKAGE_MODE=OFF", commonvars: }
- {name: find_library/linux , sdir: test/test_install , os: ubuntu-18.04, cxx: g++-10 , gen: "-DCMAKE_CXX_COMPILER=g++-10" , tgt: all , bt: Debug , vars: "-DCMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/$PDIR -DC4CORE_TEST_INSTALL_PACKAGE_MODE=OFF", commonvars: }
- {name: find_library/linux/libcxx, sdir: test/test_install , os: ubuntu-18.04, cxx: clang++-9, gen: "-DCMAKE_CXX_COMPILER=clang++-9" , tgt: all , bt: Release, vars: "-DCMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/$PDIR -DC4CORE_TEST_INSTALL_PACKAGE_MODE=OFF", commonvars: "-DC4CORE_USE_LIBCXX=ON"}
- {name: find_library/linux/libcxx, sdir: test/test_install , os: ubuntu-18.04, cxx: clang++-9, gen: "-DCMAKE_CXX_COMPILER=clang++-9" , tgt: all , bt: Debug , vars: "-DCMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/$PDIR -DC4CORE_TEST_INSTALL_PACKAGE_MODE=OFF", commonvars: "-DC4CORE_USE_LIBCXX=ON"}
- {name: find_library/macos , sdir: test/test_install , os: macos-11.0 , cxx: xcode , gen: "-G Xcode -DCMAKE_OSX_ARCHITECTURES=x86_64", tgt: ALL_BUILD, bt: Release, vars: "-DCMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/$PDIR -DC4CORE_TEST_INSTALL_PACKAGE_MODE=OFF", commonvars: }
- {name: find_library/macos , sdir: test/test_install , os: macos-11.0 , cxx: xcode , gen: "-G Xcode -DCMAKE_OSX_ARCHITECTURES=x86_64", tgt: ALL_BUILD, bt: Debug , vars: "-DCMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/$PDIR -DC4CORE_TEST_INSTALL_PACKAGE_MODE=OFF", commonvars: }
- {name: find_library/win , sdir: test/test_install , os: windows-2019, cxx: vs2019 , gen: "-G 'Visual Studio 16 2019' -A x64" , tgt: ALL_BUILD, bt: Release, vars: "-DCMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/$PDIR -DC4CORE_TEST_INSTALL_PACKAGE_MODE=OFF", commonvars: }
- {name: find_library/win , sdir: test/test_install , os: windows-2019, cxx: vs2019 , gen: "-G 'Visual Studio 16 2019' -A x64" , tgt: ALL_BUILD, bt: Debug , vars: "-DCMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/$PDIR -DC4CORE_TEST_INSTALL_PACKAGE_MODE=OFF", commonvars: }
#
- {name: singleheader/linux , sdir: test/test_singleheader, os: ubuntu-18.04, cxx: g++-10 , gen: "-DCMAKE_CXX_COMPILER=g++-10" , tgt: all , bt: Release, vars: , commonvars: }
- {name: singleheader/linux , sdir: test/test_singleheader, os: ubuntu-18.04, cxx: g++-10 , gen: "-DCMAKE_CXX_COMPILER=g++-10" , tgt: all , bt: Debug , vars: , commonvars: }
- {name: singleheader/linux/libcxx, sdir: test/test_singleheader, os: ubuntu-18.04, cxx: clang++-9, gen: "-DCMAKE_CXX_COMPILER=clang++-9" , tgt: all , bt: Release, vars: , commonvars: "-DC4CORE_USE_LIBCXX=ON"}
- {name: singleheader/linux/libcxx, sdir: test/test_singleheader, os: ubuntu-18.04, cxx: clang++-9, gen: "-DCMAKE_CXX_COMPILER=clang++-9" , tgt: all , bt: Debug , vars: , commonvars: "-DC4CORE_USE_LIBCXX=ON"}
- {name: singleheader/macos , sdir: test/test_singleheader, os: macos-11.0 , cxx: xcode , gen: "-G Xcode -DCMAKE_OSX_ARCHITECTURES=x86_64", tgt: ALL_BUILD, bt: Release, vars: , commonvars: }
- {name: singleheader/macos , sdir: test/test_singleheader, os: macos-11.0 , cxx: xcode , gen: "-G Xcode -DCMAKE_OSX_ARCHITECTURES=x86_64", tgt: ALL_BUILD, bt: Debug , vars: , commonvars: }
- {name: singleheader/win , sdir: test/test_singleheader, os: windows-2019, cxx: vs2019 , gen: "-G 'Visual Studio 16 2019' -A x64" , tgt: ALL_BUILD, bt: Release, vars: , commonvars: }
- {name: singleheader/win , sdir: test/test_singleheader, os: windows-2019, cxx: vs2019 , gen: "-G 'Visual Studio 16 2019' -A x64" , tgt: ALL_BUILD, bt: Debug , vars: , commonvars: }
env:
CXX_: "${{matrix.cxx}}"
BT: "${{matrix.bt}}"
OS: "${{matrix.os}}"
BDIR: "build/${{matrix.name}}-${{matrix.bt}}"
IDIR: "install/${{matrix.name}}-${{matrix.bt}}"
PDIR: "prefix/${{matrix.name}}-${{matrix.bt}}"
steps:
- {name: checkout, uses: actions/checkout@v2, with: {submodules: recursive}}
- {name: install requirements, run: source .github/reqs.sh && c4_install_test_requirements $OS}
- {name: show info, run: source .github/setenv.sh && c4_show_info}
- name: Install python 3.9
uses: actions/setup-python@v2
with: { python-version: 3.9 }
- name: preinstall
run: |
if [ "${{matrix.sdir}}" == "test/test_install" ] ; then
mkdir -p $BDIR-staging
cmake -S . -B $BDIR-staging -DCMAKE_INSTALL_PREFIX=$PDIR -DCMAKE_BUILD_TYPE=${{matrix.bt}} ${{matrix.gen}} ${{matrix.commonvars}}
cmake --build $BDIR-staging --config ${{matrix.bt}} --target ${{matrix.tgt}} -j
cmake --build $BDIR-staging --config ${{matrix.bt}} --target install
fi
- name: configure
run: |
mkdir -p $BDIR
mkdir -p $IDIR
cmake -S ${{matrix.sdir}} -B $BDIR \
-DC4CORE_BUILD_TESTS=ON \
-DC4CORE_VALGRIND=OFF \
-DCMAKE_BUILD_TYPE=${{matrix.bt}} \
-DCMAKE_INSTALL_PREFIX=$IDIR \
${{matrix.gen}} \
${{matrix.vars}} \
${{matrix.commonvars}}
- name: build
run: |
cmake --build $BDIR --config ${{matrix.bt}} --target c4core-test-build -j
- name: run
run: |
cmake --build $BDIR --config ${{matrix.bt}} --target c4core-test-run

View File

@@ -1,34 +0,0 @@
# text editor files
*.bck
\#*
*~
.ccls-cache/
.clangd/
.cache/
.cquery_cached_index/
__pycache__/
# Visual Studio files
.vs/
.vscode/
# QtCreator files
CMakeLists.txt.user
# Eclipse
.project
.cproject
/.settings/
# build files
build/
install/
.python-version
compile_commands.json
# test files
/Testing/
# continuous integration files
.github/vagrant/*.log
.github/vagrant/.vagrant
.github/vagrant/macos/.vagrant
src_singleheader/

View File

@@ -1,9 +0,0 @@
[submodule "cmake"]
path = cmake
url = https://github.com/biojppm/cmake
[submodule "extern/debugbreak"]
path = src/c4/ext/debugbreak
url = https://github.com/biojppm/debugbreak
[submodule "src/c4/ext/fast_float"]
path = src/c4/ext/fast_float
url = https://github.com/fastfloat/fast_float

View File

@@ -1,107 +0,0 @@
cmake_minimum_required(VERSION 3.13 FATAL_ERROR)
include(./cmake/c4Project.cmake)
project(c4core
DESCRIPTION "Multiplatform low-level C++ utilities"
HOMEPAGE_URL "https://github.com/biojppm/c4core"
LANGUAGES CXX)
include(./compat.cmake)
c4_project(VERSION 0.1.8
AUTHOR "Joao Paulo Magalhaes <dev@jpmag.me>")
option(C4CORE_WITH_FASTFLOAT "use fastfloat to parse floats" ON)
set(C4CORE_SRC_FILES
c4/allocator.hpp
c4/base64.hpp
c4/base64.cpp
c4/blob.hpp
c4/bitmask.hpp
c4/charconv.hpp
c4/c4_pop.hpp
c4/c4_push.hpp
c4/char_traits.cpp
c4/char_traits.hpp
c4/common.hpp
c4/compiler.hpp
c4/config.hpp
c4/cpu.hpp
c4/ctor_dtor.hpp
c4/dump.hpp
c4/enum.hpp
c4/error.cpp
c4/error.hpp
c4/export.hpp
c4/format.hpp
c4/format.cpp
c4/hash.hpp
c4/language.hpp
c4/language.cpp
c4/memory_resource.cpp
c4/memory_resource.hpp
c4/memory_util.cpp
c4/memory_util.hpp
c4/platform.hpp
c4/preprocessor.hpp
c4/restrict.hpp
c4/span.hpp
c4/std/std.hpp
c4/std/std_fwd.hpp
c4/std/string.hpp
c4/std/string_fwd.hpp
c4/std/tuple.hpp
c4/std/vector.hpp
c4/std/vector_fwd.hpp
c4/substr.hpp
c4/substr_fwd.hpp
c4/szconv.hpp
c4/type_name.hpp
c4/types.hpp
c4/unrestrict.hpp
c4/utf.hpp
c4/utf.cpp
c4/windows.hpp
c4/windows_pop.hpp
c4/windows_push.hpp
c4/c4core.natvis
#
c4/ext/debugbreak/debugbreak.h
c4/ext/rng/rng.hpp
c4/ext/sg14/inplace_function.h
)
if(C4CORE_WITH_FASTFLOAT)
list(APPEND C4CORE_SRC_FILES
c4/ext/fast_float.hpp
c4/ext/fast_float_all.h
)
endif()
set(C4CORE_AMALGAMATED ${C4CORE_SRC_DIR}/../src_singleheader/c4/c4core_all.hpp)
list(TRANSFORM C4CORE_SRC_FILES PREPEND "${C4CORE_SRC_DIR}/" OUTPUT_VARIABLE C4CORE_SRC_FILES_FULL)
add_custom_target(c4core-amalgamate
python ${CMAKE_CURRENT_LIST_DIR}/tools/amalgamate.py ${C4CORE_AMALGAMATED}
COMMENT "${CMAKE_CURRENT_LIST_DIR}/tools/amalgamate.py ${C4CORE_AMALGAMATED}"
BYPRODUCTS ${C4CORE_AMALGAMATED}
DEPENDS ${C4CORE_SRC_FILES_FULL}
)
c4_add_library(c4core
INC_DIRS
$<BUILD_INTERFACE:${C4CORE_SRC_DIR}> $<INSTALL_INTERFACE:include>
SOURCE_ROOT ${C4CORE_SRC_DIR}
SOURCES ${C4CORE_SRC_FILES}
)
if(NOT C4CORE_WITH_FASTFLOAT)
target_compile_definitions(c4core PUBLIC -DC4CORE_NO_FAST_FLOAT)
endif()
#-------------------------------------------------------
c4_install_target(c4core)
c4_install_exports()
c4_add_dev_targets()
c4_pack_project(TYPE LIBRARY)

View File

@@ -1,26 +0,0 @@
src/c4/ext/sg14/inplace_function.h is distributed under the following terms:
----------------------------------------------------------------------------
Boost Software License - Version 1.0 - August 17th, 2003
Permission is hereby granted, free of charge, to any person or organization
obtaining a copy of the software and accompanying documentation covered by
this license (the "Software") to use, reproduce, display, distribute,
execute, and transmit the Software, and to prepare derivative works of the
Software, and to permit third-parties to whom the Software is furnished to
do so, all subject to the following:
The copyright notices in the Software and this entire statement, including
the above license grant, this restriction and the following disclaimer,
must be included in all copies of the Software, in whole or in part, and
all derivative works of the Software, unless such copies or derivative
works are solely in the form of machine-executable object code generated by
a source language processor.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

View File

@@ -1,20 +0,0 @@
Copyright (c) 2018, Joao Paulo Magalhaes <dev@jpmag.me>
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

View File

@@ -1,232 +0,0 @@
# c4core - C++ core utilities
[![MIT Licensed](https://img.shields.io/badge/License-MIT-green.svg)](https://github.com/biojppm/c4core/blob/master/LICENSE.txt)
[![Docs](https://img.shields.io/badge/docs-docsforge-blue)](https://c4core.docsforge.com/)
[![ci](https://github.com/biojppm/c4core/workflows/ci/badge.svg)](https://github.com/biojppm/c4core/actions?query=ci)
[![Coveralls](https://coveralls.io/repos/github/biojppm/c4core/badge.svg)](https://coveralls.io/github/biojppm/c4core)
[![Codecov](https://codecov.io/gh/biojppm/c4core/branch/master/graph/badge.svg)](https://codecov.io/gh/biojppm/c4core)
[![LGTM alerts](https://img.shields.io/lgtm/alerts/g/biojppm/c4core.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/biojppm/c4core/alerts/)
[![LGTM grade: C/C++](https://img.shields.io/lgtm/grade/cpp/g/biojppm/c4core.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/biojppm/c4core/context:cpp)
c4core is a library of low-level C++ utilities, written with low-latency
projects in mind.
Some of the utilities provided by c4core have already equivalent
functionality in the C++ standard, but they are provided as the existing C++
equivalent may be insufficient (eg, std::string_view), inefficient (eg,
std::string), heavy (eg streams), or plainly unusable on some
platforms/projects, (eg exceptions); some other utilities have equivalent
under consideration for C++ standardisation; and yet some other utilities
have (to my knowledge) no equivalent under consideration. Be that as it may,
I've been using these utilities in this or similar forms for some years now,
and I've found them incredibly useful in my projects. I'm packing these as a
separate library, as all of my projects use it.
c4core is [extensively unit-tested in Linux, Windows and
MacOS](https://github.com/biojppm/c4core/actions). The tests cover
x64, x86, arm, wasm (emscripten), aarch64, ppc64le and s390x
architectures, and include analysing c4core with:
* valgrind
* clang-tidy
* clang sanitizers:
* memory
* address
* undefined behavior
* thread
* [LGTM.com](https://lgtm.com/projects/g/biojppm/c4core)
c4core also works [in
bare-metal](https://github.com/biojppm/c4core/issues/63) as well as
[in RISC-V](https://github.com/biojppm/c4core/pull/69) but at the
moment it's not easy to add automated tests to the CI, so for now
these are not in the list of official architectures.
## Obtaining c4core
c4core uses git submodules. It is best to clone c4core with the `--recursive`
option:
```bash
# using --recursive makes sure git submodules are also cloned at the same time
git clone --recursive https://github.com/biojppm/c4core
```
If you ommit the `--recursive` option, then after cloning you will have to
make git checkout the current version of the submodules, using `git submodule
init` followed by `git submodule update`.
## Using c4core in your project
c4core is built with cmake, and assumes you also use cmake. Although c4core
is NOT header-only, and currently has no install target, you can very easily
use c4core in your project by using
`add_subdirectory(${path_to_c4core_root})` in your CMakeLists.txt; this will
add c4core as a subproject of your project. Doing this is not intrusive to
your cmake project because c4core is fast to build (typically under 10s), and
it also prefixes every cmake variable with `C4CORE_`. But more importantly
this will enable you to compile c4core with the exact same compile settings
used by your project.
Here's a very quick complete example of setting up your project to use
c4core:
```cmake
project(foo)
add_subdirectory(c4core)
add_library(foo foo.cpp)
target_link_libraries(foo PUBLIC c4core) # that's it!
```
Note above that the call to `target_link_libraries()` is using PUBLIC
linking. This is required to make sure the include directories from `c4core`
are transitively used.
## Quick tour
All of the utilities in this library are under the namespace `c4`; any
exposed macros use the prefix `C4_`: eg `C4_ASSERT()`.
### Multi-platform / multi-compiler utilities
```c++
// TODO: elaborate on the topics:
#include <c4/error.hpp>
C4_LIKELY()/C4_UNLIKELY()
C4_RESTRICT, $, c$, $$, c$$
#include <c4/restrict.hpp>
#include <c4/unrestrict.hpp>
#include <c4/windows_push.hpp>
#include <c4/windows_pop.hpp>
C4_UNREACHABLE()
c4::type_name()
```
### Runtime assertions and error handling
```c++
// TODO: elaborate on the topics:
error callback
C4_ASSERT()
C4_XASSERT()
C4_CHECK()
C4_ERROR()
C4_NOT_IMPLEMENTED()
```
### Memory allocation
```c++
// TODO: elaborate on the topics:
c4::aalloc(), c4::afree() // aligned allocation
c4::MemoryResource // global and scope
c4::Allocator
```
### Mass initialization/construction/destruction
```c++
// TODO: elaborate on the topics:
c4::construct()/c4::construct_n()
c4::destroy()/c4::destroy_n()
c4::copy_construct()/c4::copy_construct_n()
c4::copy_assign()/c4::copy_assign_n()
c4::move_construct()/c4::move_construct_n()
c4::move_assign()/c4::move_assign_n()
c4::make_room()/c4::destroy_room()
```
### Writeable string views: c4::substr and c4::csubstr
Here: [`#include <c4/substr.hpp>`](src/c4/substr.hpp)
### Value <-> character interoperation
Here: [`#include <c4/charconv.hpp>`](src/c4/charconv.hpp)
```c++
// TODO: elaborate on the topics:
c4::utoa(), c4::atou()
c4::itoa(), c4::atoi()
c4::ftoa(), c4::atof()
c4::dtoa(), c4::atod()
c4::to_chars(), c4::from_chars()
c4::to_chars_sub()
c4::to_chars_first()
```
### String formatting and parsing
* [`#include <c4/format.hpp>`](src/c4/format.hpp)
```c++
// TODO: elaborate on the topics:
c4::cat(), c4::uncat()
c4::catsep(), c4::uncatsep()
c4::format(), c4::unformat()
// formatting:
c4::raw, c4::craw
```
### `c4::span` and `c4::blob`
* [`#include <c4/span.hpp>`](src/c4/span.hpp)
* [`#include <c4/blob.hpp>`](src/c4/blob.hpp)
### Enums and enum symbols
[`#include <c4/enum.hpp>`](src/c4/enum.hpp)
```c++
// TODO: elaborate on the topics:
c4::e2str(), c4::str2e()
```
### Bitmasks and bitmask symbols
[`#include <c4/bitmask.hpp>`](src/c4/bitmask.hpp)
```c++
// TODO: elaborate on the topics:
c4::bm2str(), c4::str2bm()
```
### Base64 encoding / decoding
[`#include <c4/base64.hpp>`](src/c4/base64.hpp)
### Fuzzy float comparison

View File

@@ -1,23 +0,0 @@
# ROADMAP
## New features
These changes will provide new features, and client code can be kept
unchanged.
## API changes
These changes will require client code to be updated.
* [breaking] drop use of C-style sprintf() formats in error messages and
assertions. Change the implementation to use c4::format()
```c++
C4_ASSERT_MSG(sz > s.size(), "sz=%zu s.size()=%zu", sz, s.size());
// ... the above changes to:
C4_ASSERT_MSG(sz > s.size(), "sz={} s.size()={}", sz, s.size());
```
## Implementation changes
* drop calls to sprintf() in charconv.hpp.

View File

@@ -1,3 +0,0 @@
# 0.1.0
First release.

View File

@@ -1,5 +0,0 @@
# 0.1.1
- Fix parsing of hexadecimal floats ([2d5c3f0](https://github.com/biojppm/c4core/commits/2d5c3f0))
- Fix `csubstr::reverse_sub()` ([902c5b9](https://github.com/biojppm/c4core/commits/902c5b9))
- Fix [#35](https://github.com/biojppm/c4core/issues/35): add SO_VERSION

View File

@@ -1,4 +0,0 @@
- Fix error macros (ie `C4_ERROR()`, `C4_CHECK()`, `C4_ASSERT()`, etc) such that they are a single statement
- `is_debugger_attached()`: add MacOSX version
- Add support for Visual Studio 2022
- Ensure `C4_LITTLE_ENDIAN` is always defined, even with mixed endianness

View File

@@ -1 +0,0 @@
- Update fast_float to [3.2.1](https://github.com/fastfloat/fast_float/releases/tag/v3.2.0)

View File

@@ -1,6 +0,0 @@
- [PR #38](https://github.com/biojppm/c4core/pull/38): add s390x architecture feature macros.
- Fix compiler warnings after update of fast_float to [3.2.1](https://github.com/fastfloat/fast_float/releases/tag/v3.2.0).
### Thanks
@musicinmybrain

View File

@@ -1,2 +0,0 @@
- Add support for aarch64, s390x, ppc64le CPU architectures
- Update debugbreak header (added support for the above architectures)

View File

@@ -1,2 +0,0 @@
- Fix wrong version names in version 0.1.5 (was saying 0.1.4, should be 0.1.5)

View File

@@ -1,5 +0,0 @@
- Fix build with C4CORE_NO_FAST_FLOAT ([#42](https://github.com/biojppm/c4core/pull/42)).
- Fix clang warning in AIX/xlclang ([#44](https://github.com/biojppm/c4core/pull/44)).
### Thanks
--- @mbs-c

View File

@@ -1,45 +0,0 @@
### New features
- Add amalgamation into a single header file ([PR #48](https://github.com/biojppm/c4core/pull/48)):
- The amalgamated header will be available together with the deliverables from each release.
- To generate the amalgamated header:
```
$ python tools/amalgamate.py c4core_all.hpp
```
- To use the amalgamated header:
- Include at will in any header of your project.
- In one - and only one - of your project source files, `#define C4CORE_SINGLE_HDR_DEFINE_NOW` and then `#include <c4core_all.hpp>`. This will enable the function and class definitions in the header file. For example, here's a sample program:
```c++
#include <iostream>
#define C4CORE_SINGLE_HDR_DEFINE_NOW // do this before the include
#include <c4core_all.hpp>
int main()
{
for(c4::csubstr s : c4::csubstr("a/b/c/d").split('/'))
std::cout << s << "\n";
}
```
- Add `csubstr::is_unsigned_integer()` and `csubstr::is_real()` ([PR #49](https://github.com/biojppm/c4core/pull/49)).
- CMake: add alias target c4core::c4core, guaranteeing that the same code can be used with `add_subdirectory()` and `find_package()`. (see [rapidyaml #173](https://github.com/biojppm/rapidyaml/issues/173))
- Add support for compilation with emscripten (WebAssembly+javascript) ([PR #52](https://github.com/biojppm/c4core/pull/52)).
### Fixes
- Fix edge cases with empty strings in `span::first()`, `span::last()` and `span::range()` ([PR #49](https://github.com/biojppm/c4core/pull/49)).
- Accept octal numbers in `substr::first_real_span()` and `substr::is_real()` ([PR #49](https://github.com/biojppm/c4core/pull/49)).
- `substr`: fix coverage misses in number query methods ([PR #49](https://github.com/biojppm/c4core/pull/49)).
- Use single-header version of fast_float ([PR #49](https://github.com/biojppm/c4core/pull/47)).
- Suppress warnings triggered from fast_float in clang (`-Wfortify-source`) ([PR #49](https://github.com/biojppm/c4core/pull/47)).
- Add missing `inline` in [src/c4/ext/rng/rng.hpp](src/c4/ext/rng/rng.hpp) ([PR #49](https://github.com/biojppm/c4core/pull/47)).
- Fix compilation of [src/c4/ext/rng/inplace_function.h](src/c4/ext/inplace_function.h) in C++11 ([PR #49](https://github.com/biojppm/c4core/pull/47)).
- Change order of headers, notably in `windows_push.hpp` ([PR #47](https://github.com/biojppm/c4core/pull/47)).
- In `c4/charconv.hpp`: do not use C4_ASSERT in `to_c_fmt()`, which is `constexpr`.
- Fix [#53](https://github.com/biojppm/c4core/issues/53): cmake install targets were missing call to `export()` ([PR #55](https://github.com/biojppm/c4core/pull/55)).
- Fix linking of subprojects with libc++: flags should be forwarded through `CMAKE_***_FLAGS` instead of being set explicitly per-target ([PR #54](https://github.com/biojppm/c4core/pull/54)).
### Thanks
- @cschreib

View File

@@ -1,31 +0,0 @@
### Breaking changes
- fix [#63](https://github.com/biojppm/c4core/issues/63): remove `c4/time.hpp` and `c4/time.cpp` which prevented compilation in bare-metal mode ([PR #64](https://github.com/biojppm/c4core/issues/64)).
### New features
- Added decoding of UTF codepoints: `c4::decode_code_point()` ([PR #65](https://github.com/biojppm/c4core/issues/65)).
- Experimental feature: add formatted-dumping facilities: using semantics like `c4::cat()`, `c4::catsep()` and `c4::format()`, where the subject is not a string buffer but a dump callback accepting strings. This still requires a string buffer for serialization of non-string types, but the buffer's required size is now limited to the max serialized size of non-string arguments, in contrast to the requirement in `c4::cat()` et al which is the total serialized size of every argument. This enables very efficient and generic printf-like semantics with reuse of a single small buffer, and allows direct-printing to terminal or file ([PR #67](https://github.com/biojppm/c4core/issues/67)). This feature is still experimental and a minor amount of changes to the API is possible.
- Added macro `C4_IF_CONSTEXPR` resolving to `if constexpr (...)` if the c++ standard is at least c++17.
- `csubstr`: add `count(csubstr)` overload.
- Add support for RISC-V architectures ([PR #69](https://github.com/biojppm/c4core/issues/69)).
- Add support for bare-metal compilation ([PR #64](https://github.com/biojppm/c4core/issues/64)).
- gcc >= 4.8 support using polyfills for missing templates and features ([PR #74](https://github.com/biojppm/c4core/pull/74) and [PR #68](https://github.com/biojppm/c4core/pull/68)).
### Fixes
- `csubstr::operator==(std::nullptr_t)` now returns true if either `.str==nullptr` or `.len==0`.
- Fix: `bool operator==(const char (&s)[N], csubstr)` and `operator==(const char (&s)[N], substr)`. The template declaration for these functions had an extra `const` which prevented these functions to participate in overload resolution, which in some cases resulted in calls resolving to `operator==(std::string const&, csubstr)` if that header was visible ([PR #64](https://github.com/biojppm/c4core/issues/64)).
- Fix `csubstr::last_not_of()`: optional positional parameter was ignored [PR #62](https://github.com/biojppm/c4core/pull/62).
- `atof()`, `atod()`, `atox()`, `substr::is_real()`, `substr::first_real_span()`: accept `infinity`, `inf` and `nan` as valid reals [PR #60](https://github.com/biojppm/c4core/pull/60).
- Add missing export symbols [PR #56](https://github.com/biojppm/c4core/pull/56), [PR #57](https://github.com/biojppm/c4core/pull/57).
- `c4/substr_fwd.hpp`: fix compilation failure in Xcode 12 and earlier, where the forward declaration for `std::allocator` is inside the `inline namespace __1`, unlike later versions [PR #61](https://github.com/biojppm/c4core/pull/61), reported in [rapidyaml#185](https://github.com/biojppm/rapidyaml/issues/185).
- `c4/error.hpp`: fix compilation failure in debug mode in Xcode 12 and earlier: `__clang_major__` does not mean the same as in the common clang, and as a result the warning `-Wgnu-inline-cpp-without-extern` does not exist there.
### Thanks
- @danngreen
- @Xeonacid
- @aviktorov
- @fargies

View File

@@ -1 +0,0 @@
__pycache__

View File

@@ -1,120 +0,0 @@
# this function works both with multiconfig and single-config generators.
function(set_default_build_type which)
# CMAKE_CONFIGURATION_TYPES is available only for multiconfig generators.
# so set the build type only if CMAKE_CONFIGURATION_TYPES does not exist.
if(NOT CMAKE_CONFIGURATION_TYPES) # not a multiconfig generator?
if(NOT CMAKE_BUILD_TYPE)
if(NOT which)
set(which RelWithDebInfo)
endif()
message("Defaulting to ${which} build.")
set(CMAKE_BUILD_TYPE ${which} CACHE STRING "")
endif()
endif()
endfunction()
# https://stackoverflow.com/questions/31546278/where-to-set-cmake-configuration-types-in-a-project-with-subprojects
function(setup_configuration_types)
set(options0arg
)
set(options1arg
DEFAULT
)
set(optionsnarg
TYPES
)
cmake_parse_arguments("" "${options0arg}" "${options1arg}" "${optionsnarg}" ${ARGN})
if(NOT TYPES)
set(TYPES Release Debug RelWithDebInfo MinSizeRel)
endif()
# make it safe to call repeatedly
if(NOT _setup_configuration_types_done)
set(_setup_configuration_types_done 1 CACHE INTERNAL "")
# No reason to set CMAKE_CONFIGURATION_TYPES if it's not a multiconfig generator
# Also no reason mess with CMAKE_BUILD_TYPE if it's a multiconfig generator.
if(CMAKE_CONFIGURATION_TYPES) # multiconfig generator?
set(CMAKE_CONFIGURATION_TYPES "${TYPES}" CACHE STRING "")
else() # single-config generator
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY HELPSTRING "Choose the type of build")
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "${TYPES}")
# set the valid options for cmake-gui drop-down list
endif()
endif()
endfunction()
# https://stackoverflow.com/questions/31546278/where-to-set-cmake-configuration-types-in-a-project-with-subprojects
function(add_configuration_type name)
set(flag_vars
C_FLAGS
CXX_FLAGS
SHARED_LINKER_FLAGS
STATIC_LINKER_FLAGS
MODULE_LINKER_FLAGS
EXE_LINKER_FLAGS
RC_FLAGS
)
set(options0arg
PREPEND # when defaulting to a config, prepend to it instead of appending to it
SET_MAIN_FLAGS # eg, set CMAKE_CXX_FLAGS from CMAKE_CXX_FLAGS_${name}
)
set(options1arg
DEFAULT_FROM # take the initial value of the flags from this config
)
set(optionsnarg
C_FLAGS
CXX_FLAGS
SHARED_LINKER_FLAGS
STATIC_LINKER_FLAGS
MODULE_LINKER_FLAGS
EXE_LINKER_FLAGS
RC_FLAGS
)
cmake_parse_arguments(_act "${options0arg}" "${options1arg}" "${optionsnarg}" ${ARGN})
string(TOUPPER ${name} UNAME)
# make it safe to call repeatedly
if(NOT _add_configuration_type_${name})
set(_add_configuration_type_${name} 1 CACHE INTERNAL "")
setup_configuration_types()
if(CMAKE_CONFIGURATION_TYPES) # multiconfig generator?
set(CMAKE_CONFIGURATION_TYPES "${CMAKE_CONFIGURATION_TYPES};${name}" CACHE STRING "" FORCE)
else() # single-config generator
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY HELPSTRING "Choose the type of build" FORCE)
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "${CMAKE_BUILD_TYPES};${name}" FORCE)
# set the valid options for cmake-gui drop-down list
endif()
# now set up the configuration
message(STATUS "config: CMAKE_${f}_${UNAME} --- ${val}")
foreach(f ${flag_vars})
set(val ${_act_${f}})
message(STATUS "config: ${name}: ${f} --- ${val}")
if(_act_DEFAULT_FROM)
if(_act_PREPEND)
set(val "${val} ${CMAKE_${f}_${_act_DEFAULT_FROM}}")
else()
set(val "${CMAKE_${f}_${_act_DEFAULT_FROM}} ${val}")
endif()
endif()
message(STATUS "config: CMAKE_${f}_${UNAME} --- ${val}")
set(CMAKE_${f}_${UNAME} "${val}" CACHE STRING "" FORCE)
mark_as_advanced(CMAKE_${f}_${UNAME})
if(_act_SET_MAIN_FLAGS)
set(CMAKE_${f} "${CMAKE_${f}_${UNAME}}" CACHE STRING "" FORCE)
endif()
endforeach()
endif()
endfunction()

View File

@@ -1,30 +0,0 @@
# create hierarchical source groups based on a dir tree
#
# EXAMPLE USAGE:
#
# create_source_group("src" "${SRC_ROOT}" "${SRC_LIST}")
#
# Visual Studio usually has the equivalent to this:
#
# create_source_group("Header Files" ${PROJ_SRC_DIR} "${PROJ_HEADERS}")
# create_source_group("Source Files" ${PROJ_SRC_DIR} "${PROJ_SOURCES}")
#
# TODO: <jpmag> this was taken from a stack overflow answer. Need to find it
# and add a link here.
macro(create_source_group GroupPrefix RootDir ProjectSources)
set(DirSources ${ProjectSources})
foreach(Source ${DirSources})
#message(STATUS "s=${Source}")
string(REGEX REPLACE "${RootDir}" "" RelativePath "${Source}")
#message(STATUS " ${RelativePath}")
string(REGEX REPLACE "[\\\\/][^\\\\/]*$" "" RelativePath "${RelativePath}")
#message(STATUS " ${RelativePath}")
string(REGEX REPLACE "^[\\\\/]" "" RelativePath "${RelativePath}")
#message(STATUS " ${RelativePath}")
string(REGEX REPLACE "/" "\\\\\\\\" RelativePath "${RelativePath}")
#message(STATUS " ${RelativePath}")
source_group("${GroupPrefix}\\${RelativePath}" FILES ${Source})
#message(STATUS " ${Source}")
endforeach(Source)
endmacro(create_source_group)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,215 +0,0 @@
# (C) 2017 Joao Paulo Magalhaes <dev@jpmag.me>
include(CMakeParseArguments)
#------------------------------------------------------------------------------
# Usage:
#
# ExternalProject_GetFwdArgs(output_var
# [NO_DEFAULTS]
# [VARS var1 var2 ...]
# [EXCLUDE xvar1 xvar2 ...]
# [QUIET]
# )
#
# Get the current cmake environment in a sequence of -DVAR=${VAR}
# tokens so that the environment can be forwarded to an external
# cmake project through CMAKE_ARGS.
#
# Example:
# ExternalProject_GetFwdArgs(FWD_ARGS)
# ExternalProject_Add(foo SOURCE_DIR ../foo
# CMAKE_ARGS ${FWD_ARGS}
# ... etc)
#
# Use this function to enable forwarding the current cmake environment
# to an external project. It outputs all the needed variables in the
# form of a sequence of -DVAR=value, suitable for use in the CMAKE_ARGS
# clause of ExternalProject_Add().
#
# This function uses ExternalProject_GetFwdVarNames() to find out the
# list of variables to export. If this behaviour does not fit your
# needs you can:
#
# * append more of your own variables (using the VARS
# argument). The vars specified in this option will each be
# added to the output in the form of -Dvar=${var}
#
# * you can also avoid any defaults obtained through usage of
# ExternalProject_GetFwdNames() by specifying NO_DEFAULTS.
#
# Example with custom variable names (adding more):
# ExternalProject_GetFwdVarNames(FWD_ARGS VARS USER_VAR1 USER_VAR2)
# ExternalProjectAdd(foo SOURCE_DIR ../foo CMAKE_ARGS ${FWD_ARGS})
#
# Example with custom variable names (just your own):
# ExternalProject_GetFwdVarNames(FWD_ARGS NO_DEFAULTS VARS USER_VAR1 USER_VAR2)
# ExternalProjectAdd(foo SOURCE_DIR ../foo CMAKE_ARGS ${FWD_ARGS})
#
function(ExternalProject_GetFwdArgs output_var)
set(options0arg
NO_DEFAULTS
QUIET
)
set(options1arg
)
set(optionsnarg
VARS
EXCLUDE
)
cmake_parse_arguments(_epgfa "${options0arg}" "${options1arg}" "${optionsnarg}" ${ARGN})
if(NOT _epfga_NO_DEFAULTS)
ExternalProject_GetFwdVarNames(_fwd_names)
endif()
if(_epgfa_VARS)
list(APPEND _fwd_names ${_epgfa_VARS})
endif()
if(_epgfa_EXCLUDE)
list(REMOVE_ITEM _fwd_names ${_epgfa_EXCLUDE})
endif()
set(_epgfa_args)
foreach(_f ${_fwd_names})
if(${_f})
list(APPEND _epgfa_args -D${_f}=${${_f}})
if(NOT _epfga_QUIET)
message(STATUS "ExternalProject_GetFwdArgs: ${_f}=${${_f}}")
endif()
endif()
endforeach()
set(${output_var} "${_epgfa_args}" PARENT_SCOPE)
endfunction(ExternalProject_GetFwdArgs)
#------------------------------------------------------------------------------
# Gets a default list with the names of variables to forward to an
# external project. This function creates a list of common cmake
# variable names which have an impact in the output binaries or their
# placement.
function(ExternalProject_GetFwdVarNames output_var)
# these common names are irrespective of build type
set(names
CMAKE_GENERATOR
CMAKE_INSTALL_PREFIX
CMAKE_ARCHIVE_OUTPUT_DIRECTORY
CMAKE_LIBRARY_OUTPUT_DIRECTORY
CMAKE_RUNTIME_OUTPUT_DIRECTORY
CMAKE_AR
CMAKE_BUILD_TYPE
CMAKE_INCLUDE_PATH
CMAKE_LIBRARY_PATH
#CMAKE_MODULE_PATH # this is dangerous as it can override the external project's build files.
CMAKE_PREFIX_PATH
BUILD_SHARED_LIBS
CMAKE_CXX_COMPILER
CMAKE_C_COMPILER
CMAKE_LINKER
CMAKE_MAKE_PROGRAM
CMAKE_NM
CMAKE_OBJCOPY
CMAKE_RANLIB
CMAKE_STRIP
CMAKE_TOOLCHAIN_FILE
#CMAKE_CONFIGURATION_TYPES # not this. external projects will have their own build configurations
)
# these names have per-build type values;
# use CMAKE_CONFIGURATION_TYPES to construct the list
foreach(v
CMAKE_CXX_FLAGS
CMAKE_C_FLAGS
CMAKE_EXE_LINKER_FLAGS
CMAKE_MODULE_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS)
list(APPEND names ${v})
foreach(t ${CMAKE_CONFIGURATION_TYPES})
string(TOUPPER ${t} u)
list(APPEND names ${v}_${u})
endforeach()
endforeach()
set(${output_var} "${names}" PARENT_SCOPE)
endfunction(ExternalProject_GetFwdVarNames)
#------------------------------------------------------------------------------
macro(ExternalProject_Import name)
set(options0arg
)
set(options1arg
PREFIX # look only here when findind
)
set(optionsnarg
INCLUDE_PATHS # use these dirs for searching includes
LIBRARY_PATHS # use these dirs for searching libraries
INCLUDES # find these includes and append them to ${name}_INCLUDE_DIRS
INCLUDE_DIR_SUFFIXES
LIBRARIES # find these libs and append them to ${name}_LIBRARIES
LIBRARY_DIR_SUFFIXES
)
cmake_parse_arguments(_eep "${options0arg}" "${options1arg}" "${optionsnarg}" ${ARGN})
if(NOT _eep_PREFIX)
message(FATAL_ERROR "no prefix was given")
endif()
include(FindPackageHandleStandardArgs)
#----------------------------------------------------------------
# includes
# the list of paths to search for includes
set(_eep_ipaths ${_eep_PREFIX})
foreach(_eep_i ${_eep_INCLUDE_DIRS})
list(APPEND _eep_ipaths ${__eep_PREFIX}/${_eep_i})
endforeach()
# find the includes that were asked for, and add
# their paths to the includes list
set(_eep_idirs)
foreach(_eep_i ${_eep_INCLUDES})
find_path(_eep_path_${_eep_i} ${_eep_i}
PATHS ${_eep_ipaths}
PATH_SUFFIXES include ${_eep_INCLUDE_DIR_SUFFIXES}
NO_DEFAULT_PATH
)
if(NOT _eep_path_${_eep_i})
message(FATAL_ERROR "could not find include: ${_eep_i}")
endif()
#message(STATUS "include: ${_eep_i} ---> ${_eep_path_${_eep_i}}")
list(APPEND _eep_idirs ${_eep_path_${_eep_i}})
find_package_handle_standard_args(${_eep_i}_INCLUDE_DIR DEFAULT_MSG _eep_path_${_eep_i})
endforeach()
if(_eep_idirs)
list(REMOVE_DUPLICATES _eep_idirs)
endif()
# save the include list
set(${name}_INCLUDE_DIRS "${_eep_idirs}" CACHE STRING "" FORCE)
#----------------------------------------------------------------
# libraries
# the list of paths to search for libraries
set(_eep_lpaths ${_eep_PREFIX})
foreach(_eep_i ${_eep_LIBRARIES})
list(APPEND _eep_lpaths ${__eep_PREFIX}/${_eep_i})
endforeach()
# find any libraries that were asked for
set(_eep_libs)
foreach(_eep_i ${_eep_LIBRARIES})
find_library(_eep_lib_${_eep_i} ${_eep_i}
PATHS ${_eep_lpaths}
PATH_SUFFIXES lib ${_eep_LIBRARY_DIR_SUFFIXES}
NO_DEFAULT_PATH
)
if(NOT _eep_lib_${_eep_i})
message(FATAL_ERROR "could not find library: ${_eep_i}")
endif()
#message(STATUS "lib: ${_eep_i} ---> ${_eep_lib_${_eep_i}}")
list(APPEND _eep_libs ${_eep_lib_${_eep_i}})
find_package_handle_standard_args(${_eep_i}_LIBRARY DEFAULT_MSG _eep_lib_${_eep_i})
endforeach()
# save the include list
set(${name}_LIBRARIES ${_eep_libs} CACHE STRING "")
endmacro(ExternalProject_Import)

View File

@@ -1,75 +0,0 @@
# Find the win10 SDK path.
if ("$ENV{WIN10_SDK_PATH}$ENV{WIN10_SDK_VERSION}" STREQUAL "" )
get_filename_component(WIN10_SDK_PATH "[HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\Microsoft\\Microsoft SDKs\\Windows\\v10.0;InstallationFolder]" ABSOLUTE CACHE)
get_filename_component(TEMP_WIN10_SDK_VERSION "[HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\Microsoft\\Microsoft SDKs\\Windows\\v10.0;ProductVersion]" ABSOLUTE CACHE)
get_filename_component(WIN10_SDK_VERSION ${TEMP_WIN10_SDK_VERSION} NAME)
elseif(TRUE)
set (WIN10_SDK_PATH $ENV{WIN10_SDK_PATH})
set (WIN10_SDK_VERSION $ENV{WIN10_SDK_VERSION})
endif ("$ENV{WIN10_SDK_PATH}$ENV{WIN10_SDK_VERSION}" STREQUAL "" )
# WIN10_SDK_PATH will be something like C:\Program Files (x86)\Windows Kits\10
# WIN10_SDK_VERSION will be something like 10.0.14393 or 10.0.14393.0; we need the
# one that matches the directory name.
if (IS_DIRECTORY "${WIN10_SDK_PATH}/Include/${WIN10_SDK_VERSION}.0")
set(WIN10_SDK_VERSION "${WIN10_SDK_VERSION}.0")
endif (IS_DIRECTORY "${WIN10_SDK_PATH}/Include/${WIN10_SDK_VERSION}.0")
# Find the d3d12 and dxgi include path, it will typically look something like this.
# C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\um\d3d12.h
# C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\shared\dxgi1_4.h
find_path(D3D12_INCLUDE_DIR # Set variable D3D12_INCLUDE_DIR
d3d12.h # Find a path with d3d12.h
HINTS "${WIN10_SDK_PATH}/Include/${WIN10_SDK_VERSION}/um"
DOC "path to WIN10 SDK header files"
HINTS
)
find_path(DXGI_INCLUDE_DIR # Set variable DXGI_INCLUDE_DIR
dxgi1_4.h # Find a path with dxgi1_4.h
HINTS "${WIN10_SDK_PATH}/Include/${WIN10_SDK_VERSION}/shared"
DOC "path to WIN10 SDK header files"
HINTS
)
if ("${DXC_BUILD_ARCH}" STREQUAL "x64" )
find_library(D3D12_LIBRARY NAMES d3d12.lib
HINTS ${WIN10_SDK_PATH}/Lib/${WIN10_SDK_VERSION}/um/x64 )
elseif (CMAKE_GENERATOR MATCHES "Visual Studio.*ARM" OR "${DXC_BUILD_ARCH}" STREQUAL "ARM")
find_library(D3D12_LIBRARY NAMES d3d12.lib
HINTS ${WIN10_SDK_PATH}/Lib/${WIN10_SDK_VERSION}/um/arm )
elseif (CMAKE_GENERATOR MATCHES "Visual Studio.*ARM64" OR "${DXC_BUILD_ARCH}" STREQUAL "ARM64")
find_library(D3D12_LIBRARY NAMES d3d12.lib
HINTS ${WIN10_SDK_PATH}/Lib/${WIN10_SDK_VERSION}/um/arm64 )
elseif ("${DXC_BUILD_ARCH}" STREQUAL "Win32" )
find_library(D3D12_LIBRARY NAMES d3d12.lib
HINTS ${WIN10_SDK_PATH}/Lib/${WIN10_SDK_VERSION}/um/x86 )
endif ("${DXC_BUILD_ARCH}" STREQUAL "x64" )
if ("${DXC_BUILD_ARCH}" STREQUAL "x64" )
find_library(DXGI_LIBRARY NAMES dxgi.lib
HINTS ${WIN10_SDK_PATH}/Lib/${WIN10_SDK_VERSION}/um/x64 )
elseif (CMAKE_GENERATOR MATCHES "Visual Studio.*ARM" OR "${DXC_BUILD_ARCH}" STREQUAL "ARM")
find_library(DXGI_LIBRARY NAMES dxgi.lib
HINTS ${WIN10_SDK_PATH}/Lib/${WIN10_SDK_VERSION}/um/arm )
elseif (CMAKE_GENERATOR MATCHES "Visual Studio.*ARM64" OR "${DXC_BUILD_ARCH}" STREQUAL "ARM64")
find_library(DXGI_LIBRARY NAMES dxgi.lib
HINTS ${WIN10_SDK_PATH}/Lib/${WIN10_SDK_VERSION}/um/arm64 )
elseif ("${DXC_BUILD_ARCH}" STREQUAL "Win32" )
find_library(DXGI_LIBRARY NAMES dxgi.lib
HINTS ${WIN10_SDK_PATH}/Lib/${WIN10_SDK_VERSION}/um/x86 )
endif ("${DXC_BUILD_ARCH}" STREQUAL "x64" )
set(D3D12_LIBRARIES ${D3D12_LIBRARY} ${DXGI_LIBRARY})
set(D3D12_INCLUDE_DIRS ${D3D12_INCLUDE_DIR} ${DXGI_INCLUDE_DIR})
include(FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set D3D12_FOUND to TRUE
# if all listed variables are TRUE
find_package_handle_standard_args(D3D12 DEFAULT_MSG
D3D12_INCLUDE_DIRS D3D12_LIBRARIES)
mark_as_advanced(D3D12_INCLUDE_DIRS D3D12_LIBRARIES)

View File

@@ -1,76 +0,0 @@
# Attempt to find the D3D12 libraries
# Defines:
#
# DX12_FOUND - system has DX12
# DX12_INCLUDE_PATH - path to the DX12 headers
# DX12_LIBRARIES - path to the DX12 libraries
# DX12_LIB - d3d12.lib
set(DX12_FOUND "NO")
if(WIN32)
set(WIN10_SDK_DIR "C:/Program Files (x86)/Windows Kits/10")
#set(WIN10_SDK_VERSION "10.0.10069.0")
file(GLOB WIN10_SDK_VERSIONS
LIST_DIRECTORIES TRUE
RELATIVE "${WIN10_SDK_DIR}/Lib"
"${WIN10_SDK_DIR}/Lib/*")
list(SORT WIN10_SDK_VERSIONS)
list(GET WIN10_SDK_VERSIONS -1 WIN10_SDK_VERSION)
if(CMAKE_CL_64)
set(w10ARCH x64)
elseif(CMAKE_GENERATOR MATCHES "Visual Studio.*ARM" OR "${DXC_BUILD_ARCH}" STREQUAL "ARM")
set(w10ARCH arm)
elseif(CMAKE_GENERATOR MATCHES "Visual Studio.*ARM64" OR "${DXC_BUILD_ARCH}" STREQUAL "ARM64")
set(w10ARCH arm64)
else()
set(w10ARCH x86)
endif()
# Look for the windows 8 sdk
find_path(DX12_INC_DIR
NAMES d3d12.h
PATHS "${WIN10_SDK_DIR}/Include/${WIN10_SDK_VERSION}/um"
DOC "Path to the d3d12.h file"
)
find_path(DXGI_INC_DIR
NAMES dxgi1_4.h
PATHS "${WIN10_SDK_DIR}/Include/${WIN10_SDK_VERSION}/shared"
DOC "Path to the dxgi header file"
)
if(DX12_INC_DIR AND DXGI_INC_DIR)
find_library(DX12_LIB
NAMES d3d12
PATHS "${WIN10_SDK_DIR}/Lib/${WIN10_SDK_VERSION}/um/${w10ARCH}"
NO_DEFAULT_PATH
DOC "Path to the d3d12.lib file"
)
find_library(DXGI_LIB
NAMES dxgi
PATHS "${WIN10_SDK_DIR}/Lib/${WIN10_SDK_VERSION}/um/${w10ARCH}"
NO_DEFAULT_PATH
DOC "Path to the dxgi.lib file"
)
if(DX12_LIB AND DXGI_LIB)
set(DX12_FOUND "YES")
set(DX12_LIBRARIES ${DX12_LIB} ${DXGI_LIB})
mark_as_advanced(DX12_INC_DIR DX12_LIB)
mark_as_advanced(DXGI_INC_DIR DXGI_LIB)
endif()
endif()
endif(WIN32)
if(DX12_FOUND)
if(NOT DX12_FIND_QUIETLY)
message(STATUS "DX12 headers found at ${DX12_INC_DIR}")
endif()
else()
if(DX12_FIND_REQUIRED)
message(FATAL_ERROR "Could NOT find Direct3D12")
endif()
if(NOT DX12_FIND_QUIETLY)
message(STATUS "Could NOT find Direct3D12")
endif()
endif()

Some files were not shown because too many files have changed in this diff Show More