git subrepo clone --branch=20.41.6 git@github.com:ETLCPP/etl.git components/etl
subrepo: subdir: "components/etl" merged: "be5537ec" upstream: origin: "git@github.com:ETLCPP/etl.git" branch: "20.41.6" commit: "be5537ec" git-subrepo: version: "0.4.9" origin: "???" commit: "???"
This commit is contained in:
parent
931c4def56
commit
11c24647ea
1296 changed files with 801882 additions and 0 deletions
32
components/etl/.circleci/config.yml
Normal file
32
components/etl/.circleci/config.yml
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
version: 2
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
docker:
|
||||||
|
- image: "rikorose/gcc-cmake:latest"
|
||||||
|
branches:
|
||||||
|
only:
|
||||||
|
- master
|
||||||
|
- development
|
||||||
|
steps:
|
||||||
|
- checkout:
|
||||||
|
- run:
|
||||||
|
name: Listing0
|
||||||
|
command: 'ls -lrt'
|
||||||
|
- run:
|
||||||
|
name: Creating Build Files
|
||||||
|
command: 'cmake -Bbuild test/'
|
||||||
|
- run:
|
||||||
|
name: Creating Binary Files
|
||||||
|
command: 'cmake --build build'
|
||||||
|
- run:
|
||||||
|
name: Listing1
|
||||||
|
command: 'ls -lrt /root/project/build'
|
||||||
|
- run:
|
||||||
|
name: Listing2
|
||||||
|
command: 'ls -lrt /root/project/build/CMakeFiles'
|
||||||
|
- run:
|
||||||
|
name: Listing3
|
||||||
|
command: 'cat /root/project/build/CMakeFiles/CMakeOutput.log'
|
||||||
|
- run:
|
||||||
|
name: ETL Unit Testing
|
||||||
|
command: './build/etl_tests'
|
51
components/etl/.clang-format
Normal file
51
components/etl/.clang-format
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
---
|
||||||
|
#------------------------------------
|
||||||
|
# Configuration for clang-format v12
|
||||||
|
#------------------------------------
|
||||||
|
|
||||||
|
Language: Cpp
|
||||||
|
|
||||||
|
SortIncludes: true
|
||||||
|
|
||||||
|
BasedOnStyle: Chromium
|
||||||
|
|
||||||
|
BinPackParameters: false
|
||||||
|
BitFieldColonSpacing: Both
|
||||||
|
|
||||||
|
BreakBeforeBraces: Allman
|
||||||
|
BreakConstructorInitializers: BeforeComma
|
||||||
|
|
||||||
|
AllowShortBlocksOnASingleLine: false
|
||||||
|
AllowShortCaseLabelsOnASingleLine: true
|
||||||
|
AllowShortFunctionsOnASingleLine: None
|
||||||
|
AllowShortIfStatementsOnASingleLine: false
|
||||||
|
|
||||||
|
AllowAllArgumentsOnNextLine: true
|
||||||
|
AllowAllParametersOfDeclarationOnNextLine: true
|
||||||
|
|
||||||
|
ConstructorInitializerAllOnOneLineOrOnePerLine: 'true'
|
||||||
|
ConstructorInitializerIndentWidth: '2'
|
||||||
|
|
||||||
|
NamespaceIndentation: All
|
||||||
|
IndentPPDirectives: BeforeHash
|
||||||
|
PointerAlignment: Left
|
||||||
|
ColumnLimit: '0'
|
||||||
|
ContinuationIndentWidth: '2'
|
||||||
|
UseTab: Never
|
||||||
|
TabWidth: '2'
|
||||||
|
IndentWidth: '2'
|
||||||
|
AccessModifierOffset : '-2'
|
||||||
|
IndentCaseLabels: false
|
||||||
|
Cpp11BracedListStyle: 'true'
|
||||||
|
AlignAfterOpenBracket: Align
|
||||||
|
AlignConsecutiveDeclarations: true
|
||||||
|
|
||||||
|
#------------------------------------
|
||||||
|
# Configurations not supported by clang-format v12
|
||||||
|
#------------------------------------
|
||||||
|
# BreakInheritanceList: AfterComma
|
||||||
|
# EmptyLineBeforeAccessModifier: Always
|
||||||
|
# EmptyLineAfterAccessModifier: Always
|
||||||
|
# ReferenceAlignment: Left
|
||||||
|
|
||||||
|
...
|
18
components/etl/.devcontainer/Dockerfile
Normal file
18
components/etl/.devcontainer/Dockerfile
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
ARG BASE_IMAGE_NAME="clang:latest"
|
||||||
|
|
||||||
|
FROM ${BASE_IMAGE_NAME}
|
||||||
|
|
||||||
|
ARG REINSTALL_CMAKE_VERSION_FROM_SOURCE="3.31.7"
|
||||||
|
|
||||||
|
# Optionally install the cmake for vcpkg
|
||||||
|
COPY ./reinstall-cmake.sh /tmp/
|
||||||
|
|
||||||
|
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
|
||||||
|
&& apt-get -y install --no-install-recommends \
|
||||||
|
git \
|
||||||
|
wget
|
||||||
|
|
||||||
|
RUN if [ "${REINSTALL_CMAKE_VERSION_FROM_SOURCE}" != "none" ]; then \
|
||||||
|
chmod +x /tmp/reinstall-cmake.sh && /tmp/reinstall-cmake.sh ${REINSTALL_CMAKE_VERSION_FROM_SOURCE}; \
|
||||||
|
fi \
|
||||||
|
&& rm -f /tmp/reinstall-cmake.sh
|
12
components/etl/.devcontainer/clang10/devcontainer.json
Normal file
12
components/etl/.devcontainer/clang10/devcontainer.json
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
||||||
|
// README at: https://github.com/devcontainers/templates/tree/main/src/cpp
|
||||||
|
{
|
||||||
|
"name": "Clang 10",
|
||||||
|
"build": {
|
||||||
|
"dockerfile": "../Dockerfile",
|
||||||
|
"args": {
|
||||||
|
"BASE_IMAGE_NAME": "silkeh/clang:10"
|
||||||
|
},
|
||||||
|
"context": "../context"
|
||||||
|
}
|
||||||
|
}
|
12
components/etl/.devcontainer/clang11/devcontainer.json
Normal file
12
components/etl/.devcontainer/clang11/devcontainer.json
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
||||||
|
// README at: https://github.com/devcontainers/templates/tree/main/src/cpp
|
||||||
|
{
|
||||||
|
"name": "Clang 11",
|
||||||
|
"build": {
|
||||||
|
"dockerfile": "../Dockerfile",
|
||||||
|
"args": {
|
||||||
|
"BASE_IMAGE_NAME": "silkeh/clang:11"
|
||||||
|
},
|
||||||
|
"context": "../context"
|
||||||
|
}
|
||||||
|
}
|
12
components/etl/.devcontainer/clang12/devcontainer.json
Normal file
12
components/etl/.devcontainer/clang12/devcontainer.json
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
||||||
|
// README at: https://github.com/devcontainers/templates/tree/main/src/cpp
|
||||||
|
{
|
||||||
|
"name": "Clang 12",
|
||||||
|
"build": {
|
||||||
|
"dockerfile": "../Dockerfile",
|
||||||
|
"args": {
|
||||||
|
"BASE_IMAGE_NAME": "silkeh/clang:12"
|
||||||
|
},
|
||||||
|
"context": "../context"
|
||||||
|
}
|
||||||
|
}
|
12
components/etl/.devcontainer/clang13/devcontainer.json
Normal file
12
components/etl/.devcontainer/clang13/devcontainer.json
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
||||||
|
// README at: https://github.com/devcontainers/templates/tree/main/src/cpp
|
||||||
|
{
|
||||||
|
"name": "Clang 13",
|
||||||
|
"build": {
|
||||||
|
"dockerfile": "../Dockerfile",
|
||||||
|
"args": {
|
||||||
|
"BASE_IMAGE_NAME": "silkeh/clang:13"
|
||||||
|
},
|
||||||
|
"context": "../context"
|
||||||
|
}
|
||||||
|
}
|
12
components/etl/.devcontainer/clang14/devcontainer.json
Normal file
12
components/etl/.devcontainer/clang14/devcontainer.json
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
||||||
|
// README at: https://github.com/devcontainers/templates/tree/main/src/cpp
|
||||||
|
{
|
||||||
|
"name": "Clang 14",
|
||||||
|
"build": {
|
||||||
|
"dockerfile": "../Dockerfile",
|
||||||
|
"args": {
|
||||||
|
"BASE_IMAGE_NAME": "silkeh/clang:14"
|
||||||
|
},
|
||||||
|
"context": "../context"
|
||||||
|
}
|
||||||
|
}
|
12
components/etl/.devcontainer/clang15/devcontainer.json
Normal file
12
components/etl/.devcontainer/clang15/devcontainer.json
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
||||||
|
// README at: https://github.com/devcontainers/templates/tree/main/src/cpp
|
||||||
|
{
|
||||||
|
"name": "Clang 15",
|
||||||
|
"build": {
|
||||||
|
"dockerfile": "../Dockerfile",
|
||||||
|
"args": {
|
||||||
|
"BASE_IMAGE_NAME": "silkeh/clang:15"
|
||||||
|
},
|
||||||
|
"context": "../context"
|
||||||
|
}
|
||||||
|
}
|
12
components/etl/.devcontainer/clang16/devcontainer.json
Normal file
12
components/etl/.devcontainer/clang16/devcontainer.json
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
||||||
|
// README at: https://github.com/devcontainers/templates/tree/main/src/cpp
|
||||||
|
{
|
||||||
|
"name": "Clang 16",
|
||||||
|
"build": {
|
||||||
|
"dockerfile": "../Dockerfile",
|
||||||
|
"args": {
|
||||||
|
"BASE_IMAGE_NAME": "silkeh/clang:16"
|
||||||
|
},
|
||||||
|
"context": "../context"
|
||||||
|
}
|
||||||
|
}
|
12
components/etl/.devcontainer/clang17/devcontainer.json
Normal file
12
components/etl/.devcontainer/clang17/devcontainer.json
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
||||||
|
// README at: https://github.com/devcontainers/templates/tree/main/src/cpp
|
||||||
|
{
|
||||||
|
"name": "Clang 17",
|
||||||
|
"build": {
|
||||||
|
"dockerfile": "../Dockerfile",
|
||||||
|
"args": {
|
||||||
|
"BASE_IMAGE_NAME": "silkeh/clang:17"
|
||||||
|
},
|
||||||
|
"context": "../context"
|
||||||
|
}
|
||||||
|
}
|
12
components/etl/.devcontainer/clang18/devcontainer.json
Normal file
12
components/etl/.devcontainer/clang18/devcontainer.json
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
||||||
|
// README at: https://github.com/devcontainers/templates/tree/main/src/cpp
|
||||||
|
{
|
||||||
|
"name": "Clang 18",
|
||||||
|
"build": {
|
||||||
|
"dockerfile": "../Dockerfile",
|
||||||
|
"args": {
|
||||||
|
"BASE_IMAGE_NAME": "silkeh/clang:18-bullseye"
|
||||||
|
},
|
||||||
|
"context": "../context"
|
||||||
|
}
|
||||||
|
}
|
12
components/etl/.devcontainer/clang19/devcontainer.json
Normal file
12
components/etl/.devcontainer/clang19/devcontainer.json
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
||||||
|
// README at: https://github.com/devcontainers/templates/tree/main/src/cpp
|
||||||
|
{
|
||||||
|
"name": "Clang 19",
|
||||||
|
"build": {
|
||||||
|
"dockerfile": "../Dockerfile",
|
||||||
|
"args": {
|
||||||
|
"BASE_IMAGE_NAME": "silkeh/clang:19-bullseye"
|
||||||
|
},
|
||||||
|
"context": "../context"
|
||||||
|
}
|
||||||
|
}
|
12
components/etl/.devcontainer/clang20/devcontainer.json
Normal file
12
components/etl/.devcontainer/clang20/devcontainer.json
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
||||||
|
// README at: https://github.com/devcontainers/templates/tree/main/src/cpp
|
||||||
|
{
|
||||||
|
"name": "Clang 20",
|
||||||
|
"build": {
|
||||||
|
"dockerfile": "../Dockerfile",
|
||||||
|
"args": {
|
||||||
|
"BASE_IMAGE_NAME": "silkeh/clang:20-bullseye"
|
||||||
|
},
|
||||||
|
"context": "../context"
|
||||||
|
}
|
||||||
|
}
|
12
components/etl/.devcontainer/clang7/devcontainer.json
Normal file
12
components/etl/.devcontainer/clang7/devcontainer.json
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
||||||
|
// README at: https://github.com/devcontainers/templates/tree/main/src/cpp
|
||||||
|
{
|
||||||
|
"name": "Clang 07",
|
||||||
|
"build": {
|
||||||
|
"dockerfile": "../Dockerfile",
|
||||||
|
"args": {
|
||||||
|
"BASE_IMAGE_NAME": "silkeh/clang:7"
|
||||||
|
},
|
||||||
|
"context": "../context"
|
||||||
|
}
|
||||||
|
}
|
12
components/etl/.devcontainer/clang8/devcontainer.json
Normal file
12
components/etl/.devcontainer/clang8/devcontainer.json
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
||||||
|
// README at: https://github.com/devcontainers/templates/tree/main/src/cpp
|
||||||
|
{
|
||||||
|
"name": "Clang 08",
|
||||||
|
"build": {
|
||||||
|
"dockerfile": "../Dockerfile",
|
||||||
|
"args": {
|
||||||
|
"BASE_IMAGE_NAME": "silkeh/clang:8"
|
||||||
|
},
|
||||||
|
"context": "../context"
|
||||||
|
}
|
||||||
|
}
|
12
components/etl/.devcontainer/clang9/devcontainer.json
Normal file
12
components/etl/.devcontainer/clang9/devcontainer.json
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
||||||
|
// README at: https://github.com/devcontainers/templates/tree/main/src/cpp
|
||||||
|
{
|
||||||
|
"name": "Clang 09",
|
||||||
|
"build": {
|
||||||
|
"dockerfile": "../Dockerfile",
|
||||||
|
"args": {
|
||||||
|
"BASE_IMAGE_NAME": "silkeh/clang:9"
|
||||||
|
},
|
||||||
|
"context": "../context"
|
||||||
|
}
|
||||||
|
}
|
291
components/etl/.devcontainer/context/reinstall-cmake.sh
Normal file
291
components/etl/.devcontainer/context/reinstall-cmake.sh
Normal file
|
@ -0,0 +1,291 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# For more detailed debugging, uncomment the next line
|
||||||
|
# set -x
|
||||||
|
|
||||||
|
# Explicitly set CMAKE_VERSION from first argument, default to "none"
|
||||||
|
CMAKE_VERSION=${1:-"none"}
|
||||||
|
|
||||||
|
# --- Configuration ---
|
||||||
|
DOWNLOAD_ATTEMPTS=3
|
||||||
|
DOWNLOAD_RETRY_DELAY=5 # seconds
|
||||||
|
|
||||||
|
# --- Global Variables ---
|
||||||
|
TMP_DIR="" # Initialize TMP_DIR, will be set by mktemp
|
||||||
|
# Filenames used within TMP_DIR
|
||||||
|
CMAKE_INSTALLER_SCRIPT_LOCAL_NAME="cmake-installer.sh"
|
||||||
|
CMAKE_CHECKSUM_FILE_LOCAL_NAME="cmake-checksums.txt"
|
||||||
|
# This will be the actual name of the CMake binary, derived from version and arch
|
||||||
|
# It's important for matching against the checksum file.
|
||||||
|
DERIVED_CMAKE_BINARY_FILENAME=""
|
||||||
|
|
||||||
|
# --- Cleanup Function ---
|
||||||
|
# This trap will execute on EXIT, ERR, SIGINT, SIGTERM
|
||||||
|
# It's crucial for debugging to see the state of TMP_DIR if things go wrong.
|
||||||
|
cleanup() {
|
||||||
|
# $? is the exit code of the last command before the trap was triggered
|
||||||
|
# or the argument to exit if the script called exit explicitly.
|
||||||
|
LAST_EXIT_CODE=$?
|
||||||
|
echo # Newline for readability
|
||||||
|
|
||||||
|
# Only proceed with detailed cleanup if TMP_DIR was actually created
|
||||||
|
if [[ -n "${TMP_DIR}" && -d "${TMP_DIR}" ]]; then
|
||||||
|
echo "--- Cleanup: Temporary Directory Inspector (${TMP_DIR}) ---"
|
||||||
|
echo "Listing contents of TMP_DIR:"
|
||||||
|
ls -la "${TMP_DIR}"
|
||||||
|
|
||||||
|
# Check and display checksum file content
|
||||||
|
if [[ -f "${TMP_DIR}/${CMAKE_CHECKSUM_FILE_LOCAL_NAME}" ]]; then
|
||||||
|
echo "--- Content of downloaded checksum file (${CMAKE_CHECKSUM_FILE_LOCAL_NAME}) ---"
|
||||||
|
cat "${TMP_DIR}/${CMAKE_CHECKSUM_FILE_LOCAL_NAME}"
|
||||||
|
echo "--- End of checksum file ---"
|
||||||
|
else
|
||||||
|
echo "Checksum file (${CMAKE_CHECKSUM_FILE_LOCAL_NAME}) not found in TMP_DIR."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check and display head of (potentially) installer script
|
||||||
|
# Useful to see if it's an HTML error page
|
||||||
|
if [[ -f "${TMP_DIR}/${CMAKE_INSTALLER_SCRIPT_LOCAL_NAME}" ]]; then
|
||||||
|
echo "--- First 10 lines of downloaded installer script (${CMAKE_INSTALLER_SCRIPT_LOCAL_NAME}) ---"
|
||||||
|
head -n 10 "${TMP_DIR}/${CMAKE_INSTALLER_SCRIPT_LOCAL_NAME}"
|
||||||
|
echo "--- End of installer script head ---"
|
||||||
|
elif [[ -f "${TMP_DIR}/${DERIVED_CMAKE_BINARY_FILENAME}" ]]; then
|
||||||
|
# If it was renamed
|
||||||
|
echo "--- First 10 lines of downloaded installer script (${DERIVED_CMAKE_BINARY_FILENAME}) ---"
|
||||||
|
head -n 10 "${TMP_DIR}/${DERIVED_CMAKE_BINARY_FILENAME}"
|
||||||
|
echo "--- End of installer script head ---"
|
||||||
|
else
|
||||||
|
echo "Installer script not found in TMP_DIR (checked for ${CMAKE_INSTALLER_SCRIPT_LOCAL_NAME} and ${DERIVED_CMAKE_BINARY_FILENAME})."
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Attempting to remove temporary directory: ${TMP_DIR}"
|
||||||
|
rm -Rf "${TMP_DIR}"
|
||||||
|
echo "Temporary directory removed."
|
||||||
|
echo "--- End of Cleanup ---"
|
||||||
|
else
|
||||||
|
echo "--- Cleanup: TMP_DIR was not set or not a directory, no temp files to inspect or clean. ---"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Ensure the script exits with the LAST_EXIT_CODE observed by the trap
|
||||||
|
# unless it was 0 and the script is exiting due to an explicit non-zero exit.
|
||||||
|
# The 'exit' command within the trap will override the script's natural exit code.
|
||||||
|
# So, if the script was going to exit 0, but cleanup had an issue, this could change it.
|
||||||
|
# However, for debugging an exit code 8, we want to preserve the code that *caused* the trap.
|
||||||
|
echo "Script finished with exit code: ${LAST_EXIT_CODE}."
|
||||||
|
exit "${LAST_EXIT_CODE}"
|
||||||
|
}
|
||||||
|
trap cleanup EXIT ERR SIGINT SIGTERM
|
||||||
|
|
||||||
|
# Immediately turn on `set -e` after trap setup
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# --- Helper Functions ---
|
||||||
|
# Function to download a file with retries and basic validation
|
||||||
|
download_file() {
|
||||||
|
local url="$1"
|
||||||
|
local output_filename="$2"
|
||||||
|
local attempts_left=$DOWNLOAD_ATTEMPTS
|
||||||
|
local wget_exit_code=0
|
||||||
|
|
||||||
|
while [ $attempts_left -gt 0 ]; do
|
||||||
|
echo "Downloading: ${url}"
|
||||||
|
echo "Saving to: ${TMP_DIR}/${output_filename}"
|
||||||
|
echo "Attempt $((DOWNLOAD_ATTEMPTS - attempts_left + 1)) of ${DOWNLOAD_ATTEMPTS}..."
|
||||||
|
|
||||||
|
# Use wget with:
|
||||||
|
# -O: specify output file
|
||||||
|
# --timeout: connection/read timeout
|
||||||
|
# --tries: number of retries (wget's own retry, distinct from this loop)
|
||||||
|
# --quiet: suppress normal output, but errors still go to stderr
|
||||||
|
# --show-progress: if not quiet, shows a progress bar (optional)
|
||||||
|
# Using -q for less verbose logs, but on failure, we need to know.
|
||||||
|
wget -O "${TMP_DIR}/${output_filename}" --timeout=30 --tries=1 "${url}"
|
||||||
|
wget_exit_code=$?
|
||||||
|
|
||||||
|
if [ ${wget_exit_code} -eq 0 ]; then
|
||||||
|
echo "Download command successful for ${output_filename}."
|
||||||
|
if [ -s "${TMP_DIR}/${output_filename}" ]; then # -s: file exists and has a size greater than 0
|
||||||
|
# Basic check for common HTML error page indicators
|
||||||
|
# This is a heuristic and might not catch all error pages.
|
||||||
|
if head -n 5 "${TMP_DIR}/${output_filename}" | grep -Eiq '<html|<head|<!doctype html|404 Not Found|Error'; then
|
||||||
|
echo "WARNING: Downloaded file '${output_filename}' might be an HTML error page."
|
||||||
|
echo "First 5 lines of ${output_filename}:"
|
||||||
|
head -n 5 "${TMP_DIR}/${output_filename}"
|
||||||
|
# Consider this a failure for critical files
|
||||||
|
return 1 # Treat as failure
|
||||||
|
fi
|
||||||
|
echo "File ${output_filename} downloaded and is not empty."
|
||||||
|
return 0 # Success
|
||||||
|
else
|
||||||
|
echo "ERROR: Downloaded file ${output_filename} is empty."
|
||||||
|
# No need to rm here, loop will retry or fail
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "ERROR: wget failed to download ${url} with exit code ${wget_exit_code}."
|
||||||
|
fi
|
||||||
|
|
||||||
|
attempts_left=$((attempts_left - 1))
|
||||||
|
if [ $attempts_left -gt 0 ]; then
|
||||||
|
echo "Retrying in ${DOWNLOAD_RETRY_DELAY} seconds..."
|
||||||
|
sleep $DOWNLOAD_RETRY_DELAY
|
||||||
|
else
|
||||||
|
echo "ERROR: Failed to download ${url} after ${DOWNLOAD_ATTEMPTS} attempts."
|
||||||
|
return 1 # Explicit failure
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
return 1 # Should be unreachable if loop logic is correct, but as a fallback
|
||||||
|
}
|
||||||
|
|
||||||
|
# --- Main Script Logic ---
|
||||||
|
|
||||||
|
if [ "${CMAKE_VERSION}" = "none" ]; then
|
||||||
|
echo "No CMake version specified by argument, skipping CMake reinstallation."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
echo "CMake version to install: ${CMAKE_VERSION}"
|
||||||
|
|
||||||
|
# 1. Ensure wget is available
|
||||||
|
echo "Checking for wget..."
|
||||||
|
if ! command -v wget > /dev/null; then
|
||||||
|
echo "wget not found. Attempting to install wget via apt-get..."
|
||||||
|
if command -v apt-get > /dev/null; then
|
||||||
|
apt-get update -y
|
||||||
|
apt-get install -y --no-install-recommends wget
|
||||||
|
echo "wget installed."
|
||||||
|
else
|
||||||
|
echo "ERROR: apt-get not found. Cannot install wget. Please install wget manually."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "wget is available."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 2. (Optional) Remove existing CMake installed via apt
|
||||||
|
echo "Attempting to remove any existing CMake installed via apt..."
|
||||||
|
if command -v apt-get > /dev/null; then
|
||||||
|
if dpkg -s cmake &> /dev/null; then # Check if cmake package is actually installed
|
||||||
|
apt-get -y purge --auto-remove cmake
|
||||||
|
echo "cmake package purged."
|
||||||
|
else
|
||||||
|
echo "cmake package not found via dpkg, skipping purge."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "apt-get not found, skipping removal of CMake via apt."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 3. Create installation and temporary directories
|
||||||
|
echo "Creating CMake installation directory /opt/cmake..."
|
||||||
|
mkdir -p /opt/cmake
|
||||||
|
|
||||||
|
TMP_DIR=$(mktemp -d -t cmake-install-XXXXXXXXXX)
|
||||||
|
echo "Temporary directory created: ${TMP_DIR}"
|
||||||
|
# Crucial: subsequent operations needing temp files should happen in or relative to TMP_DIR
|
||||||
|
# We will cd into TMP_DIR later, or use full paths like ${TMP_DIR}/filename
|
||||||
|
|
||||||
|
# 4. Determine system architecture
|
||||||
|
echo "Determining system architecture..."
|
||||||
|
architecture=$(dpkg --print-architecture)
|
||||||
|
case "${architecture}" in
|
||||||
|
arm64) ARCH="aarch64" ;;
|
||||||
|
amd64) ARCH="x86_64" ;;
|
||||||
|
*)
|
||||||
|
echo "ERROR: Unsupported architecture '${architecture}' reported by dpkg."
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
echo "Detected architecture: ${architecture} (mapped to CMake arch: ${ARCH})"
|
||||||
|
|
||||||
|
# 5. Define CMake download URLs and the filename expected by checksum
|
||||||
|
DERIVED_CMAKE_BINARY_FILENAME="cmake-${CMAKE_VERSION}-linux-${ARCH}.sh"
|
||||||
|
CMAKE_BINARY_URL="https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/${DERIVED_CMAKE_BINARY_FILENAME}"
|
||||||
|
CMAKE_CHECKSUM_FILE_URL="https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-SHA-256.txt"
|
||||||
|
|
||||||
|
# 6. Download CMake binary and checksum file
|
||||||
|
echo "--- Downloading Files ---"
|
||||||
|
if ! download_file "${CMAKE_BINARY_URL}" "${CMAKE_INSTALLER_SCRIPT_LOCAL_NAME}"; then
|
||||||
|
echo "ERROR: Failed to download CMake binary installer. See messages above."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! download_file "${CMAKE_CHECKSUM_FILE_URL}" "${CMAKE_CHECKSUM_FILE_LOCAL_NAME}"; then
|
||||||
|
echo "ERROR: Failed to download CMake checksum file. See messages above."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "Downloads complete."
|
||||||
|
echo "--- End of Downloading Files ---"
|
||||||
|
echo # Newline for readability
|
||||||
|
|
||||||
|
# Before checksum, rename the downloaded installer to its derived name,
|
||||||
|
# as the checksum file refers to this specific name.
|
||||||
|
echo "Renaming downloaded installer from '${CMAKE_INSTALLER_SCRIPT_LOCAL_NAME}' to '${DERIVED_CMAKE_BINARY_FILENAME}' for checksum verification."
|
||||||
|
mv "${TMP_DIR}/${CMAKE_INSTALLER_SCRIPT_LOCAL_NAME}" "${TMP_DIR}/${DERIVED_CMAKE_BINARY_FILENAME}"
|
||||||
|
if [ ! -f "${TMP_DIR}/${DERIVED_CMAKE_BINARY_FILENAME}" ]; then
|
||||||
|
echo "ERROR: Failed to rename installer script for checksum. File '${TMP_DIR}/${DERIVED_CMAKE_BINARY_FILENAME}' does not exist after move."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 7. Verify checksum
|
||||||
|
echo "--- Verifying Checksum ---"
|
||||||
|
echo "Checksum file is: ${TMP_DIR}/${CMAKE_CHECKSUM_FILE_LOCAL_NAME}"
|
||||||
|
echo "Binary file to check is: ${TMP_DIR}/${DERIVED_CMAKE_BINARY_FILENAME}"
|
||||||
|
|
||||||
|
# Ensure the checksum file actually contains an entry for our binary
|
||||||
|
# This is important because the SHA-256.txt file contains checksums for *all* release assets
|
||||||
|
echo "Checking if checksum file contains entry for '${DERIVED_CMAKE_BINARY_FILENAME}'..."
|
||||||
|
if ! grep -q "${DERIVED_CMAKE_BINARY_FILENAME}" "${TMP_DIR}/${CMAKE_CHECKSUM_FILE_LOCAL_NAME}"; then
|
||||||
|
echo "ERROR: The downloaded checksum file '${CMAKE_CHECKSUM_FILE_LOCAL_NAME}' does NOT contain an entry for '${DERIVED_CMAKE_BINARY_FILENAME}'."
|
||||||
|
echo "This strongly suggests that the CMAKE_VERSION ('${CMAKE_VERSION}') or ARCH ('${ARCH}') is incorrect, or the specified version does not provide a .sh installer for this architecture."
|
||||||
|
echo "Please verify the version and available files at https://github.com/Kitware/CMake/releases/tag/v${CMAKE_VERSION}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "Checksum file contains an entry for '${DERIVED_CMAKE_BINARY_FILENAME}'."
|
||||||
|
|
||||||
|
# Perform the checksum. We need to be in the directory where the files are.
|
||||||
|
echo "Changing directory to ${TMP_DIR} for checksum verification."
|
||||||
|
cd "${TMP_DIR}" # <<<<<<< IMPORTANT: sha256sum -c needs to find files
|
||||||
|
|
||||||
|
echo "Verifying checksum of '${DERIVED_CMAKE_BINARY_FILENAME}' using '${CMAKE_CHECKSUM_FILE_LOCAL_NAME}'..."
|
||||||
|
# The --ignore-missing flag is good, as the .txt file has many checksums.
|
||||||
|
# The --strict flag would cause it to error if there are improperly formatted lines.
|
||||||
|
# We rely on the grep check above to ensure our specific file is mentioned.
|
||||||
|
if sha256sum -c --ignore-missing "${CMAKE_CHECKSUM_FILE_LOCAL_NAME}"; then
|
||||||
|
echo "Checksum verification successful for '${DERIVED_CMAKE_BINARY_FILENAME}'."
|
||||||
|
else
|
||||||
|
SHA_EXIT_CODE=$?
|
||||||
|
echo "ERROR: Checksum verification FAILED for '${DERIVED_CMAKE_BINARY_FILENAME}' with exit code ${SHA_EXIT_CODE}."
|
||||||
|
# Cleanup trap will show file contents.
|
||||||
|
exit 1 # Critical failure
|
||||||
|
fi
|
||||||
|
echo "--- End of Verifying Checksum ---"
|
||||||
|
echo # Newline for readability
|
||||||
|
|
||||||
|
# 8. Install CMake
|
||||||
|
echo "--- Installing CMake ---"
|
||||||
|
echo "Making the CMake installer script '${DERIVED_CMAKE_BINARY_FILENAME}' executable..."
|
||||||
|
chmod +x "${DERIVED_CMAKE_BINARY_FILENAME}" # Still in TMP_DIR
|
||||||
|
|
||||||
|
echo "Executing CMake installer script: ./${DERIVED_CMAKE_BINARY_FILENAME} --prefix=/opt/cmake --skip-license"
|
||||||
|
# Execute the script. If this script exits with 8, this is our culprit.
|
||||||
|
if ./"${DERIVED_CMAKE_BINARY_FILENAME}" --prefix=/opt/cmake --skip-license; then
|
||||||
|
echo "CMake installer script executed successfully."
|
||||||
|
else
|
||||||
|
INSTALLER_EXIT_CODE=$?
|
||||||
|
echo "ERROR: CMake installer script FAILED with exit code ${INSTALLER_EXIT_CODE}."
|
||||||
|
# This is the most likely place for an exit code 8 if downloads and checksums were okay.
|
||||||
|
# The trap will handle cleanup. The script will exit with INSTALLER_EXIT_CODE due to the trap.
|
||||||
|
exit ${INSTALLER_EXIT_CODE} # Explicitly exit with the installer's code
|
||||||
|
fi
|
||||||
|
echo "--- End of Installing CMake ---"
|
||||||
|
echo # Newline for readability
|
||||||
|
|
||||||
|
# 9. Create symlinks
|
||||||
|
echo "Creating symbolic links for cmake and ctest in /usr/local/bin/..."
|
||||||
|
ln -sf /opt/cmake/bin/cmake /usr/local/bin/cmake
|
||||||
|
ln -sf /opt/cmake/bin/ctest /usr/local/bin/ctest
|
||||||
|
echo "Symbolic links created."
|
||||||
|
|
||||||
|
echo # Newline for readability
|
||||||
|
echo "SUCCESS: CMake ${CMAKE_VERSION} installation and setup complete."
|
||||||
|
|
||||||
|
# The script will exit with 0 here. The trap will run, see $? is 0, and then exit 0.
|
||||||
|
exit 0
|
12
components/etl/.devcontainer/devcontainer.json
Normal file
12
components/etl/.devcontainer/devcontainer.json
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
||||||
|
// README at: https://github.com/devcontainers/templates/tree/main/src/cpp
|
||||||
|
{
|
||||||
|
"name": "Default",
|
||||||
|
"build": {
|
||||||
|
"dockerfile": "./Dockerfile",
|
||||||
|
"args": {
|
||||||
|
"BASE_IMAGE_NAME": "mcr.microsoft.com/devcontainers/cpp:debian-12"
|
||||||
|
},
|
||||||
|
"context": "./context"
|
||||||
|
}
|
||||||
|
}
|
12
components/etl/.devcontainer/gcc09/devcontainer.json
Normal file
12
components/etl/.devcontainer/gcc09/devcontainer.json
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
||||||
|
// README at: https://github.com/devcontainers/templates/tree/main/src/cpp
|
||||||
|
{
|
||||||
|
"name": "Gcc 09",
|
||||||
|
"build": {
|
||||||
|
"dockerfile": "../Dockerfile",
|
||||||
|
"args": {
|
||||||
|
"BASE_IMAGE_NAME": "gcc:9"
|
||||||
|
},
|
||||||
|
"context": "../context"
|
||||||
|
}
|
||||||
|
}
|
12
components/etl/.devcontainer/gcc10/devcontainer.json
Normal file
12
components/etl/.devcontainer/gcc10/devcontainer.json
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
||||||
|
// README at: https://github.com/devcontainers/templates/tree/main/src/cpp
|
||||||
|
{
|
||||||
|
"name": "Gcc 10",
|
||||||
|
"build": {
|
||||||
|
"dockerfile": "../Dockerfile",
|
||||||
|
"args": {
|
||||||
|
"BASE_IMAGE_NAME": "gcc:10"
|
||||||
|
},
|
||||||
|
"context": "../context"
|
||||||
|
}
|
||||||
|
}
|
12
components/etl/.devcontainer/gcc11/devcontainer.json
Normal file
12
components/etl/.devcontainer/gcc11/devcontainer.json
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
||||||
|
// README at: https://github.com/devcontainers/templates/tree/main/src/cpp
|
||||||
|
{
|
||||||
|
"name": "Gcc 11",
|
||||||
|
"build": {
|
||||||
|
"dockerfile": "../Dockerfile",
|
||||||
|
"args": {
|
||||||
|
"BASE_IMAGE_NAME": "gcc:11"
|
||||||
|
},
|
||||||
|
"context": "../context"
|
||||||
|
}
|
||||||
|
}
|
12
components/etl/.devcontainer/gcc12/devcontainer.json
Normal file
12
components/etl/.devcontainer/gcc12/devcontainer.json
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
||||||
|
// README at: https://github.com/devcontainers/templates/tree/main/src/cpp
|
||||||
|
{
|
||||||
|
"name": "Gcc 12",
|
||||||
|
"build": {
|
||||||
|
"dockerfile": "../Dockerfile",
|
||||||
|
"args": {
|
||||||
|
"BASE_IMAGE_NAME": "gcc:12"
|
||||||
|
},
|
||||||
|
"context": "../context"
|
||||||
|
}
|
||||||
|
}
|
12
components/etl/.devcontainer/gcc13/devcontainer.json
Normal file
12
components/etl/.devcontainer/gcc13/devcontainer.json
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
||||||
|
// README at: https://github.com/devcontainers/templates/tree/main/src/cpp
|
||||||
|
{
|
||||||
|
"name": "Gcc 13",
|
||||||
|
"build": {
|
||||||
|
"dockerfile": "../Dockerfile",
|
||||||
|
"args": {
|
||||||
|
"BASE_IMAGE_NAME": "gcc:13"
|
||||||
|
},
|
||||||
|
"context": "../context"
|
||||||
|
}
|
||||||
|
}
|
12
components/etl/.devcontainer/gcc14/devcontainer.json
Normal file
12
components/etl/.devcontainer/gcc14/devcontainer.json
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
||||||
|
// README at: https://github.com/devcontainers/templates/tree/main/src/cpp
|
||||||
|
{
|
||||||
|
"name": "Gcc 14",
|
||||||
|
"build": {
|
||||||
|
"dockerfile": "../Dockerfile",
|
||||||
|
"args": {
|
||||||
|
"BASE_IMAGE_NAME": "gcc:14"
|
||||||
|
},
|
||||||
|
"context": "../context"
|
||||||
|
}
|
||||||
|
}
|
12
components/etl/.devcontainer/gcc15/devcontainer.json
Normal file
12
components/etl/.devcontainer/gcc15/devcontainer.json
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
||||||
|
// README at: https://github.com/devcontainers/templates/tree/main/src/cpp
|
||||||
|
{
|
||||||
|
"name": "Gcc 15",
|
||||||
|
"build": {
|
||||||
|
"dockerfile": "../Dockerfile",
|
||||||
|
"args": {
|
||||||
|
"BASE_IMAGE_NAME": "gcc:15"
|
||||||
|
},
|
||||||
|
"context": "../context"
|
||||||
|
}
|
||||||
|
}
|
68
components/etl/.gitattributes
vendored
Normal file
68
components/etl/.gitattributes
vendored
Normal file
|
@ -0,0 +1,68 @@
|
||||||
|
###############################################################################
|
||||||
|
# Set default behavior to automatically normalize line endings.
|
||||||
|
###############################################################################
|
||||||
|
* text=auto
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Declare files that will always have LF line endings on checkout.
|
||||||
|
###############################################################################
|
||||||
|
*.sh text eol=lf
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Set default behavior for command prompt diff.
|
||||||
|
#
|
||||||
|
# This is need for earlier builds of msysgit that does not have it on by
|
||||||
|
# default for csharp files.
|
||||||
|
# Note: This is only used by command line
|
||||||
|
###############################################################################
|
||||||
|
#*.cs diff=csharp
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Set the merge driver for project and solution files
|
||||||
|
#
|
||||||
|
# Merging from the command prompt will add diff markers to the files if there
|
||||||
|
# are conflicts (Merging from VS is not affected by the settings below, in VS
|
||||||
|
# the diff markers are never inserted). Diff markers may cause the following
|
||||||
|
# file extensions to fail to load in VS. An alternative would be to treat
|
||||||
|
# these files as binary and thus will always conflict and require user
|
||||||
|
# intervention with every merge. To do so, just uncomment the entries below
|
||||||
|
###############################################################################
|
||||||
|
#*.sln merge=binary
|
||||||
|
#*.csproj merge=binary
|
||||||
|
#*.vbproj merge=binary
|
||||||
|
#*.vcxproj merge=binary
|
||||||
|
#*.vcproj merge=binary
|
||||||
|
#*.dbproj merge=binary
|
||||||
|
#*.fsproj merge=binary
|
||||||
|
#*.lsproj merge=binary
|
||||||
|
#*.wixproj merge=binary
|
||||||
|
#*.modelproj merge=binary
|
||||||
|
#*.sqlproj merge=binary
|
||||||
|
#*.wwaproj merge=binary
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# behavior for image files
|
||||||
|
#
|
||||||
|
# image files are treated as binary by default.
|
||||||
|
###############################################################################
|
||||||
|
#*.jpg binary
|
||||||
|
#*.png binary
|
||||||
|
#*.gif binary
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# diff behavior for common document formats
|
||||||
|
#
|
||||||
|
# Convert binary document formats to text before diffing them. This feature
|
||||||
|
# is only available from the command line. Turn it on by uncommenting the
|
||||||
|
# entries below.
|
||||||
|
###############################################################################
|
||||||
|
#*.doc diff=astextplain
|
||||||
|
#*.DOC diff=astextplain
|
||||||
|
#*.docx diff=astextplain
|
||||||
|
#*.DOCX diff=astextplain
|
||||||
|
#*.dot diff=astextplain
|
||||||
|
#*.DOT diff=astextplain
|
||||||
|
#*.pdf diff=astextplain
|
||||||
|
#*.PDF diff=astextplain
|
||||||
|
#*.rtf diff=astextplain
|
||||||
|
#*.RTF diff=astextplain
|
3
components/etl/.github/FUNDING.yml
vendored
Normal file
3
components/etl/.github/FUNDING.yml
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# These are supported funding model platforms
|
||||||
|
|
||||||
|
github: ETLCPP
|
52
components/etl/.github/workflows/clang-c++11.yml
vendored
Normal file
52
components/etl/.github/workflows/clang-c++11.yml
vendored
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
name: clang-c++11
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ master, development, pull-request/* ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ master, pull-request/* ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
build-clang-cpp11-linux-stl:
|
||||||
|
name: Clang C++11 Linux - STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
||||||
|
|
||||||
|
build-clang-cpp11-linux-no-stl:
|
||||||
|
name: Clang C++11 Linux - No STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
52
components/etl/.github/workflows/clang-c++14.yml
vendored
Normal file
52
components/etl/.github/workflows/clang-c++14.yml
vendored
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
name: clang-c++14
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ master, development, pull-request/* ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ master, pull-request/* ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
build-clang-cpp14-linux-stl:
|
||||||
|
name: Clang C++14 Linux - STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
||||||
|
|
||||||
|
build-clang-cpp14-linux-no-stl:
|
||||||
|
name: Clang C++14 Linux - No STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
52
components/etl/.github/workflows/clang-c++17.yml
vendored
Normal file
52
components/etl/.github/workflows/clang-c++17.yml
vendored
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
name: clang-c++17
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ master, development, pull-request/* ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ master, pull-request/* ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
build-clang-cpp17-linux-stl:
|
||||||
|
name: Clang C++17 Linux - STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
||||||
|
|
||||||
|
build-clang-cpp17-linux-no-stl:
|
||||||
|
name: Clang C++17 Linux - No STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
184
components/etl/.github/workflows/clang-c++20.yml
vendored
Normal file
184
components/etl/.github/workflows/clang-c++20.yml
vendored
Normal file
|
@ -0,0 +1,184 @@
|
||||||
|
name: clang-c++20
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ master, development, pull-request/* ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ master, pull-request/* ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
build-clang-cpp20-linux-no-stl:
|
||||||
|
name: Clang C++20 Linux - No STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
# Temporary fix. See https://github.com/actions/runner-images/issues/8659
|
||||||
|
- name: Install newer Clang
|
||||||
|
run: |
|
||||||
|
wget https://apt.llvm.org/llvm.sh
|
||||||
|
chmod +x ./llvm.sh
|
||||||
|
sudo ./llvm.sh 17
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang-17
|
||||||
|
export CXX=clang++-17
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./
|
||||||
|
clang-17 --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
||||||
|
|
||||||
|
build-clang-cpp20-linux-stl-force-cpp03:
|
||||||
|
name: Clang C++20 Linux - STL - Force C++03
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
# Temporary fix. See https://github.com/actions/runner-images/issues/8659
|
||||||
|
- name: Install newer Clang
|
||||||
|
run: |
|
||||||
|
wget https://apt.llvm.org/llvm.sh
|
||||||
|
chmod +x ./llvm.sh
|
||||||
|
sudo ./llvm.sh 17
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang-17
|
||||||
|
export CXX=clang++-17
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./
|
||||||
|
clang-17 --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
||||||
|
|
||||||
|
build-clang-cpp20-linux-no-stl-force-cpp03:
|
||||||
|
name: Clang C++20 Linux - No STL - Force C++03
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
# Temporary fix. See https://github.com/actions/runner-images/issues/8659
|
||||||
|
- name: Install newer Clang
|
||||||
|
run: |
|
||||||
|
wget https://apt.llvm.org/llvm.sh
|
||||||
|
chmod +x ./llvm.sh
|
||||||
|
sudo ./llvm.sh 17
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang-17
|
||||||
|
export CXX=clang++-17
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./
|
||||||
|
clang-17 --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
||||||
|
|
||||||
|
build-clang-cpp20-osx-stl:
|
||||||
|
name: Clang C++20 OSX - STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [macos-13]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
||||||
|
|
||||||
|
build-clang-cpp20-osx-no-stl:
|
||||||
|
name: Clang C++20 OSX - No STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [macos-13]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
||||||
|
|
||||||
|
build-clang-cpp20-osx-stl-force-cpp03:
|
||||||
|
name: Clang C++20 OSX - STL - Force C++03
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [macos-13]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
||||||
|
|
||||||
|
build-clang-cpp20-osx-no-stl-force-cpp03:
|
||||||
|
name: Clang C++20 OSX - No STL - Force C++03
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [macos-13]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
||||||
|
|
184
components/etl/.github/workflows/clang-c++23.yml
vendored
Normal file
184
components/etl/.github/workflows/clang-c++23.yml
vendored
Normal file
|
@ -0,0 +1,184 @@
|
||||||
|
name: clang-c++23
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ master, development, pull-request/* ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ master, pull-request/* ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
build-clang-cpp23-linux-no-stl:
|
||||||
|
name: Clang C++23 Linux - No STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
# Temporary fix. See https://github.com/actions/runner-images/issues/8659
|
||||||
|
- name: Install newer Clang
|
||||||
|
run: |
|
||||||
|
wget https://apt.llvm.org/llvm.sh
|
||||||
|
chmod +x ./llvm.sh
|
||||||
|
sudo ./llvm.sh 17
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang-17
|
||||||
|
export CXX=clang++-17
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03=OFF -DETL_CXX_STANDARD=23 ./
|
||||||
|
clang-17 --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
||||||
|
|
||||||
|
build-clang-cpp23-linux-stl-force-cpp03:
|
||||||
|
name: Clang C++23 Linux - STL - Force C++03
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
# Temporary fix. See https://github.com/actions/runner-images/issues/8659
|
||||||
|
- name: Install newer Clang
|
||||||
|
run: |
|
||||||
|
wget https://apt.llvm.org/llvm.sh
|
||||||
|
chmod +x ./llvm.sh
|
||||||
|
sudo ./llvm.sh 17
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang-17
|
||||||
|
export CXX=clang++-17
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03=ON -DETL_CXX_STANDARD=23 ./
|
||||||
|
clang-17 --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
||||||
|
|
||||||
|
build-clang-cpp2-linux-no-stl-force-cpp03:
|
||||||
|
name: Clang C++23 Linux - No STL - Force C++03
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
# Temporary fix. See https://github.com/actions/runner-images/issues/8659
|
||||||
|
- name: Install newer Clang
|
||||||
|
run: |
|
||||||
|
wget https://apt.llvm.org/llvm.sh
|
||||||
|
chmod +x ./llvm.sh
|
||||||
|
sudo ./llvm.sh 17
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang-17
|
||||||
|
export CXX=clang++-17
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03=ON -DETL_CXX_STANDARD=23 ./
|
||||||
|
clang-17 --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
||||||
|
|
||||||
|
build-clang-cpp23-osx-stl:
|
||||||
|
name: Clang C++23 OSX - STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [macos-13]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03=OFF -DETL_CXX_STANDARD=23 ./
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
||||||
|
|
||||||
|
build-clang-cpp23-osx-no-stl:
|
||||||
|
name: Clang C++23 OSX - No STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [macos-13]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03=OFF -DETL_CXX_STANDARD=23 ./
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
||||||
|
|
||||||
|
build-clang-cpp23-osx-stl-force-cpp03:
|
||||||
|
name: Clang C++23 OSX - STL - Force C++03
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [macos-13]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
cmake -D BUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03=ON -DETL_CXX_STANDARD=23 ./
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
||||||
|
|
||||||
|
build-clang-cpp23-osx-no-stl-force-cpp03:
|
||||||
|
name: Clang C++23 OSX - No STL - Force C++03
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [macos-13]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
cmake -D BUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03=ON -DETL_CXX_STANDARD=23 ./
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
||||||
|
|
403
components/etl/.github/workflows/clang-syntax-checks.yml
vendored
Normal file
403
components/etl/.github/workflows/clang-syntax-checks.yml
vendored
Normal file
|
@ -0,0 +1,403 @@
|
||||||
|
name: clang syntax checks
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ master, development, pull-request/* ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ master, pull-request/* ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-clang-cpp03-linux-STL:
|
||||||
|
name: Syntax Check - Clang C++03 Linux STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=03 ./test/syntax_check
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-clang-cpp03-linux-No-STL:
|
||||||
|
name: Syntax Check - Clang C++03 Linux No STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=03 ./test/syntax_check
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-clang-cpp11-linux-STL:
|
||||||
|
name: Syntax Check - Clang C++11 Linux STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./test/syntax_check
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-clang-cpp11-linux-No-STL:
|
||||||
|
name: Syntax Check - Clang C++11 Linux No STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./test/syntax_check
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-clang-cpp11-linux-STL-Force-CPP03:
|
||||||
|
name: Syntax Check - Clang C++11 Linux STL Force C++03
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=11 ./test/syntax_check
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-clang-cpp11-linux-No-STL-Force-CPP03:
|
||||||
|
name: Syntax Check - Clang C++11 Linux No STL Force C++03
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=11 ./test/syntax_check
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-clang-cpp14-linux-STL:
|
||||||
|
name: Syntax Check - Clang C++14 Linux STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./test/syntax_check
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-clang-cpp14-linux-No-STL:
|
||||||
|
name: Syntax Check - Clang C++14 Linux No STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./test/syntax_check
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-clang-cpp14-linux-STL-Force-CPP03:
|
||||||
|
name: Syntax Check - Clang C++14 Linux STL Force C++03
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=14 ./test/syntax_check
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-clang-cpp14-linux-No-STL-Force-CPP03:
|
||||||
|
name: Syntax Check - Clang C++14 Linux No STL Force C++03
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=14 ./test/syntax_check
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-clang-cpp17-linux-STL:
|
||||||
|
name: Syntax Check - Clang C++17 Linux STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./test/syntax_check
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-clang-cpp17-linux-No-STL:
|
||||||
|
name: Syntax Check - Clang C++17 Linux No STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./test/syntax_check
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-clang-cpp17-linux-STL-Force-CPP03:
|
||||||
|
name: Syntax Check - Clang C++17 Linux STL Force C++03
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=17 ./test/syntax_check
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-clang-cpp17-linux-No-STL-Force-CPP03:
|
||||||
|
name: Syntax Check - Clang C++17 Linux No STL Force C++03
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=17 ./test/syntax_check
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-clang-cpp20-linux-STL:
|
||||||
|
name: Syntax Check - Clang C++20 Linux STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./test/syntax_check
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-clang-cpp20-linux-No-STL:
|
||||||
|
name: Syntax Check - Clang C++20 Linux No STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./test/syntax_check
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-clang-cpp20-linux-STL-Force-CPP03:
|
||||||
|
name: Syntax Check - Clang C++20 Linux STL Force C++03
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./test/syntax_check
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-clang-cpp20-linux-No-STL-Force-CPP03:
|
||||||
|
name: Syntax Check - Clang C++20 Linux No STL Force C++03
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./test/syntax_check
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-clang-cpp23-linux-STL:
|
||||||
|
name: Syntax Check - Clang C++23 Linux STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 ./test/syntax_check
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-clang-cpp23-linux-No-STL:
|
||||||
|
name: Syntax Check - Clang C++23 Linux No STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 ./test/syntax_check
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-clang-cpp23-linux-STL-Force-CPP03:
|
||||||
|
name: Syntax Check - Clang C++23 Linux STL Force C++03
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 ./test/syntax_check
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-clang-cpp23-linux-No-STL-Force-CPP03:
|
||||||
|
name: Syntax Check - Clang C++23 Linux No STL Force C++03
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=clang
|
||||||
|
export CXX=clang++
|
||||||
|
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 ./test/syntax_check
|
||||||
|
clang --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
54
components/etl/.github/workflows/gcc-c++11.yml
vendored
Normal file
54
components/etl/.github/workflows/gcc-c++11.yml
vendored
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
name: gcc-c++11
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ master, development, pull-request/* ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ master, pull-request/* ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
build-gcc-cpp11-linux-stl:
|
||||||
|
name: GCC C++11 Linux - STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
git fetch
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
||||||
|
|
||||||
|
build-gcc-cpp11-linux-no-stl:
|
||||||
|
name: GCC C++11 Linux - No STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
git fetch
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
52
components/etl/.github/workflows/gcc-c++14.yml
vendored
Normal file
52
components/etl/.github/workflows/gcc-c++14.yml
vendored
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
name: gcc-c++14
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ master, development, pull-request/* ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ master, pull-request/* ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
build-gcc-cpp14-linux-stl:
|
||||||
|
name: GCC C++14 Linux - STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
||||||
|
|
||||||
|
build-gcc-cpp14-linux-no-stl:
|
||||||
|
name: GCC C++14 Linux - No STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
52
components/etl/.github/workflows/gcc-c++17.yml
vendored
Normal file
52
components/etl/.github/workflows/gcc-c++17.yml
vendored
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
name: gcc-c++17
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ master, development, pull-request/* ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ master, pull-request/* ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
build-gcc-cpp17-linux-stl:
|
||||||
|
name: GCC C++17 Linux - STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
||||||
|
|
||||||
|
build-gcc-cpp17-linux-no-stl:
|
||||||
|
name: GCC C++17 Linux - No STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
96
components/etl/.github/workflows/gcc-c++20.yml
vendored
Normal file
96
components/etl/.github/workflows/gcc-c++20.yml
vendored
Normal file
|
@ -0,0 +1,96 @@
|
||||||
|
name: gcc-c++20
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ master, development, pull-request/* ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ master, pull-request/* ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
build-gcc-cpp20-linux-stl:
|
||||||
|
name: GCC C++20 Linux - STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
||||||
|
|
||||||
|
build-gcc-cpp20-linux-no-stl:
|
||||||
|
name: GCC C++20 Linux - No STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
||||||
|
|
||||||
|
build-gcc-cpp20-linux-stl-force-cpp03:
|
||||||
|
name: GCC C++20 Linux - STL - Force C++03
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
||||||
|
|
||||||
|
build-gcc-cpp20-linux-no-stl-force-cpp03:
|
||||||
|
name: GCC C++20 Linux - No STL - Force C++03
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
96
components/etl/.github/workflows/gcc-c++23.yml
vendored
Normal file
96
components/etl/.github/workflows/gcc-c++23.yml
vendored
Normal file
|
@ -0,0 +1,96 @@
|
||||||
|
name: gcc-c++23
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ master, development, pull-request/* ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ master, pull-request/* ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
build-gcc-cpp23-linux-stl:
|
||||||
|
name: GCC C++23 Linux - STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03=OFF -DETL_CXX_STANDARD=23 ./
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
||||||
|
|
||||||
|
build-gcc-cpp23-linux-no-stl:
|
||||||
|
name: GCC C++23 Linux - No STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03=OFF -DETL_CXX_STANDARD=23 ./
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
||||||
|
|
||||||
|
build-gcc-cpp23-linux-stl-force-cpp03:
|
||||||
|
name: GCC C++23 Linux - STL - Force C++03
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03=ON -DETL_CXX_STANDARD=23 ./
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
||||||
|
|
||||||
|
build-gcc-cpp23-linux-no-stl-force-cpp03:
|
||||||
|
name: GCC C++23 Linux - No STL - Force C++03
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export ASAN_OPTIONS=alloc_dealloc_mismatch=0,detect_leaks=0
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03=ON -DETL_CXX_STANDARD=23 ./
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: ./test/etl_tests
|
403
components/etl/.github/workflows/gcc-syntax-checks.yml
vendored
Normal file
403
components/etl/.github/workflows/gcc-syntax-checks.yml
vendored
Normal file
|
@ -0,0 +1,403 @@
|
||||||
|
name: gcc syntax checks
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ master, development, pull-request/* ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ master, pull-request/* ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-gcc-cpp03-linux-STL:
|
||||||
|
name: Syntax Check - GCC C++03 Linux STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=03 ./test/syntax_check
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-gcc-cpp03-linux-No-STL:
|
||||||
|
name: Syntax Check - GCC C++03 Linux No STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=03 ./test/syntax_check
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-gcc-cpp11-linux-STL:
|
||||||
|
name: Syntax Check - GCC C++11 Linux STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./test/syntax_check
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-gcc-cpp11-linux-No-STL:
|
||||||
|
name: Syntax Check - GCC C++11 Linux No STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=11 ./test/syntax_check
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-gcc-cpp11-linux-STL-Force-CPP03:
|
||||||
|
name: Syntax Check - GCC C++11 Linux STL Force C++03
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=11 ./test/syntax_check
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-gcc-cpp11-linux-No-STL-Force-CPP03:
|
||||||
|
name: Syntax Check - GCC C++11 Linux No STL Force C++03
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=11 ./test/syntax_check
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-gcc-cpp14-linux-STL:
|
||||||
|
name: Syntax Check - GCC C++14 Linux STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./test/syntax_check
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-gcc-cpp14-linux-No-STL:
|
||||||
|
name: Syntax Check - GCC C++14 Linux No STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=14 ./test/syntax_check
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-gcc-cpp14-linux-STL-Force-CPP03:
|
||||||
|
name: Syntax Check - GCC C++14 Linux STL Force C++03
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=14 ./test/syntax_check
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-gcc-cpp14-linux-No-STL-Force-CPP03:
|
||||||
|
name: Syntax Check - GCC C++14 Linux No STL Force C++03
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=14 ./test/syntax_check
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-gcc-cpp17-linux-STL:
|
||||||
|
name: Syntax Check - GCC C++17 Linux STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./test/syntax_check
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-gcc-cpp17-linux-No-STL:
|
||||||
|
name: Syntax Check - GCC C++17 Linux No STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./test/syntax_check
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-gcc-cpp17-linux-STL-Force-CPP03:
|
||||||
|
name: Syntax Check - GCC C++17 Linux STL Force C++03
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=17 ./test/syntax_check
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-gcc-cpp17-linux-No-STL-Force-CPP03:
|
||||||
|
name: Syntax Check - GCC C++17 Linux No STL Force C++03
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=17 ./test/syntax_check
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-gcc-cpp20-linux-STL:
|
||||||
|
name: Syntax Check - GCC C++20 Linux STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./test/syntax_check
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-gcc-cpp20-linux-No-STL:
|
||||||
|
name: Syntax Check - GCC C++20 Linux No STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./test/syntax_check
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-gcc-cpp20-linux-STL-Force-CPP03:
|
||||||
|
name: Syntax Check - GCC C++20 Linux STL Force C++03
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./test/syntax_check
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-gcc-cpp20-linux-No-STL-Force-CPP03:
|
||||||
|
name: Syntax Check - GCC C++20 Linux No STL Force C++03
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=20 ./test/syntax_check
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-gcc-cpp23-linux-STL:
|
||||||
|
name: Syntax Check - GCC C++23 Linux STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 ./test/syntax_check
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-gcc-cpp23-linux-No-STL:
|
||||||
|
name: Syntax Check - GCC C++23 Linux No STL
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=23 ./test/syntax_check
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-gcc-cpp23-linux-STL-Force-CPP03:
|
||||||
|
name: Syntax Check - GCC C++23 Linux STL Force C++03
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 ./test/syntax_check
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
||||||
|
|
||||||
|
build-gcc-cpp23-linux-No-STL-Force-CPP03:
|
||||||
|
name: Syntax Check - GCC C++23 Linux No STL Force C++03
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
cmake -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=23 ./test/syntax_check
|
||||||
|
gcc --version
|
||||||
|
make -j $(getconf _NPROCESSORS_ONLN)
|
95
components/etl/.github/workflows/msvc.yml
vendored
Normal file
95
components/etl/.github/workflows/msvc.yml
vendored
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
name: msvc
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ master, development, pull-request/* ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ master, pull-request/* ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-windows-msvc-stl:
|
||||||
|
name: Windows - STL
|
||||||
|
runs-on: [windows-2022]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Add msbuild to PATH
|
||||||
|
uses: microsoft/setup-msbuild@v1.0.2
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
cmake -G "Visual Studio 17 2022" -AWin32 -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=20 ./
|
||||||
|
MSBuild.exe -version
|
||||||
|
MSBuild.exe .\etl.sln
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: test/Debug/etl_tests.exe
|
||||||
|
|
||||||
|
build-windows-msvc-no-stl:
|
||||||
|
name: Windows - No STL
|
||||||
|
runs-on: [windows-2022]
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Add msbuild to PATH
|
||||||
|
uses: microsoft/setup-msbuild@v1.0.2
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
cmake -G "Visual Studio 17 2022" -AWin32 -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF -DETL_CXX_STANDARD=17 ./
|
||||||
|
MSBuild.exe -version
|
||||||
|
MSBuild.exe .\etl.sln
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: test/Debug/etl_tests.exe
|
||||||
|
|
||||||
|
build-windows-msvc-stl-force-cpp03:
|
||||||
|
name: Windows - STL - Force C++03
|
||||||
|
runs-on: [windows-2022]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Add msbuild to PATH
|
||||||
|
uses: microsoft/setup-msbuild@v1.0.2
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
cmake -G "Visual Studio 17 2022" -AWin32 -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=17 ./
|
||||||
|
MSBuild.exe -version
|
||||||
|
MSBuild.exe .\etl.sln
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: test/Debug/etl_tests.exe
|
||||||
|
|
||||||
|
build-windows-msvc-no-stl-force-cpp03:
|
||||||
|
name: Windows - No STL - Force C++03
|
||||||
|
runs-on: [windows-2022]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Add msbuild to PATH
|
||||||
|
uses: microsoft/setup-msbuild@v1.0.2
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
cmake -G "Visual Studio 17 2022" -AWin32 -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03_IMPLEMENTATION=ON -DETL_CXX_STANDARD=17 ./
|
||||||
|
MSBuild.exe -version
|
||||||
|
MSBuild.exe .\etl.sln
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: test/Debug/etl_tests.exe
|
||||||
|
|
404
components/etl/.gitignore
vendored
Normal file
404
components/etl/.gitignore
vendored
Normal file
|
@ -0,0 +1,404 @@
|
||||||
|
|
||||||
|
#################
|
||||||
|
## Personal
|
||||||
|
#################
|
||||||
|
docs/html
|
||||||
|
include/etl/html/
|
||||||
|
include/etl/latex/
|
||||||
|
test/vs2013/Debug
|
||||||
|
test/vs2013/Release
|
||||||
|
test/keil/Debug
|
||||||
|
test/keil/Release
|
||||||
|
test/keil/Objects
|
||||||
|
test/keil/Listings
|
||||||
|
test/cmake-windows/unittest++/src
|
||||||
|
test/cmake/unittest++/src
|
||||||
|
examples/ArmTimerCallbacks/Listings
|
||||||
|
examples/ArmTimerCallbacks/Objects
|
||||||
|
examples/ArmTimerCallbacks/DebugConfig
|
||||||
|
build-test-Desktop_x86_windows_msvc2017_pe_32bit-Debug/unittest++/src
|
||||||
|
buildresults/
|
||||||
|
build
|
||||||
|
subprojects/*
|
||||||
|
!subprojects/*.wrap
|
||||||
|
|
||||||
|
#################
|
||||||
|
## Eclipse
|
||||||
|
#################
|
||||||
|
|
||||||
|
*.pydevproject
|
||||||
|
.project
|
||||||
|
.metadata
|
||||||
|
bin/
|
||||||
|
tmp/
|
||||||
|
*.tmp
|
||||||
|
*.bak
|
||||||
|
*.swp
|
||||||
|
*~.nib
|
||||||
|
local.properties
|
||||||
|
.classpath
|
||||||
|
.settings/
|
||||||
|
.loadpath
|
||||||
|
*.uvguix.John
|
||||||
|
|
||||||
|
# External tool builders
|
||||||
|
.externalToolBuilders/
|
||||||
|
|
||||||
|
# Locally stored "Eclipse launch configurations"
|
||||||
|
*.launch
|
||||||
|
|
||||||
|
# CDT-specific
|
||||||
|
.cproject
|
||||||
|
|
||||||
|
# PDT-specific
|
||||||
|
.buildpath
|
||||||
|
|
||||||
|
|
||||||
|
#################
|
||||||
|
## Visual Studio
|
||||||
|
#################
|
||||||
|
|
||||||
|
## Ignore Visual Studio temporary files, build results, and
|
||||||
|
## files generated by popular Visual Studio add-ons.
|
||||||
|
|
||||||
|
# User-specific files
|
||||||
|
*.suo
|
||||||
|
*.user
|
||||||
|
*.sln.docstates
|
||||||
|
|
||||||
|
# Build results
|
||||||
|
|
||||||
|
[Dd]ebug/
|
||||||
|
[Rr]elease/
|
||||||
|
x64/
|
||||||
|
build/
|
||||||
|
[Bb]in/
|
||||||
|
[Oo]bj/
|
||||||
|
|
||||||
|
# MSTest test Results
|
||||||
|
[Tt]est[Rr]esult*/
|
||||||
|
[Bb]uild[Ll]og.*
|
||||||
|
|
||||||
|
*_i.c
|
||||||
|
*_p.c
|
||||||
|
*.ilk
|
||||||
|
*.meta
|
||||||
|
*.obj
|
||||||
|
*.pch
|
||||||
|
*.pdb
|
||||||
|
*.pgc
|
||||||
|
*.pgd
|
||||||
|
*.rsp
|
||||||
|
*.sbr
|
||||||
|
*.tlb
|
||||||
|
*.tli
|
||||||
|
*.tlh
|
||||||
|
*.tmp_proj
|
||||||
|
*.log
|
||||||
|
*.vspscc
|
||||||
|
*.vssscc
|
||||||
|
.builds
|
||||||
|
*.pidb
|
||||||
|
*.scc
|
||||||
|
|
||||||
|
# Visual C++ cache files
|
||||||
|
ipch/
|
||||||
|
*.aps
|
||||||
|
*.ncb
|
||||||
|
*.opensdf
|
||||||
|
*.sdf
|
||||||
|
*.cachefile
|
||||||
|
|
||||||
|
# Visual Studio profiler
|
||||||
|
*.psess
|
||||||
|
*.vsp
|
||||||
|
*.vspx
|
||||||
|
|
||||||
|
# Guidance Automation Toolkit
|
||||||
|
*.gpState
|
||||||
|
|
||||||
|
# ReSharper is a .NET coding add-in
|
||||||
|
_ReSharper*/
|
||||||
|
*.[Rr]e[Ss]harper
|
||||||
|
|
||||||
|
# TeamCity is a build add-in
|
||||||
|
_TeamCity*
|
||||||
|
|
||||||
|
# DotCover is a Code Coverage Tool
|
||||||
|
*.dotCover
|
||||||
|
|
||||||
|
# NCrunch
|
||||||
|
*.ncrunch*
|
||||||
|
.*crunch*.local.xml
|
||||||
|
|
||||||
|
# Installshield output folder
|
||||||
|
[Ee]xpress/
|
||||||
|
|
||||||
|
# DocProject is a documentation generator add-in
|
||||||
|
DocProject/buildhelp/
|
||||||
|
DocProject/Help/*.HxT
|
||||||
|
DocProject/Help/*.HxC
|
||||||
|
DocProject/Help/*.hhc
|
||||||
|
DocProject/Help/*.hhk
|
||||||
|
DocProject/Help/*.hhp
|
||||||
|
DocProject/Help/Html2
|
||||||
|
DocProject/Help/html
|
||||||
|
|
||||||
|
# Click-Once directory
|
||||||
|
publish/
|
||||||
|
|
||||||
|
# Publish Web Output
|
||||||
|
*.Publish.xml
|
||||||
|
*.pubxml
|
||||||
|
*.publishproj
|
||||||
|
|
||||||
|
# NuGet Packages Directory
|
||||||
|
## TODO: If you have NuGet Package Restore enabled, uncomment the next line
|
||||||
|
#packages/
|
||||||
|
|
||||||
|
# Windows Azure Build Output
|
||||||
|
csx
|
||||||
|
*.build.csdef
|
||||||
|
|
||||||
|
# Windows Store app package directory
|
||||||
|
AppPackages/
|
||||||
|
|
||||||
|
# Others
|
||||||
|
sql/
|
||||||
|
*.Cache
|
||||||
|
ClientBin/
|
||||||
|
[Ss]tyle[Cc]op.*
|
||||||
|
~$*
|
||||||
|
*~
|
||||||
|
*.dbmdl
|
||||||
|
*.[Pp]ublish.xml
|
||||||
|
*.pfx
|
||||||
|
*.publishsettings
|
||||||
|
|
||||||
|
# RIA/Silverlight projects
|
||||||
|
Generated_Code/
|
||||||
|
|
||||||
|
# Backup & report files from converting an old project file to a newer
|
||||||
|
# Visual Studio version. Backup files are not needed, because we have git ;-)
|
||||||
|
_UpgradeReport_Files/
|
||||||
|
Backup*/
|
||||||
|
UpgradeLog*.XML
|
||||||
|
UpgradeLog*.htm
|
||||||
|
|
||||||
|
# SQL Server files
|
||||||
|
App_Data/*.mdf
|
||||||
|
App_Data/*.ldf
|
||||||
|
|
||||||
|
#############
|
||||||
|
## Windows detritus
|
||||||
|
#############
|
||||||
|
|
||||||
|
# Windows image file caches
|
||||||
|
Thumbs.db
|
||||||
|
ehthumbs.db
|
||||||
|
|
||||||
|
# Folder config file
|
||||||
|
Desktop.ini
|
||||||
|
|
||||||
|
# Recycle Bin used on file shares
|
||||||
|
$RECYCLE.BIN/
|
||||||
|
|
||||||
|
# Mac crap
|
||||||
|
.DS_Store
|
||||||
|
|
||||||
|
|
||||||
|
#############
|
||||||
|
## Python
|
||||||
|
#############
|
||||||
|
|
||||||
|
/venv
|
||||||
|
|
||||||
|
*.py[cod]
|
||||||
|
|
||||||
|
# Packages
|
||||||
|
*.egg
|
||||||
|
*.egg-info
|
||||||
|
dist/
|
||||||
|
eggs/
|
||||||
|
parts/
|
||||||
|
var/
|
||||||
|
sdist/
|
||||||
|
|
||||||
|
develop-eggs/
|
||||||
|
.installed.cfg
|
||||||
|
|
||||||
|
# Installer logs
|
||||||
|
pip-log.txt
|
||||||
|
|
||||||
|
# Unit test / coverage reports
|
||||||
|
.coverage
|
||||||
|
.tox
|
||||||
|
|
||||||
|
#Translations
|
||||||
|
*.mo
|
||||||
|
|
||||||
|
#Mr Developer
|
||||||
|
.mr.developer.cfg
|
||||||
|
*.depend
|
||||||
|
*.layout
|
||||||
|
*.session
|
||||||
|
*.tags
|
||||||
|
*.db
|
||||||
|
|
||||||
|
#############
|
||||||
|
## CLion
|
||||||
|
#############
|
||||||
|
|
||||||
|
.idea/
|
||||||
|
|
||||||
|
# CMake
|
||||||
|
cmake-build-*/
|
||||||
|
|
||||||
|
unittest-cpp
|
||||||
|
*.opendb
|
||||||
|
build-test-Desktop_x86_windows_msvc2017_pe_32bit-Debug
|
||||||
|
test/Logs
|
||||||
|
build-test-Desktop_x86_windows_msvc2019_pe_32bit-Debug
|
||||||
|
test/vs2019/.vs
|
||||||
|
Corel Auto-Preserve
|
||||||
|
.vscode
|
||||||
|
build-test-Clang_10-Debug
|
||||||
|
build-test-GCC-Debug
|
||||||
|
test/kdevelopbuild/unittest++
|
||||||
|
test/random_clcg.csv
|
||||||
|
test/random_hash.csv
|
||||||
|
test/random_lcg.csv
|
||||||
|
test/random_lsfr.csv
|
||||||
|
test/random_mwc.csv
|
||||||
|
test/random_pcg.csv
|
||||||
|
test/random_xorshift.csv
|
||||||
|
test/cmake_install.cmake
|
||||||
|
test/Makefile
|
||||||
|
test/vs2019/enc_temp_folder
|
||||||
|
test/vs2019/.leu
|
||||||
|
test/etl_test_log.txt
|
||||||
|
test/vs2019/Debug No Unit Tests
|
||||||
|
test/vs2019/multi_loop.csv
|
||||||
|
temp/create_arduino_library.py
|
||||||
|
examples/FunctionInterruptSimulation-Delegates/vs2019/.vs
|
||||||
|
|
||||||
|
*.db-shm
|
||||||
|
test/vs2019/.vs/etl/v16/Browse.VC.db-wal
|
||||||
|
examples/SharedMessage/.vs
|
||||||
|
examples/QueuedMessageRouter/vs2019/.vs
|
||||||
|
test/sanity-check/c++03/bclang
|
||||||
|
test/sanity-check/c++03/bgcc
|
||||||
|
test/sanity-check/c++11/bclang
|
||||||
|
test/sanity-check/c++11/bgcc
|
||||||
|
test/sanity-check/c++14/bclang
|
||||||
|
test/sanity-check/c++14/bgcc
|
||||||
|
test/log.txt
|
||||||
|
log.txt
|
||||||
|
test/CMakeFiles
|
||||||
|
test/vs2019/Debug LLVM
|
||||||
|
test/vs2019/DebugLLVMNoSTL
|
||||||
|
test/vs2019/DebugNoSTL
|
||||||
|
test/vs2022/Debug LLVM
|
||||||
|
test/vs2019/Debug MSVC - No STL - Built-ins/etl.exe
|
||||||
|
test/vs2019/Debug-LLVM-NoSTL-Builtins/etl.exe
|
||||||
|
test/vs2019/cmake-build
|
||||||
|
test/vs2019/Debug MSVC - No STL - Built-ins
|
||||||
|
test/vs2019/Test1
|
||||||
|
test/vs2019/Test2
|
||||||
|
test/vs2019/Debug MSVC - Force C++03
|
||||||
|
test/vs2019/Debug LLVM - No STL
|
||||||
|
test/vs2019/Debug - No STL
|
||||||
|
test/etl_unit_tests.p
|
||||||
|
test/.ninja_deps
|
||||||
|
test/.ninja_log
|
||||||
|
test/build.ninja
|
||||||
|
test/compile_commands.json
|
||||||
|
test/etl_unit_tests
|
||||||
|
test/build-make
|
||||||
|
test/meson-info
|
||||||
|
test/meson-logs
|
||||||
|
test/meson-private
|
||||||
|
test/build-ninja
|
||||||
|
test/vs2019/Debug MSVC C++20
|
||||||
|
test/vs2019/Debug MSVC C++20 - No STL
|
||||||
|
patches
|
||||||
|
test/vs2019/Debug MSVC - No Tests
|
||||||
|
test/vs2019/Debug MSVC - No STL - Force Built-ins
|
||||||
|
test/vs2019/Debug MSVC - No STL - Force Constexpr Algorithms
|
||||||
|
test/vs2019/Debug Intel
|
||||||
|
test/vs2019/Debug Intel - No STL
|
||||||
|
EmbeddedTemplateLibrary-20.24.1.tar.gz
|
||||||
|
test/etl_initializer_list/.vs
|
||||||
|
test/build-etl_initializer_list-Desktop_x86_windows_msvc2019_pe_32bit-Debug
|
||||||
|
test/build-etl_initializer_list-GCC-Debug
|
||||||
|
test/etl_initializer_list/etl_initializer_list.vcxproj.filters
|
||||||
|
test/etl_initializer_list/build-make
|
||||||
|
test/vs-build
|
||||||
|
test/etl_error_handler/exceptions/build-make
|
||||||
|
test/etl_error_handler/log_errors/build-make
|
||||||
|
test/etl_error_handler/log_errors_and_exceptions/.vs
|
||||||
|
test/etl_error_handler/log_errors_and_exceptions/build-make
|
||||||
|
test/etl_error_handler/build-log_errors-GCC-Debug
|
||||||
|
test/etl_error_handler/build-exceptions_and_log_errors-GCC-Debug
|
||||||
|
test/etl_error_handler/build-exceptions-GCC-Debug
|
||||||
|
test/etl_error_handler/exceptions_and_log_errors/.vs
|
||||||
|
examples/ArmTimerCallbacks - C++/ArmTimerCallbacks.uvoptx
|
||||||
|
test/vs2022/.vs
|
||||||
|
test/vs2022/random_clcg.csv
|
||||||
|
test/vs2022/random_hash.csv
|
||||||
|
test/vs2022/random_lsfr.csv
|
||||||
|
test/vs2022/random_lcg.csv
|
||||||
|
test/vs2022/random_mwc.csv
|
||||||
|
test/vs2022/random_pcg.csv
|
||||||
|
test/vs2022/random_xorshift.csv
|
||||||
|
test/vs2019/Debug MSVC C++14
|
||||||
|
test/vs2019/Debug MSVC C++14 - No STL
|
||||||
|
test/vs2019/MSVC - No STL -O2
|
||||||
|
test/vs2022/Debug - No STL
|
||||||
|
test/vs2022/Debug MSVC C++20
|
||||||
|
test/vs2022/Debug MSVC - Force C++03
|
||||||
|
test/vs2022/Debug MSVC - No STL - Built-ins
|
||||||
|
test/vs2022/Debug MSVC - No STL - Force Built-ins
|
||||||
|
test/temp
|
||||||
|
test/vs2022/Debug MSVC C++14
|
||||||
|
test/vs2022/Debug MSVC C++20 - No STL
|
||||||
|
build-test-Desktop_x86_windows_msvc2019_pe_64bit-Debug
|
||||||
|
test/vs2022/Debug MSVC C++14 - No STL
|
||||||
|
test/log.txt
|
||||||
|
test/etl_error_handler/log.txt
|
||||||
|
test/syntax_check/c++03/bgcc
|
||||||
|
test/syntax_check/c++11/bclang
|
||||||
|
test/syntax_check/c++14/bclang
|
||||||
|
test/syntax_check/c++17/bclang
|
||||||
|
test/syntax_check/c++03/bclang
|
||||||
|
test/syntax_check/c++14/bgcc
|
||||||
|
test/syntax_check/c++20/bclang
|
||||||
|
test/syntax_check/c++11/bgcc
|
||||||
|
test/syntax_check/c++17/bgcc
|
||||||
|
test/syntax_check/c++20/bgcc
|
||||||
|
test/vs2022/Debug MSVC C++17
|
||||||
|
test/vs2022/Debug MSVC C++17 - No STL
|
||||||
|
test/vs2022/Release MSVC C++20 - No STL - Optimised -O2
|
||||||
|
test/vs2022/Release MSVC C++20 - Optimised O2
|
||||||
|
test/vs2022/Debug MSVC C++ 20 - No Tests
|
||||||
|
test/vs2022/enc_temp_folder
|
||||||
|
test/vs2022/Debug MSVC C++20 - No virtual messages
|
||||||
|
examples/MutexMessageRouter/.vs
|
||||||
|
support/time remaining test.xlsx
|
||||||
|
test/vs2022/Debug MSVC C++20 - Force C++03
|
||||||
|
test/vs2022/Release MSVC C++20 - No STL - Optimised -O2 - Sanitiser
|
||||||
|
test/test_file_list.txt
|
||||||
|
examples/QueuedMessageRouter/vs2022/.vs/QueuedMessageRouter/CopilotIndices
|
||||||
|
examples/QueuedMessageRouter/vs2022/.vs/QueuedMessageRouter/FileContentIndex
|
||||||
|
examples/QueuedMessageRouter/vs2022/.vs/QueuedMessageRouter/v17
|
||||||
|
test/etl_error_handler/assert_errors/build-make
|
||||||
|
test/etl_error_handler/assert_function/build-make
|
||||||
|
test/syntax_check/bgcc
|
||||||
|
test/syntax_check/bclang
|
||||||
|
test/vs2022/Debug Clang C++20
|
||||||
|
test/vs2022/Debug MSVC C++20 - Forve C++03 - No virtual messages
|
||||||
|
test/reflog.txt
|
||||||
|
test/etl_error_handler/assert_function/build-make
|
||||||
|
test/syntax_check/bgcc
|
||||||
|
test/vs2022/Debug MSVC C++23
|
||||||
|
test/vs2022/Debug MSVC C++23 - No STL
|
25
components/etl/.gitlab-ci.yml
Normal file
25
components/etl/.gitlab-ci.yml
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
image: rikorose/gcc-cmake
|
||||||
|
|
||||||
|
variables:
|
||||||
|
GIT_SUBMODULE_STRATEGY: recursive
|
||||||
|
GIT_STRATEGY: clone
|
||||||
|
|
||||||
|
stages:
|
||||||
|
- build
|
||||||
|
- test
|
||||||
|
|
||||||
|
Build ETL:
|
||||||
|
stage: build
|
||||||
|
script:
|
||||||
|
- git fetch --tags
|
||||||
|
- cmake -DBUILD_TESTS=ON ./
|
||||||
|
- make
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- ./test/etl_tests
|
||||||
|
|
||||||
|
Run ETL tests:
|
||||||
|
stage: test
|
||||||
|
dependencies:
|
||||||
|
- Build ETL
|
||||||
|
script: ./test/etl_tests
|
12
components/etl/.gitrepo
Normal file
12
components/etl/.gitrepo
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
; DO NOT EDIT (unless you know what you are doing)
|
||||||
|
;
|
||||||
|
; This subdirectory is a git "subrepo", and this file is maintained by the
|
||||||
|
; git-subrepo command. See https://github.com/ingydotnet/git-subrepo#readme
|
||||||
|
;
|
||||||
|
[subrepo]
|
||||||
|
remote = git@github.com:ETLCPP/etl.git
|
||||||
|
branch = 20.41.6
|
||||||
|
commit = be5537ec0a6b114732bd2a5f6cbc1af1ebbf7535
|
||||||
|
parent = 931c4def568266254e587702ee8748acc785192d
|
||||||
|
method = merge
|
||||||
|
cmdver = 0.4.9
|
95
components/etl/CMakeLists.txt
Normal file
95
components/etl/CMakeLists.txt
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
#######################################################################
|
||||||
|
# The Embedded Template Library (https://www.etlcpp.com/)
|
||||||
|
#######################################################################
|
||||||
|
cmake_minimum_required(VERSION 3.10)
|
||||||
|
|
||||||
|
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/helpers.cmake)
|
||||||
|
|
||||||
|
set(MSG_PREFIX "etl |")
|
||||||
|
etl_determine_version_with_git(${GIT_DIR_LOOKUP_POLICY})
|
||||||
|
if(NOT ETL_VERSION)
|
||||||
|
etl_determine_version_with_file("version.txt")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
project(etl VERSION ${ETL_VERSION} LANGUAGES CXX)
|
||||||
|
|
||||||
|
option(BUILD_TESTS "Build unit tests" OFF)
|
||||||
|
option(NO_STL "No STL" OFF)
|
||||||
|
# There is a bug on old gcc versions for some targets that causes all system headers
|
||||||
|
# to be implicitly wrapped with 'extern "C"'
|
||||||
|
# Users can add set(NO_SYSTEM_INCLUDE ON) to their top level CMakeLists.txt to work around this.
|
||||||
|
option(NO_SYSTEM_INCLUDE "Do not include with -isystem" OFF)
|
||||||
|
if (NO_SYSTEM_INCLUDE)
|
||||||
|
set(INCLUDE_SPECIFIER "")
|
||||||
|
else()
|
||||||
|
set(INCLUDE_SPECIFIER "SYSTEM")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_library(${PROJECT_NAME} INTERFACE)
|
||||||
|
# This allows users which use the add_subdirectory or FetchContent
|
||||||
|
# to use the same target as users which use find_package
|
||||||
|
add_library(etl::etl ALIAS ${PROJECT_NAME})
|
||||||
|
|
||||||
|
include(GNUInstallDirs)
|
||||||
|
|
||||||
|
target_include_directories(${PROJECT_NAME} ${INCLUDE_SPECIFIER} INTERFACE
|
||||||
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
||||||
|
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries(${PROJECT_NAME} INTERFACE)
|
||||||
|
|
||||||
|
# only install if top level project
|
||||||
|
if(${CMAKE_PROJECT_NAME} STREQUAL ${PROJECT_NAME})
|
||||||
|
# Steps here based on excellent guide: https://dominikberner.ch/cmake-interface-lib/
|
||||||
|
# Which also details all steps
|
||||||
|
include(CMakePackageConfigHelpers)
|
||||||
|
install(TARGETS ${PROJECT_NAME}
|
||||||
|
EXPORT ${PROJECT_NAME}Targets
|
||||||
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
|
)
|
||||||
|
if(ETL_VERSION)
|
||||||
|
# Generate the package configuration files using CMake provided macros
|
||||||
|
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.14)
|
||||||
|
# Generate the package configuration files using CMake provided macros
|
||||||
|
write_basic_package_version_file(
|
||||||
|
"${PROJECT_NAME}ConfigVersion.cmake"
|
||||||
|
COMPATIBILITY SameMajorVersion
|
||||||
|
ARCH_INDEPENDENT
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
# This is needed for CMake < 3.14
|
||||||
|
# because the ARCH_INDEPENDENT option is not available
|
||||||
|
# in CMake < 3.14
|
||||||
|
# See https://cmake.org/cmake/help/latest/module/CMakePackageConfigHelpers.html
|
||||||
|
# for more information
|
||||||
|
write_basic_package_version_file(
|
||||||
|
"${PROJECT_NAME}ConfigVersion.cmake"
|
||||||
|
COMPATIBILITY SameMajorVersion
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
configure_package_config_file(
|
||||||
|
"${PROJECT_SOURCE_DIR}/cmake/${PROJECT_NAME}Config.cmake.in"
|
||||||
|
"${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
|
||||||
|
INSTALL_DESTINATION
|
||||||
|
${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/cmake)
|
||||||
|
|
||||||
|
# Install target file, then package configuration files, and finally the headers
|
||||||
|
install(EXPORT ${PROJECT_NAME}Targets
|
||||||
|
FILE ${PROJECT_NAME}Targets.cmake
|
||||||
|
NAMESPACE ${PROJECT_NAME}::
|
||||||
|
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/cmake)
|
||||||
|
install(FILES "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
|
||||||
|
"${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
|
||||||
|
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/cmake)
|
||||||
|
install(DIRECTORY ${PROJECT_SOURCE_DIR}/include/etl DESTINATION include)
|
||||||
|
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (BUILD_TESTS)
|
||||||
|
enable_testing()
|
||||||
|
add_subdirectory(test)
|
||||||
|
endif()
|
13
components/etl/CONTRIBUTING.md
Normal file
13
components/etl/CONTRIBUTING.md
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
# How to contribute
|
||||||
|
|
||||||
|
If your are considering creating a pull request, please observe the following:
|
||||||
|
|
||||||
|
- If you are adding or modifying a feature, add *new* unit tests that test that feature.
|
||||||
|
- If you are fixing a bug, add a unit test that *fails* before the bug fix is implemented.
|
||||||
|
- Do not initiate a pull request until all of the units tests pass.
|
||||||
|
- Branches should be based on the branch `master`.
|
||||||
|
|
||||||
|
There is a project file for VS2022 for C++14, 17, 20, and bash scripts that run the tests for C++11, 14, 17, 20 under Linux with GCC and Clang.
|
||||||
|
|
||||||
|
If you are thinking of adding a new feature then raise this on the GitHub Issues page for discussion as the maintainers and user of the ETL may have questions or suggestions.
|
||||||
|
It is possible that the maintainer of the ETL or another contributor is already working on the same or a related feature.
|
2401
components/etl/Doxyfile
Normal file
2401
components/etl/Doxyfile
Normal file
File diff suppressed because it is too large
Load diff
19
components/etl/LICENSE
Normal file
19
components/etl/LICENSE
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
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.
|
149
components/etl/README.md
Normal file
149
components/etl/README.md
Normal file
|
@ -0,0 +1,149 @@
|
||||||
|
Embedded Template Library (ETL)
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|

|
||||||
|
[](https://img.shields.io/github/release-date/jwellbelove/etl?color=%231182c3)
|
||||||
|
[](https://en.wikipedia.org/wiki/C%2B%2B#Standardization)
|
||||||
|
[](https://opensource.org/licenses/MIT)
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
[](https://ci.appveyor.com/project/jwellbelove/etl/branch/master)
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
[](https://www.codacy.com/manual/jwellbelove/etl?utm_source=github.com&utm_medium=referral&utm_content=ETLCPP/etl&utm_campaign=Badge_Grade)
|
||||||
|
|
||||||
|
[](https://www.etlcpp.com/sponsor.html)
|
||||||
|
|
||||||
|
[Project documentation](https://www.etlcpp.com/)
|
||||||
|
|
||||||
|
## Motivation
|
||||||
|
|
||||||
|
C++ is a great language to use for embedded applications and templates are a powerful aspect. The standard library can offer a great deal of well tested functionality, but there are some parts of the standard library that do not fit well with deterministic behaviour and limited resource requirements. These limitations usually preclude the use of dynamically allocated memory and containers with open ended sizes.
|
||||||
|
|
||||||
|
What is needed is a template library where the user can declare the size, or maximum size of any object upfront. Most embedded compilers do not currently support the standard beyond C++ 03, therefore excluding the programmer from using the enhanced features of the later library.
|
||||||
|
|
||||||
|
This is what the ETL attempts to achieve.
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
|
||||||
|
The ETL is not designed to completely replace the STL, but complement it.
|
||||||
|
Its design objective covers three areas.
|
||||||
|
|
||||||
|
- Create a set of containers where the size or maximum size is determined at compile time. These containers are direct equivalents of those supplied in the STL.
|
||||||
|
- Be compatible with C++ 03 but implement as many of the C++ 11/14/17/20/23 additions as possible.
|
||||||
|
- Add other useful components that are not present in the standard library.
|
||||||
|
|
||||||
|
The embedded template library has been designed for lower resource embedded applications.
|
||||||
|
It contains a set of containers, algorithms and utilities, some of which emulate parts of the STL.
|
||||||
|
There is no dynamic memory allocation. The library makes no use of the heap. All of the containers have a fixed capacity allowing all memory allocation to be determined at compile time.
|
||||||
|
The library is intended for any compiler that supports C++98/03/11/14/17/20/23.
|
||||||
|
|
||||||
|
## Main features
|
||||||
|
|
||||||
|
- Cross platform. This library is not specific to any processor type.
|
||||||
|
- No dynamic memory allocation
|
||||||
|
- No RTTI required
|
||||||
|
- Very little use of virtual functions. They are used only when they are absolutely necessary for the required functionality
|
||||||
|
- A set of fixed capacity containers. (array, bitset, deque, forward_list, list, queue, stack, vector, map, set, etc.)
|
||||||
|
- As the storage for all of the container types is allocated as a contiguous block, they are extremely cache friendly
|
||||||
|
- Templated compile time constants
|
||||||
|
- Templated design pattern base classes (Visitor, Observer)
|
||||||
|
- Reverse engineered C++ 0x11 features (type traits, algorithms, containers etc.)
|
||||||
|
- Type-safe enumerations
|
||||||
|
- Type-safe typedefs
|
||||||
|
- 8, 16, 32 & 64 bit CRC calculations
|
||||||
|
- Checksums & hash functions
|
||||||
|
- Variants (a type that can store many types in a type-safe interface)
|
||||||
|
- Choice of asserts, exceptions, error handler or no checks on errors
|
||||||
|
- Unit tested (currently over 9400 tests), using VS2022, GCC 12, Clang 14.
|
||||||
|
- Many utilities for template support.
|
||||||
|
- Easy to read and documented source.
|
||||||
|
- Free support via email, GitHub and Slack
|
||||||
|
|
||||||
|
Any help porting the library to work under different platforms and compilers would be gratefully received.
|
||||||
|
I am especially interested in people who are using Keil, IAR, Green Hills, TI Code Composer etc, bare metal or RTOS, and DSPs.
|
||||||
|
|
||||||
|
See (https://www.etlcpp.com) for up-to-date information.
|
||||||
|
|
||||||
|
## Installing this library
|
||||||
|
|
||||||
|
You can find the setup steps [here](https://www.etlcpp.com/setup.html).
|
||||||
|
|
||||||
|
### CMake
|
||||||
|
|
||||||
|
One way to use this library is to drop it somewhere in your project directory
|
||||||
|
and then make the library available by using `add_subdirectory`
|
||||||
|
|
||||||
|
```cmake
|
||||||
|
add_subdirectory(etl)
|
||||||
|
add_executable(foo main.cpp)
|
||||||
|
target_link_libraries(foo PRIVATE etl::etl)
|
||||||
|
```
|
||||||
|
|
||||||
|
If ETL library is used as a Git submodule it may require additional configuration for proper ETL version resolution by allowing the lookup for Git folder outside of the library root directory.
|
||||||
|
|
||||||
|
```cmake
|
||||||
|
set(GIT_DIR_LOOKUP_POLICY ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR)
|
||||||
|
add_subdirectory(etl)
|
||||||
|
```
|
||||||
|
|
||||||
|
If you want to install this library with CMake, you can perform the following steps. On Linux,
|
||||||
|
super user rights might be required to install the library, so it might be necessary to add
|
||||||
|
`sudo` before the last command:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git clone https://github.com/ETLCPP/etl.git
|
||||||
|
cd etl
|
||||||
|
git checkout <targetVersion>
|
||||||
|
cmake -B build .
|
||||||
|
cmake --install build/
|
||||||
|
```
|
||||||
|
|
||||||
|
After the library has been installed, you can use
|
||||||
|
[find_package](https://cmake.org/cmake/help/latest/command/find_package.html) to use the library.
|
||||||
|
Replace `<majorVersionRequirement>` with your desired major version:
|
||||||
|
|
||||||
|
```cmake
|
||||||
|
find_package(etl <majorVersionRequirement>)
|
||||||
|
add_executable(foo main.cpp)
|
||||||
|
target_link_libraries(foo PRIVATE etl::etl)
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
Alternatively you can use [FetchContent](https://cmake.org/cmake/help/latest/module/FetchContent.html),
|
||||||
|
replacing `<targetVersion>` with the version to install based on a git tag:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
Include(FetchContent)
|
||||||
|
|
||||||
|
FetchContent_Declare(
|
||||||
|
etl
|
||||||
|
GIT_REPOSITORY https://github.com/ETLCPP/etl
|
||||||
|
GIT_TAG <targetVersion>
|
||||||
|
)
|
||||||
|
|
||||||
|
FetchContent_MakeAvailable(etl)
|
||||||
|
|
||||||
|
add_executable(foo main.cpp)
|
||||||
|
target_link_libraries(foo PRIVATE etl::etl)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Arduino library
|
||||||
|
|
||||||
|
The content of this repo is available as a library in the Arduino IDE (search for the "Embedded Template Library" in the IDE library manager). The Arduino library repository is available at ```https://github.com/ETLCPP/etl-arduino```, see there for more details.
|
20
components/etl/appveyor.yml
Normal file
20
components/etl/appveyor.yml
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
version: 1.0.{build}
|
||||||
|
branches:
|
||||||
|
only:
|
||||||
|
- master
|
||||||
|
image: Visual Studio 2022
|
||||||
|
configuration:
|
||||||
|
- Debug MSVC C++14
|
||||||
|
- Debug MSVC C++14 - No STL
|
||||||
|
- Debug MSVC C++17
|
||||||
|
- Debug MSVC C++17 - No STL
|
||||||
|
- Debug MSVC C++20
|
||||||
|
- Debug MSVC C++20 - No STL
|
||||||
|
clone_folder: c:\projects\etl
|
||||||
|
install:
|
||||||
|
- cmd: git submodule update --init --recursive
|
||||||
|
build:
|
||||||
|
project: test/vs2022/etl.vcxproj
|
||||||
|
verbosity: minimal
|
||||||
|
|
||||||
|
|
80
components/etl/arduino/Embedded_Template_Library.h
Normal file
80
components/etl/arduino/Embedded_Template_Library.h
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
|
||||||
|
#ifndef ETL_EMBEDDED_TEMPLATE_LIBRARY_INCLUDED
|
||||||
|
#define ETL_EMBEDDED_TEMPLATE_LIBRARY_INCLUDED
|
||||||
|
|
||||||
|
#if defined(TEENSYDUINO)
|
||||||
|
|
||||||
|
#if defined(__AVR_ATmega32U4__)
|
||||||
|
#define ARDUINO_BOARD "Teensy 2.0"
|
||||||
|
#elif defined(__AVR_AT90USB1286__)
|
||||||
|
#define ARDUINO_BOARD "Teensy++ 2.0"
|
||||||
|
#elif defined(__MK20DX128__)
|
||||||
|
#define ARDUINO_BOARD "Teensy 3.0"
|
||||||
|
#elif defined(__MK20DX256__)
|
||||||
|
#define ARDUINO_BOARD "Teensy 3.2" // and Teensy 3.1
|
||||||
|
#elif defined(__MKL26Z64__)
|
||||||
|
#define ARDUINO_BOARD "Teensy LC"
|
||||||
|
#elif defined(__MK64FX512__)
|
||||||
|
#define ARDUINO_BOARD "Teensy 3.5"
|
||||||
|
#elif defined(__MK66FX1M0__)
|
||||||
|
#define ARDUINO_BOARD "Teensy 3.6"
|
||||||
|
#else
|
||||||
|
#define ARDUINO_BOARD "Unknown"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#else // --------------- Arduino ------------------
|
||||||
|
|
||||||
|
#if defined(ARDUINO_AVR_ADK)
|
||||||
|
#define ARDUINO_BOARD "Mega Adk"
|
||||||
|
#elif defined(ARDUINO_AVR_BT)
|
||||||
|
#define ARDUINO_BOARD "Bt"
|
||||||
|
#elif defined(ARDUINO_AVR_DUEMILANOVE)
|
||||||
|
#define ARDUINO_BOARD "Duemilanove"
|
||||||
|
#elif defined(ARDUINO_AVR_ESPLORA)
|
||||||
|
#define ARDUINO_BOARD "Esplora"
|
||||||
|
#elif defined(ARDUINO_AVR_ETHERNET)
|
||||||
|
#define ARDUINO_BOARD "Ethernet"
|
||||||
|
#elif defined(ARDUINO_AVR_FIO)
|
||||||
|
#define ARDUINO_BOARD "Fio"
|
||||||
|
#elif defined(ARDUINO_AVR_GEMMA)
|
||||||
|
#define ARDUINO_BOARD "Gemma"
|
||||||
|
#elif defined(ARDUINO_AVR_LEONARDO)
|
||||||
|
#define ARDUINO_BOARD "Leonardo"
|
||||||
|
#elif defined(ARDUINO_AVR_LILYPAD)
|
||||||
|
#define ARDUINO_BOARD "Lilypad"
|
||||||
|
#elif defined(ARDUINO_AVR_LILYPAD_USB)
|
||||||
|
#define ARDUINO_BOARD "Lilypad Usb"
|
||||||
|
#elif defined(ARDUINO_AVR_MEGA)
|
||||||
|
#define ARDUINO_BOARD "Mega"
|
||||||
|
#elif defined(ARDUINO_AVR_MEGA2560)
|
||||||
|
#define ARDUINO_BOARD "Mega 2560"
|
||||||
|
#elif defined(ARDUINO_AVR_MICRO)
|
||||||
|
#define ARDUINO_BOARD "Micro"
|
||||||
|
#elif defined(ARDUINO_AVR_MINI)
|
||||||
|
#define ARDUINO_BOARD "Mini"
|
||||||
|
#elif defined(ARDUINO_AVR_NANO)
|
||||||
|
#define ARDUINO_BOARD "Nano"
|
||||||
|
#elif defined(ARDUINO_AVR_NG)
|
||||||
|
#define ARDUINO_BOARD "NG"
|
||||||
|
#elif defined(ARDUINO_AVR_PRO)
|
||||||
|
#define ARDUINO_BOARD "Pro"
|
||||||
|
#elif defined(ARDUINO_AVR_ROBOT_CONTROL)
|
||||||
|
#define ARDUINO_BOARD "Robot Ctrl"
|
||||||
|
#elif defined(ARDUINO_AVR_ROBOT_MOTOR)
|
||||||
|
#define ARDUINO_BOARD "Robot Motor"
|
||||||
|
#elif defined(ARDUINO_AVR_UNO)
|
||||||
|
#define ARDUINO_BOARD "Uno"
|
||||||
|
#elif defined(ARDUINO_AVR_YUN)
|
||||||
|
#define ARDUINO_BOARD "Yun"
|
||||||
|
#elif defined(ARDUINO_SAM_DUE)
|
||||||
|
#define ARDUINO_BOARD "Due"
|
||||||
|
#elif defined(ARDUINO_SAMD_ZERO)
|
||||||
|
#define ARDUINO_BOARD "Zero"
|
||||||
|
#elif defined(ARDUINO_ARC32_TOOLS)
|
||||||
|
#define ARDUINO_BOARD "101"
|
||||||
|
#else
|
||||||
|
#define ARDUINO_BOARD "Unknown"
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,12 @@
|
||||||
|
#include "Embedded_Template_Library.h" // This is required for any more etl import when using Arduino IDE
|
||||||
|
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void loop()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
// make sure that we do not rely on the STL
|
||||||
|
#define ETL_NO_STL
|
||||||
|
|
||||||
|
#include "Embedded_Template_Library.h"
|
||||||
|
#include "etl/vector.h"
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
void print_vector(etl::ivector<T> const & vec_in)
|
||||||
|
{
|
||||||
|
Serial.print(F("print vector content | size ")); Serial.print(vec_in.size()); Serial.print(F(" | capacity ")); Serial.println(vec_in.capacity());
|
||||||
|
Serial.print(F("content | "));
|
||||||
|
|
||||||
|
for (T const & elem : vec_in)
|
||||||
|
{
|
||||||
|
Serial.print(elem);
|
||||||
|
Serial.print(F(" | "));
|
||||||
|
}
|
||||||
|
|
||||||
|
Serial.println();
|
||||||
|
}
|
||||||
|
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
Serial.begin(115200);
|
||||||
|
delay(100);
|
||||||
|
Serial.println(F("booted"));
|
||||||
|
|
||||||
|
etl::vector<int, 12> vec_int;
|
||||||
|
|
||||||
|
Serial.println(F("initialized vec_int"));
|
||||||
|
print_vector(vec_int);
|
||||||
|
|
||||||
|
vec_int.push_back(1);
|
||||||
|
vec_int.push_back(2);
|
||||||
|
Serial.println(F("pushed to vec_int"));
|
||||||
|
print_vector(vec_int);
|
||||||
|
|
||||||
|
vec_int.pop_back();
|
||||||
|
Serial.println(F("pop from vec_int; returns no value"));
|
||||||
|
print_vector(vec_int);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
39
components/etl/arduino/library-arduino.json
Normal file
39
components/etl/arduino/library-arduino.json
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
{
|
||||||
|
"name": "Embedded Template Library ETL",
|
||||||
|
"version": "20.41.6",
|
||||||
|
"authors": {
|
||||||
|
"name": "John Wellbelove",
|
||||||
|
"email": "john.wellbelove@etlcpp.com"
|
||||||
|
},
|
||||||
|
"homepage": "https://www.etlcpp.com/",
|
||||||
|
"license": "MIT",
|
||||||
|
"description": "ETL. A C++ template library tailored for embedded systems. Directories formatted for Arduino",
|
||||||
|
"keywords": "c-plus-plus, cpp, algorithms, containers, templates",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/ETLCPP/etl-arduino.git"
|
||||||
|
},
|
||||||
|
"build": {
|
||||||
|
"includeDir": "include"
|
||||||
|
},
|
||||||
|
"export": {
|
||||||
|
"include": [
|
||||||
|
"include",
|
||||||
|
"examples",
|
||||||
|
"LICENSE",
|
||||||
|
"README.md"
|
||||||
|
],
|
||||||
|
"exclude": [
|
||||||
|
"include/etl/experimental",
|
||||||
|
"include/etl/deprecated",
|
||||||
|
"**/__vm",
|
||||||
|
"**/.vs",
|
||||||
|
"**/*.filters",
|
||||||
|
"**/*.log",
|
||||||
|
"**/*.tmp"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"platforms": "*",
|
||||||
|
"frameworks": "*"
|
||||||
|
}
|
||||||
|
|
10
components/etl/arduino/library-arduino.properties
Normal file
10
components/etl/arduino/library-arduino.properties
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
name=Embedded Template Library ETL
|
||||||
|
version=20.41.6
|
||||||
|
author= John Wellbelove <john.wellbelove@etlcpp.com>
|
||||||
|
maintainer=John Wellbelove <john.wellbelove@etlcpp.com>
|
||||||
|
license=MIT
|
||||||
|
sentence=ETL. A C++ template library tailored for embedded systems.
|
||||||
|
paragraph=
|
||||||
|
category=Other
|
||||||
|
url=https://www.etlcpp.com/
|
||||||
|
architectures=*
|
199
components/etl/cmake/GetGitRevisionDescription.cmake
Normal file
199
components/etl/cmake/GetGitRevisionDescription.cmake
Normal file
|
@ -0,0 +1,199 @@
|
||||||
|
# - Returns a version string from Git
|
||||||
|
#
|
||||||
|
# These functions force a re-configure on each git commit so that you can
|
||||||
|
# trust the values of the variables in your build system.
|
||||||
|
#
|
||||||
|
# get_git_head_revision(<refspecvar> <hashvar> [ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR])
|
||||||
|
#
|
||||||
|
# Returns the refspec and sha hash of the current head revision
|
||||||
|
#
|
||||||
|
# git_describe(<var> [<additional arguments to git describe> ...])
|
||||||
|
#
|
||||||
|
# Returns the results of git describe on the source tree, and adjusting
|
||||||
|
# the output so that it tests false if an error occurs.
|
||||||
|
#
|
||||||
|
# Requires CMake 2.6 or newer (uses the 'function' command)
|
||||||
|
#
|
||||||
|
# Original Author:
|
||||||
|
# 2009-2020 Ryan Pavlik <ryan.pavlik@gmail.com> <abiryan@ryand.net>
|
||||||
|
# http://academic.cleardefinition.com
|
||||||
|
#
|
||||||
|
# Copyright 2009-2013, Iowa State University.
|
||||||
|
# Copyright 2013-2020, Ryan Pavlik
|
||||||
|
# Copyright 2013-2020, Contributors
|
||||||
|
# SPDX-License-Identifier: BSL-1.0
|
||||||
|
# Distributed under the Boost Software License, Version 1.0.
|
||||||
|
# (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
|
# http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
if(__etl_get_git_revision_description)
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
set(__etl_get_git_revision_description YES)
|
||||||
|
|
||||||
|
# We must run the following at "include" time, not at function call time,
|
||||||
|
# to find the path to this module rather than the path to a calling list file
|
||||||
|
get_filename_component(_gitdescmoddir ${CMAKE_CURRENT_LIST_FILE} PATH)
|
||||||
|
|
||||||
|
# Function _git_find_closest_git_dir finds the next closest .git directory
|
||||||
|
# that is part of any directory in the path defined by _start_dir.
|
||||||
|
# The result is returned in the parent scope variable whose name is passed
|
||||||
|
# as variable _git_dir_var. If no .git directory can be found, the
|
||||||
|
# function returns an empty string via _git_dir_var.
|
||||||
|
#
|
||||||
|
# Example: Given a path C:/bla/foo/bar and assuming C:/bla/.git exists and
|
||||||
|
# neither foo nor bar contain a file/directory .git. This will return
|
||||||
|
# C:/bla/.git
|
||||||
|
#
|
||||||
|
function(_etl_git_find_closest_git_dir _start_dir _git_dir_var)
|
||||||
|
set(cur_dir "${_start_dir}")
|
||||||
|
set(git_dir "${_start_dir}/.git")
|
||||||
|
while(NOT EXISTS "${git_dir}")
|
||||||
|
# .git dir not found, search parent directories
|
||||||
|
set(git_previous_parent "${cur_dir}")
|
||||||
|
get_filename_component(cur_dir "${cur_dir}" DIRECTORY)
|
||||||
|
if(cur_dir STREQUAL git_previous_parent)
|
||||||
|
# We have reached the root directory, we are not in git
|
||||||
|
set(${_git_dir_var}
|
||||||
|
""
|
||||||
|
PARENT_SCOPE)
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
set(git_dir "${cur_dir}/.git")
|
||||||
|
endwhile()
|
||||||
|
set(${_git_dir_var}
|
||||||
|
"${git_dir}"
|
||||||
|
PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(etl_get_git_head_revision _refspecvar _hashvar)
|
||||||
|
_etl_git_find_closest_git_dir("${CMAKE_CURRENT_SOURCE_DIR}" GIT_DIR)
|
||||||
|
|
||||||
|
if("${ARGN}" STREQUAL "ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR")
|
||||||
|
set(ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR TRUE)
|
||||||
|
else()
|
||||||
|
set(ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR FALSE)
|
||||||
|
endif()
|
||||||
|
if(NOT "${GIT_DIR}" STREQUAL "")
|
||||||
|
file(RELATIVE_PATH _relative_to_source_dir "${CMAKE_SOURCE_DIR}"
|
||||||
|
"${GIT_DIR}")
|
||||||
|
if("${_relative_to_source_dir}" MATCHES "[.][.]" AND NOT ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR)
|
||||||
|
# We've gone above the CMake root dir.
|
||||||
|
set(GIT_DIR "")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
if("${GIT_DIR}" STREQUAL "")
|
||||||
|
set(${_refspecvar}
|
||||||
|
"GITDIR-NOTFOUND"
|
||||||
|
PARENT_SCOPE)
|
||||||
|
set(${_hashvar}
|
||||||
|
"GITDIR-NOTFOUND"
|
||||||
|
PARENT_SCOPE)
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Check if the current source dir is a git submodule or a worktree.
|
||||||
|
# In both cases .git is a file instead of a directory.
|
||||||
|
#
|
||||||
|
if(NOT IS_DIRECTORY ${GIT_DIR})
|
||||||
|
# The following git command will return a non empty string that
|
||||||
|
# points to the super project working tree if the current
|
||||||
|
# source dir is inside a git submodule.
|
||||||
|
# Otherwise the command will return an empty string.
|
||||||
|
#
|
||||||
|
execute_process(
|
||||||
|
COMMAND "${GIT_EXECUTABLE}" rev-parse
|
||||||
|
--show-superproject-working-tree
|
||||||
|
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
||||||
|
OUTPUT_VARIABLE out
|
||||||
|
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
if(NOT "${out}" STREQUAL "")
|
||||||
|
# If out is empty, GIT_DIR/CMAKE_CURRENT_SOURCE_DIR is in a submodule
|
||||||
|
file(READ ${GIT_DIR} submodule)
|
||||||
|
string(REGEX REPLACE "gitdir: (.*)$" "\\1" GIT_DIR_RELATIVE
|
||||||
|
${submodule})
|
||||||
|
string(STRIP ${GIT_DIR_RELATIVE} GIT_DIR_RELATIVE)
|
||||||
|
get_filename_component(SUBMODULE_DIR ${GIT_DIR} PATH)
|
||||||
|
get_filename_component(GIT_DIR ${SUBMODULE_DIR}/${GIT_DIR_RELATIVE}
|
||||||
|
ABSOLUTE)
|
||||||
|
set(HEAD_SOURCE_FILE "${GIT_DIR}/HEAD")
|
||||||
|
else()
|
||||||
|
# GIT_DIR/CMAKE_CURRENT_SOURCE_DIR is in a worktree
|
||||||
|
file(READ ${GIT_DIR} worktree_ref)
|
||||||
|
# The .git directory contains a path to the worktree information directory
|
||||||
|
# inside the parent git repo of the worktree.
|
||||||
|
#
|
||||||
|
string(REGEX REPLACE "gitdir: (.*)$" "\\1" git_worktree_dir
|
||||||
|
${worktree_ref})
|
||||||
|
string(STRIP ${git_worktree_dir} git_worktree_dir)
|
||||||
|
_etl_git_find_closest_git_dir("${git_worktree_dir}" GIT_DIR)
|
||||||
|
set(HEAD_SOURCE_FILE "${git_worktree_dir}/HEAD")
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
set(HEAD_SOURCE_FILE "${GIT_DIR}/HEAD")
|
||||||
|
endif()
|
||||||
|
set(GIT_DATA "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/git-data")
|
||||||
|
if(NOT EXISTS "${GIT_DATA}")
|
||||||
|
file(MAKE_DIRECTORY "${GIT_DATA}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT EXISTS "${HEAD_SOURCE_FILE}")
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
set(HEAD_FILE "${GIT_DATA}/HEAD")
|
||||||
|
configure_file("${HEAD_SOURCE_FILE}" "${HEAD_FILE}" COPYONLY)
|
||||||
|
|
||||||
|
configure_file("${_gitdescmoddir}/GetGitRevisionDescription.cmake.in"
|
||||||
|
"${GIT_DATA}/grabRef.cmake" @ONLY)
|
||||||
|
include("${GIT_DATA}/grabRef.cmake")
|
||||||
|
|
||||||
|
set(${_refspecvar}
|
||||||
|
"${HEAD_REF}"
|
||||||
|
PARENT_SCOPE)
|
||||||
|
set(${_hashvar}
|
||||||
|
"${HEAD_HASH}"
|
||||||
|
PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(etl_git_describe _var)
|
||||||
|
if(NOT GIT_FOUND)
|
||||||
|
find_package(Git QUIET)
|
||||||
|
endif()
|
||||||
|
etl_get_git_head_revision(refspec hash ${ARGN})
|
||||||
|
if(NOT GIT_FOUND)
|
||||||
|
set(${_var}
|
||||||
|
"GIT-NOTFOUND"
|
||||||
|
PARENT_SCOPE)
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
if(NOT hash)
|
||||||
|
set(${_var}
|
||||||
|
"HEAD-HASH-NOTFOUND"
|
||||||
|
PARENT_SCOPE)
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# TODO sanitize
|
||||||
|
#if((${ARGN}" MATCHES "&&") OR
|
||||||
|
# (ARGN MATCHES "||") OR
|
||||||
|
# (ARGN MATCHES "\\;"))
|
||||||
|
# message("Please report the following error to the project!")
|
||||||
|
# message(FATAL_ERROR "Looks like someone's doing something nefarious with git_describe! Passed arguments ${ARGN}")
|
||||||
|
#endif()
|
||||||
|
|
||||||
|
#message(STATUS "Arguments to execute_process: ${ARGN}")
|
||||||
|
|
||||||
|
execute_process(
|
||||||
|
COMMAND "${GIT_EXECUTABLE}" describe --tags --always ${hash} ${ARGN}
|
||||||
|
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
||||||
|
RESULT_VARIABLE res
|
||||||
|
OUTPUT_VARIABLE out
|
||||||
|
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
if(NOT res EQUAL 0)
|
||||||
|
set(out "${out}-${res}-NOTFOUND")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(${_var}
|
||||||
|
"${out}"
|
||||||
|
PARENT_SCOPE)
|
||||||
|
endfunction()
|
43
components/etl/cmake/GetGitRevisionDescription.cmake.in
Normal file
43
components/etl/cmake/GetGitRevisionDescription.cmake.in
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
#
|
||||||
|
# Internal file for GetGitRevisionDescription.cmake
|
||||||
|
#
|
||||||
|
# Requires CMake 2.6 or newer (uses the 'function' command)
|
||||||
|
#
|
||||||
|
# Original Author:
|
||||||
|
# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
|
||||||
|
# http://academic.cleardefinition.com
|
||||||
|
# Iowa State University HCI Graduate Program/VRAC
|
||||||
|
#
|
||||||
|
# Copyright 2009-2012, Iowa State University
|
||||||
|
# Copyright 2011-2015, Contributors
|
||||||
|
# Distributed under the Boost Software License, Version 1.0.
|
||||||
|
# (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
|
# http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
# SPDX-License-Identifier: BSL-1.0
|
||||||
|
|
||||||
|
set(HEAD_HASH)
|
||||||
|
|
||||||
|
file(READ "@HEAD_FILE@" HEAD_CONTENTS LIMIT 1024)
|
||||||
|
|
||||||
|
string(STRIP "${HEAD_CONTENTS}" HEAD_CONTENTS)
|
||||||
|
if(HEAD_CONTENTS MATCHES "ref")
|
||||||
|
# named branch
|
||||||
|
string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}")
|
||||||
|
if(EXISTS "@GIT_DIR@/${HEAD_REF}")
|
||||||
|
configure_file("@GIT_DIR@/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY)
|
||||||
|
else()
|
||||||
|
configure_file("@GIT_DIR@/packed-refs" "@GIT_DATA@/packed-refs" COPYONLY)
|
||||||
|
file(READ "@GIT_DATA@/packed-refs" PACKED_REFS)
|
||||||
|
if(${PACKED_REFS} MATCHES "([0-9a-z]*) ${HEAD_REF}")
|
||||||
|
set(HEAD_HASH "${CMAKE_MATCH_1}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
# detached HEAD
|
||||||
|
configure_file("@GIT_DIR@/HEAD" "@GIT_DATA@/head-ref" COPYONLY)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT HEAD_HASH)
|
||||||
|
file(READ "@GIT_DATA@/head-ref" HEAD_HASH LIMIT 1024)
|
||||||
|
string(STRIP "${HEAD_HASH}" HEAD_HASH)
|
||||||
|
endif()
|
4
components/etl/cmake/etlConfig.cmake.in
Normal file
4
components/etl/cmake/etlConfig.cmake.in
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
@PACKAGE_INIT@
|
||||||
|
|
||||||
|
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")
|
||||||
|
check_required_components("@PROJECT_NAME@")
|
35
components/etl/cmake/helpers.cmake
Normal file
35
components/etl/cmake/helpers.cmake
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
function(etl_determine_version_with_file VER_FILE_NAME)
|
||||||
|
file(READ ${VER_FILE_NAME} ETL_VERSION_RAW)
|
||||||
|
# Remove trailing whitespaces and/or newline
|
||||||
|
string(STRIP ${ETL_VERSION_RAW} ETL_VERSION)
|
||||||
|
set(ETL_VERSION ${ETL_VERSION} CACHE STRING
|
||||||
|
"ETL version determined from version.txt" FORCE
|
||||||
|
)
|
||||||
|
message(STATUS "${MSG_PREFIX} Determined ETL version ${ETL_VERSION} from version.txt file")
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(etl_determine_version_with_git)
|
||||||
|
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/GetGitRevisionDescription.cmake)
|
||||||
|
etl_git_describe(VERSION ${ARGN})
|
||||||
|
string(FIND ${VERSION} "." VALID_VERSION)
|
||||||
|
if(VALID_VERSION EQUAL -1)
|
||||||
|
if(CMAKE_CURRENT_LIST_DIR STREQUAL PROJECT_SOURCE_DIR)
|
||||||
|
# only warn if this is the top-level project, since we may be
|
||||||
|
# building from a tarball as a subproject
|
||||||
|
message(WARNING "Version string ${VERSION} retrieved with git describe is invalid")
|
||||||
|
endif()
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
message(STATUS "${MSG_PREFIX} Version string determined with git describe: ${VERSION}")
|
||||||
|
# Parse the version information into pieces.
|
||||||
|
string(REGEX REPLACE "^([0-9]+)\\..*" "\\1" VERSION_MAJOR "${VERSION}")
|
||||||
|
string(REGEX REPLACE "^[0-9]+\\.([0-9]+).*" "\\1" VERSION_MINOR "${VERSION}")
|
||||||
|
string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" VERSION_PATCH "${VERSION}")
|
||||||
|
string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.[0-9]+(.*)" "\\1" VERSION_SHA1 "${VERSION}")
|
||||||
|
set(ETL_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
|
||||||
|
|
||||||
|
set(ETL_VERSION ${ETL_VERSION} CACHE STRING
|
||||||
|
"ETL version determined with git describe" FORCE
|
||||||
|
)
|
||||||
|
message(STATUS "${MSG_PREFIX} Determined ETL version ${ETL_VERSION} from the git tag")
|
||||||
|
endfunction()
|
4
components/etl/examples/ArmTimerCallbacks - C++/.gitignore
vendored
Normal file
4
components/etl/examples/ArmTimerCallbacks - C++/.gitignore
vendored
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
Objects/
|
||||||
|
RTE/
|
||||||
|
Listings/
|
||||||
|
DebugConfig/
|
|
@ -0,0 +1,487 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||||
|
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
|
||||||
|
|
||||||
|
<SchemaVersion>2.1</SchemaVersion>
|
||||||
|
|
||||||
|
<Header>### uVision Project, (C) Keil Software</Header>
|
||||||
|
|
||||||
|
<Targets>
|
||||||
|
<Target>
|
||||||
|
<TargetName>Target 1</TargetName>
|
||||||
|
<ToolsetNumber>0x4</ToolsetNumber>
|
||||||
|
<ToolsetName>ARM-ADS</ToolsetName>
|
||||||
|
<pCCUsed>5060750::V5.06 update 6 (build 750)::.\ARMCC</pCCUsed>
|
||||||
|
<uAC6>0</uAC6>
|
||||||
|
<TargetOption>
|
||||||
|
<TargetCommonOption>
|
||||||
|
<Device>STM32F401RETx</Device>
|
||||||
|
<Vendor>STMicroelectronics</Vendor>
|
||||||
|
<PackID>Keil.STM32F4xx_DFP.2.15.0</PackID>
|
||||||
|
<PackURL>http://www.keil.com/pack/</PackURL>
|
||||||
|
<Cpu>IRAM(0x20000000,0x18000) IROM(0x08000000,0x80000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE</Cpu>
|
||||||
|
<FlashUtilSpec></FlashUtilSpec>
|
||||||
|
<StartupFile></StartupFile>
|
||||||
|
<FlashDriverDll>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_512 -FS08000000 -FL080000 -FP0($$Device:STM32F401RETx$CMSIS\Flash\STM32F4xx_512.FLM))</FlashDriverDll>
|
||||||
|
<DeviceId>0</DeviceId>
|
||||||
|
<RegisterFile>$$Device:STM32F401RETx$Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f4xx.h</RegisterFile>
|
||||||
|
<MemoryEnv></MemoryEnv>
|
||||||
|
<Cmp></Cmp>
|
||||||
|
<Asm></Asm>
|
||||||
|
<Linker></Linker>
|
||||||
|
<OHString></OHString>
|
||||||
|
<InfinionOptionDll></InfinionOptionDll>
|
||||||
|
<SLE66CMisc></SLE66CMisc>
|
||||||
|
<SLE66AMisc></SLE66AMisc>
|
||||||
|
<SLE66LinkerMisc></SLE66LinkerMisc>
|
||||||
|
<SFDFile>$$Device:STM32F401RETx$CMSIS\SVD\STM32F401xE.svd</SFDFile>
|
||||||
|
<bCustSvd>0</bCustSvd>
|
||||||
|
<UseEnv>0</UseEnv>
|
||||||
|
<BinPath></BinPath>
|
||||||
|
<IncludePath></IncludePath>
|
||||||
|
<LibPath></LibPath>
|
||||||
|
<RegisterFilePath></RegisterFilePath>
|
||||||
|
<DBRegisterFilePath></DBRegisterFilePath>
|
||||||
|
<TargetStatus>
|
||||||
|
<Error>0</Error>
|
||||||
|
<ExitCodeStop>0</ExitCodeStop>
|
||||||
|
<ButtonStop>0</ButtonStop>
|
||||||
|
<NotGenerated>0</NotGenerated>
|
||||||
|
<InvalidFlash>1</InvalidFlash>
|
||||||
|
</TargetStatus>
|
||||||
|
<OutputDirectory>.\Objects\</OutputDirectory>
|
||||||
|
<OutputName>ArmTimerCallbacks</OutputName>
|
||||||
|
<CreateExecutable>1</CreateExecutable>
|
||||||
|
<CreateLib>0</CreateLib>
|
||||||
|
<CreateHexFile>0</CreateHexFile>
|
||||||
|
<DebugInformation>1</DebugInformation>
|
||||||
|
<BrowseInformation>1</BrowseInformation>
|
||||||
|
<ListingPath>.\Listings\</ListingPath>
|
||||||
|
<HexFormatSelection>1</HexFormatSelection>
|
||||||
|
<Merge32K>0</Merge32K>
|
||||||
|
<CreateBatchFile>0</CreateBatchFile>
|
||||||
|
<BeforeCompile>
|
||||||
|
<RunUserProg1>0</RunUserProg1>
|
||||||
|
<RunUserProg2>0</RunUserProg2>
|
||||||
|
<UserProg1Name></UserProg1Name>
|
||||||
|
<UserProg2Name></UserProg2Name>
|
||||||
|
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||||
|
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||||
|
<nStopU1X>0</nStopU1X>
|
||||||
|
<nStopU2X>0</nStopU2X>
|
||||||
|
</BeforeCompile>
|
||||||
|
<BeforeMake>
|
||||||
|
<RunUserProg1>0</RunUserProg1>
|
||||||
|
<RunUserProg2>0</RunUserProg2>
|
||||||
|
<UserProg1Name></UserProg1Name>
|
||||||
|
<UserProg2Name></UserProg2Name>
|
||||||
|
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||||
|
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||||
|
<nStopB1X>0</nStopB1X>
|
||||||
|
<nStopB2X>0</nStopB2X>
|
||||||
|
</BeforeMake>
|
||||||
|
<AfterMake>
|
||||||
|
<RunUserProg1>0</RunUserProg1>
|
||||||
|
<RunUserProg2>0</RunUserProg2>
|
||||||
|
<UserProg1Name></UserProg1Name>
|
||||||
|
<UserProg2Name></UserProg2Name>
|
||||||
|
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||||
|
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||||
|
<nStopA1X>0</nStopA1X>
|
||||||
|
<nStopA2X>0</nStopA2X>
|
||||||
|
</AfterMake>
|
||||||
|
<SelectedForBatchBuild>0</SelectedForBatchBuild>
|
||||||
|
<SVCSIdString></SVCSIdString>
|
||||||
|
</TargetCommonOption>
|
||||||
|
<CommonProperty>
|
||||||
|
<UseCPPCompiler>0</UseCPPCompiler>
|
||||||
|
<RVCTCodeConst>0</RVCTCodeConst>
|
||||||
|
<RVCTZI>0</RVCTZI>
|
||||||
|
<RVCTOtherData>0</RVCTOtherData>
|
||||||
|
<ModuleSelection>0</ModuleSelection>
|
||||||
|
<IncludeInBuild>1</IncludeInBuild>
|
||||||
|
<AlwaysBuild>0</AlwaysBuild>
|
||||||
|
<GenerateAssemblyFile>0</GenerateAssemblyFile>
|
||||||
|
<AssembleAssemblyFile>0</AssembleAssemblyFile>
|
||||||
|
<PublicsOnly>0</PublicsOnly>
|
||||||
|
<StopOnExitCode>3</StopOnExitCode>
|
||||||
|
<CustomArgument></CustomArgument>
|
||||||
|
<IncludeLibraryModules></IncludeLibraryModules>
|
||||||
|
<ComprImg>1</ComprImg>
|
||||||
|
</CommonProperty>
|
||||||
|
<DllOption>
|
||||||
|
<SimDllName>SARMCM3.DLL</SimDllName>
|
||||||
|
<SimDllArguments> -REMAP -MPU</SimDllArguments>
|
||||||
|
<SimDlgDll>DCM.DLL</SimDlgDll>
|
||||||
|
<SimDlgDllArguments>-pCM4</SimDlgDllArguments>
|
||||||
|
<TargetDllName>SARMCM3.DLL</TargetDllName>
|
||||||
|
<TargetDllArguments> -MPU</TargetDllArguments>
|
||||||
|
<TargetDlgDll>TCM.DLL</TargetDlgDll>
|
||||||
|
<TargetDlgDllArguments>-pCM4</TargetDlgDllArguments>
|
||||||
|
</DllOption>
|
||||||
|
<DebugOption>
|
||||||
|
<OPTHX>
|
||||||
|
<HexSelection>1</HexSelection>
|
||||||
|
<HexRangeLowAddress>0</HexRangeLowAddress>
|
||||||
|
<HexRangeHighAddress>0</HexRangeHighAddress>
|
||||||
|
<HexOffset>0</HexOffset>
|
||||||
|
<Oh166RecLen>16</Oh166RecLen>
|
||||||
|
</OPTHX>
|
||||||
|
</DebugOption>
|
||||||
|
<Utilities>
|
||||||
|
<Flash1>
|
||||||
|
<UseTargetDll>1</UseTargetDll>
|
||||||
|
<UseExternalTool>0</UseExternalTool>
|
||||||
|
<RunIndependent>0</RunIndependent>
|
||||||
|
<UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
|
||||||
|
<Capability>1</Capability>
|
||||||
|
<DriverSelection>4096</DriverSelection>
|
||||||
|
</Flash1>
|
||||||
|
<bUseTDR>1</bUseTDR>
|
||||||
|
<Flash2>BIN\UL2CM3.DLL</Flash2>
|
||||||
|
<Flash3>"" ()</Flash3>
|
||||||
|
<Flash4></Flash4>
|
||||||
|
<pFcarmOut></pFcarmOut>
|
||||||
|
<pFcarmGrp></pFcarmGrp>
|
||||||
|
<pFcArmRoot></pFcArmRoot>
|
||||||
|
<FcArmLst>0</FcArmLst>
|
||||||
|
</Utilities>
|
||||||
|
<TargetArmAds>
|
||||||
|
<ArmAdsMisc>
|
||||||
|
<GenerateListings>0</GenerateListings>
|
||||||
|
<asHll>1</asHll>
|
||||||
|
<asAsm>1</asAsm>
|
||||||
|
<asMacX>1</asMacX>
|
||||||
|
<asSyms>1</asSyms>
|
||||||
|
<asFals>1</asFals>
|
||||||
|
<asDbgD>1</asDbgD>
|
||||||
|
<asForm>1</asForm>
|
||||||
|
<ldLst>0</ldLst>
|
||||||
|
<ldmm>1</ldmm>
|
||||||
|
<ldXref>1</ldXref>
|
||||||
|
<BigEnd>0</BigEnd>
|
||||||
|
<AdsALst>1</AdsALst>
|
||||||
|
<AdsACrf>1</AdsACrf>
|
||||||
|
<AdsANop>0</AdsANop>
|
||||||
|
<AdsANot>0</AdsANot>
|
||||||
|
<AdsLLst>1</AdsLLst>
|
||||||
|
<AdsLmap>1</AdsLmap>
|
||||||
|
<AdsLcgr>1</AdsLcgr>
|
||||||
|
<AdsLsym>1</AdsLsym>
|
||||||
|
<AdsLszi>1</AdsLszi>
|
||||||
|
<AdsLtoi>1</AdsLtoi>
|
||||||
|
<AdsLsun>1</AdsLsun>
|
||||||
|
<AdsLven>1</AdsLven>
|
||||||
|
<AdsLsxf>1</AdsLsxf>
|
||||||
|
<RvctClst>0</RvctClst>
|
||||||
|
<GenPPlst>0</GenPPlst>
|
||||||
|
<AdsCpuType>"Cortex-M4"</AdsCpuType>
|
||||||
|
<RvctDeviceName></RvctDeviceName>
|
||||||
|
<mOS>0</mOS>
|
||||||
|
<uocRom>0</uocRom>
|
||||||
|
<uocRam>0</uocRam>
|
||||||
|
<hadIROM>1</hadIROM>
|
||||||
|
<hadIRAM>1</hadIRAM>
|
||||||
|
<hadXRAM>0</hadXRAM>
|
||||||
|
<uocXRam>0</uocXRam>
|
||||||
|
<RvdsVP>2</RvdsVP>
|
||||||
|
<RvdsMve>0</RvdsMve>
|
||||||
|
<RvdsCdeCp>0</RvdsCdeCp>
|
||||||
|
<hadIRAM2>0</hadIRAM2>
|
||||||
|
<hadIROM2>0</hadIROM2>
|
||||||
|
<StupSel>8</StupSel>
|
||||||
|
<useUlib>0</useUlib>
|
||||||
|
<EndSel>0</EndSel>
|
||||||
|
<uLtcg>0</uLtcg>
|
||||||
|
<nSecure>0</nSecure>
|
||||||
|
<RoSelD>3</RoSelD>
|
||||||
|
<RwSelD>3</RwSelD>
|
||||||
|
<CodeSel>0</CodeSel>
|
||||||
|
<OptFeed>0</OptFeed>
|
||||||
|
<NoZi1>0</NoZi1>
|
||||||
|
<NoZi2>0</NoZi2>
|
||||||
|
<NoZi3>0</NoZi3>
|
||||||
|
<NoZi4>0</NoZi4>
|
||||||
|
<NoZi5>0</NoZi5>
|
||||||
|
<Ro1Chk>0</Ro1Chk>
|
||||||
|
<Ro2Chk>0</Ro2Chk>
|
||||||
|
<Ro3Chk>0</Ro3Chk>
|
||||||
|
<Ir1Chk>1</Ir1Chk>
|
||||||
|
<Ir2Chk>0</Ir2Chk>
|
||||||
|
<Ra1Chk>0</Ra1Chk>
|
||||||
|
<Ra2Chk>0</Ra2Chk>
|
||||||
|
<Ra3Chk>0</Ra3Chk>
|
||||||
|
<Im1Chk>1</Im1Chk>
|
||||||
|
<Im2Chk>0</Im2Chk>
|
||||||
|
<OnChipMemories>
|
||||||
|
<Ocm1>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</Ocm1>
|
||||||
|
<Ocm2>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</Ocm2>
|
||||||
|
<Ocm3>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</Ocm3>
|
||||||
|
<Ocm4>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</Ocm4>
|
||||||
|
<Ocm5>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</Ocm5>
|
||||||
|
<Ocm6>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</Ocm6>
|
||||||
|
<IRAM>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x20000000</StartAddress>
|
||||||
|
<Size>0x18000</Size>
|
||||||
|
</IRAM>
|
||||||
|
<IROM>
|
||||||
|
<Type>1</Type>
|
||||||
|
<StartAddress>0x8000000</StartAddress>
|
||||||
|
<Size>0x80000</Size>
|
||||||
|
</IROM>
|
||||||
|
<XRAM>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</XRAM>
|
||||||
|
<OCR_RVCT1>
|
||||||
|
<Type>1</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</OCR_RVCT1>
|
||||||
|
<OCR_RVCT2>
|
||||||
|
<Type>1</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</OCR_RVCT2>
|
||||||
|
<OCR_RVCT3>
|
||||||
|
<Type>1</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</OCR_RVCT3>
|
||||||
|
<OCR_RVCT4>
|
||||||
|
<Type>1</Type>
|
||||||
|
<StartAddress>0x8000000</StartAddress>
|
||||||
|
<Size>0x80000</Size>
|
||||||
|
</OCR_RVCT4>
|
||||||
|
<OCR_RVCT5>
|
||||||
|
<Type>1</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</OCR_RVCT5>
|
||||||
|
<OCR_RVCT6>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</OCR_RVCT6>
|
||||||
|
<OCR_RVCT7>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</OCR_RVCT7>
|
||||||
|
<OCR_RVCT8>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</OCR_RVCT8>
|
||||||
|
<OCR_RVCT9>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x20000000</StartAddress>
|
||||||
|
<Size>0x18000</Size>
|
||||||
|
</OCR_RVCT9>
|
||||||
|
<OCR_RVCT10>
|
||||||
|
<Type>0</Type>
|
||||||
|
<StartAddress>0x0</StartAddress>
|
||||||
|
<Size>0x0</Size>
|
||||||
|
</OCR_RVCT10>
|
||||||
|
</OnChipMemories>
|
||||||
|
<RvctStartVector></RvctStartVector>
|
||||||
|
</ArmAdsMisc>
|
||||||
|
<Cads>
|
||||||
|
<interw>1</interw>
|
||||||
|
<Optim>1</Optim>
|
||||||
|
<oTime>0</oTime>
|
||||||
|
<SplitLS>0</SplitLS>
|
||||||
|
<OneElfS>1</OneElfS>
|
||||||
|
<Strict>0</Strict>
|
||||||
|
<EnumInt>0</EnumInt>
|
||||||
|
<PlainCh>1</PlainCh>
|
||||||
|
<Ropi>0</Ropi>
|
||||||
|
<Rwpi>0</Rwpi>
|
||||||
|
<wLevel>2</wLevel>
|
||||||
|
<uThumb>0</uThumb>
|
||||||
|
<uSurpInc>0</uSurpInc>
|
||||||
|
<uC99>1</uC99>
|
||||||
|
<uGnu>0</uGnu>
|
||||||
|
<useXO>0</useXO>
|
||||||
|
<v6Lang>3</v6Lang>
|
||||||
|
<v6LangP>3</v6LangP>
|
||||||
|
<vShortEn>1</vShortEn>
|
||||||
|
<vShortWch>1</vShortWch>
|
||||||
|
<v6Lto>0</v6Lto>
|
||||||
|
<v6WtE>0</v6WtE>
|
||||||
|
<v6Rtti>0</v6Rtti>
|
||||||
|
<VariousControls>
|
||||||
|
<MiscControls></MiscControls>
|
||||||
|
<Define>__STDC_LIMIT_MACROS</Define>
|
||||||
|
<Undefine></Undefine>
|
||||||
|
<IncludePath>..\..\include;..\ArmTimerCallbacks - C++</IncludePath>
|
||||||
|
</VariousControls>
|
||||||
|
</Cads>
|
||||||
|
<Aads>
|
||||||
|
<interw>1</interw>
|
||||||
|
<Ropi>0</Ropi>
|
||||||
|
<Rwpi>0</Rwpi>
|
||||||
|
<thumb>0</thumb>
|
||||||
|
<SplitLS>0</SplitLS>
|
||||||
|
<SwStkChk>0</SwStkChk>
|
||||||
|
<NoWarn>0</NoWarn>
|
||||||
|
<uSurpInc>0</uSurpInc>
|
||||||
|
<useXO>0</useXO>
|
||||||
|
<ClangAsOpt>4</ClangAsOpt>
|
||||||
|
<VariousControls>
|
||||||
|
<MiscControls></MiscControls>
|
||||||
|
<Define></Define>
|
||||||
|
<Undefine></Undefine>
|
||||||
|
<IncludePath></IncludePath>
|
||||||
|
</VariousControls>
|
||||||
|
</Aads>
|
||||||
|
<LDads>
|
||||||
|
<umfTarg>0</umfTarg>
|
||||||
|
<Ropi>0</Ropi>
|
||||||
|
<Rwpi>0</Rwpi>
|
||||||
|
<noStLib>0</noStLib>
|
||||||
|
<RepFail>1</RepFail>
|
||||||
|
<useFile>0</useFile>
|
||||||
|
<TextAddressRange>0x08000000</TextAddressRange>
|
||||||
|
<DataAddressRange>0x20000000</DataAddressRange>
|
||||||
|
<pXoBase></pXoBase>
|
||||||
|
<ScatterFile></ScatterFile>
|
||||||
|
<IncludeLibs></IncludeLibs>
|
||||||
|
<IncludeLibsPath></IncludeLibsPath>
|
||||||
|
<Misc></Misc>
|
||||||
|
<LinkerInputFile></LinkerInputFile>
|
||||||
|
<DisabledWarnings></DisabledWarnings>
|
||||||
|
</LDads>
|
||||||
|
</TargetArmAds>
|
||||||
|
</TargetOption>
|
||||||
|
<Groups>
|
||||||
|
<Group>
|
||||||
|
<GroupName>Source Group 1</GroupName>
|
||||||
|
<Files>
|
||||||
|
<File>
|
||||||
|
<FileName>main.cpp</FileName>
|
||||||
|
<FileType>8</FileType>
|
||||||
|
<FilePath>.\main.cpp</FilePath>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>etl_profile.h</FileName>
|
||||||
|
<FileType>5</FileType>
|
||||||
|
<FilePath>.\etl_profile.h</FilePath>
|
||||||
|
</File>
|
||||||
|
</Files>
|
||||||
|
</Group>
|
||||||
|
<Group>
|
||||||
|
<GroupName>::Board Support</GroupName>
|
||||||
|
</Group>
|
||||||
|
<Group>
|
||||||
|
<GroupName>::CMSIS</GroupName>
|
||||||
|
</Group>
|
||||||
|
<Group>
|
||||||
|
<GroupName>::Device</GroupName>
|
||||||
|
</Group>
|
||||||
|
</Groups>
|
||||||
|
</Target>
|
||||||
|
</Targets>
|
||||||
|
|
||||||
|
<RTE>
|
||||||
|
<apis>
|
||||||
|
<api Capiversion="1.0.0" Cclass="Board Support" Cgroup="Buttons" exclusive="0">
|
||||||
|
<package name="MDK-Middleware" schemaVersion="1.4" url="http://www.keil.com/pack/" vendor="Keil" version="7.4.1"/>
|
||||||
|
<targetInfos>
|
||||||
|
<targetInfo name="Target 1"/>
|
||||||
|
</targetInfos>
|
||||||
|
</api>
|
||||||
|
<api Capiversion="1.0.0" Cclass="Board Support" Cgroup="LED" exclusive="0">
|
||||||
|
<package name="MDK-Middleware" schemaVersion="1.4" url="http://www.keil.com/pack/" vendor="Keil" version="7.4.1"/>
|
||||||
|
<targetInfos>
|
||||||
|
<targetInfo name="Target 1"/>
|
||||||
|
</targetInfos>
|
||||||
|
</api>
|
||||||
|
</apis>
|
||||||
|
<components>
|
||||||
|
<component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM" Cversion="5.4.0" condition="ARMv6_7_8-M Device">
|
||||||
|
<package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="5.7.0"/>
|
||||||
|
<targetInfos>
|
||||||
|
<targetInfo name="Target 1"/>
|
||||||
|
</targetInfos>
|
||||||
|
</component>
|
||||||
|
<component Capiversion="1.00" Cbundle="NUCLEO-F401RE" Cclass="Board Support" Cgroup="Buttons" Cvendor="Keil" Cversion="1.1.0" condition="F401RE CMSIS Device">
|
||||||
|
<package name="STM32NUCLEO_BSP" schemaVersion="1.2" url="http://www.keil.com/pack/" vendor="Keil" version="1.6.0"/>
|
||||||
|
<targetInfos>
|
||||||
|
<targetInfo name="Target 1"/>
|
||||||
|
</targetInfos>
|
||||||
|
</component>
|
||||||
|
<component Capiversion="1.00" Cbundle="NUCLEO-F401RE" Cclass="Board Support" Cgroup="LED" Cvendor="Keil" Cversion="1.1.0" condition="F401RE CMSIS Device">
|
||||||
|
<package name="STM32NUCLEO_BSP" schemaVersion="1.2" url="http://www.keil.com/pack/" vendor="Keil" version="1.6.0"/>
|
||||||
|
<targetInfos>
|
||||||
|
<targetInfo name="Target 1"/>
|
||||||
|
</targetInfos>
|
||||||
|
</component>
|
||||||
|
<component Cclass="Device" Cgroup="Startup" Cvendor="Keil" Cversion="2.6.3" condition="STM32F4 CMSIS">
|
||||||
|
<package name="STM32F4xx_DFP" schemaVersion="1.6.3" url="http://www.keil.com/pack/" vendor="Keil" version="2.15.0"/>
|
||||||
|
<targetInfos>
|
||||||
|
<targetInfo name="Target 1"/>
|
||||||
|
</targetInfos>
|
||||||
|
</component>
|
||||||
|
</components>
|
||||||
|
<files>
|
||||||
|
<file attr="config" category="source" condition="STM32F401xE_ARMCC" name="Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f401xe.s" version="2.6.0">
|
||||||
|
<instance index="0">RTE\Device\STM32F401RETx\startup_stm32f401xe.s</instance>
|
||||||
|
<component Cclass="Device" Cgroup="Startup" Cvendor="Keil" Cversion="2.6.3" condition="STM32F4 CMSIS"/>
|
||||||
|
<package name="STM32F4xx_DFP" schemaVersion="1.6.3" url="http://www.keil.com/pack/" vendor="Keil" version="2.15.0"/>
|
||||||
|
<targetInfos>
|
||||||
|
<targetInfo name="Target 1"/>
|
||||||
|
</targetInfos>
|
||||||
|
</file>
|
||||||
|
<file attr="config" category="source" name="Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c" version="2.6.0">
|
||||||
|
<instance index="0">RTE\Device\STM32F401RETx\system_stm32f4xx.c</instance>
|
||||||
|
<component Cclass="Device" Cgroup="Startup" Cvendor="Keil" Cversion="2.6.3" condition="STM32F4 CMSIS"/>
|
||||||
|
<package name="STM32F4xx_DFP" schemaVersion="1.6.3" url="http://www.keil.com/pack/" vendor="Keil" version="2.15.0"/>
|
||||||
|
<targetInfos>
|
||||||
|
<targetInfo name="Target 1"/>
|
||||||
|
</targetInfos>
|
||||||
|
</file>
|
||||||
|
</files>
|
||||||
|
</RTE>
|
||||||
|
|
||||||
|
<LayerInfo>
|
||||||
|
<Layers>
|
||||||
|
<Layer>
|
||||||
|
<LayName><Project Info></LayName>
|
||||||
|
<LayDesc></LayDesc>
|
||||||
|
<LayUrl></LayUrl>
|
||||||
|
<LayKeys></LayKeys>
|
||||||
|
<LayCat></LayCat>
|
||||||
|
<LayLic></LayLic>
|
||||||
|
<LayTarg>0</LayTarg>
|
||||||
|
<LayPrjMark>1</LayPrjMark>
|
||||||
|
</Layer>
|
||||||
|
</Layers>
|
||||||
|
</LayerInfo>
|
||||||
|
|
||||||
|
</Project>
|
|
@ -0,0 +1,392 @@
|
||||||
|
;******************** (C) COPYRIGHT 2016 STMicroelectronics ********************
|
||||||
|
;* File Name : startup_stm32f401xe.s
|
||||||
|
;* Author : MCD Application Team
|
||||||
|
;* Version : V2.6.0
|
||||||
|
;* Date : 04-November-2016
|
||||||
|
;* Description : STM32F401xe devices vector table for MDK-ARM toolchain.
|
||||||
|
;* This module performs:
|
||||||
|
;* - Set the initial SP
|
||||||
|
;* - Set the initial PC == Reset_Handler
|
||||||
|
;* - Set the vector table entries with the exceptions ISR address
|
||||||
|
;* - Branches to __main in the C library (which eventually
|
||||||
|
;* calls main()).
|
||||||
|
;* After Reset the CortexM4 processor is in Thread mode,
|
||||||
|
;* priority is Privileged, and the Stack is set to Main.
|
||||||
|
;* <<< Use Configuration Wizard in Context Menu >>>
|
||||||
|
;*******************************************************************************
|
||||||
|
;
|
||||||
|
;* 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. Neither the name of STMicroelectronics nor the names of its contributors
|
||||||
|
;* may 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 HOLDER 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.
|
||||||
|
;
|
||||||
|
;*******************************************************************************
|
||||||
|
|
||||||
|
; Amount of memory (in bytes) allocated for Stack
|
||||||
|
; Tailor this value to your application needs
|
||||||
|
; <h> Stack Configuration
|
||||||
|
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||||
|
; </h>
|
||||||
|
|
||||||
|
Stack_Size EQU 0x00000400
|
||||||
|
|
||||||
|
AREA STACK, NOINIT, READWRITE, ALIGN=3
|
||||||
|
Stack_Mem SPACE Stack_Size
|
||||||
|
__initial_sp
|
||||||
|
|
||||||
|
|
||||||
|
; <h> Heap Configuration
|
||||||
|
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||||
|
; </h>
|
||||||
|
|
||||||
|
Heap_Size EQU 0x00000200
|
||||||
|
|
||||||
|
AREA HEAP, NOINIT, READWRITE, ALIGN=3
|
||||||
|
__heap_base
|
||||||
|
Heap_Mem SPACE Heap_Size
|
||||||
|
__heap_limit
|
||||||
|
|
||||||
|
PRESERVE8
|
||||||
|
THUMB
|
||||||
|
|
||||||
|
|
||||||
|
; Vector Table Mapped to Address 0 at Reset
|
||||||
|
AREA RESET, DATA, READONLY
|
||||||
|
EXPORT __Vectors
|
||||||
|
EXPORT __Vectors_End
|
||||||
|
EXPORT __Vectors_Size
|
||||||
|
|
||||||
|
__Vectors DCD __initial_sp ; Top of Stack
|
||||||
|
DCD Reset_Handler ; Reset Handler
|
||||||
|
DCD NMI_Handler ; NMI Handler
|
||||||
|
DCD HardFault_Handler ; Hard Fault Handler
|
||||||
|
DCD MemManage_Handler ; MPU Fault Handler
|
||||||
|
DCD BusFault_Handler ; Bus Fault Handler
|
||||||
|
DCD UsageFault_Handler ; Usage Fault Handler
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD SVC_Handler ; SVCall Handler
|
||||||
|
DCD DebugMon_Handler ; Debug Monitor Handler
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD PendSV_Handler ; PendSV Handler
|
||||||
|
DCD SysTick_Handler ; SysTick Handler
|
||||||
|
|
||||||
|
; External Interrupts
|
||||||
|
DCD WWDG_IRQHandler ; Window WatchDog
|
||||||
|
DCD PVD_IRQHandler ; PVD through EXTI Line detection
|
||||||
|
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line
|
||||||
|
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line
|
||||||
|
DCD FLASH_IRQHandler ; FLASH
|
||||||
|
DCD RCC_IRQHandler ; RCC
|
||||||
|
DCD EXTI0_IRQHandler ; EXTI Line0
|
||||||
|
DCD EXTI1_IRQHandler ; EXTI Line1
|
||||||
|
DCD EXTI2_IRQHandler ; EXTI Line2
|
||||||
|
DCD EXTI3_IRQHandler ; EXTI Line3
|
||||||
|
DCD EXTI4_IRQHandler ; EXTI Line4
|
||||||
|
DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0
|
||||||
|
DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1
|
||||||
|
DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2
|
||||||
|
DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3
|
||||||
|
DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4
|
||||||
|
DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5
|
||||||
|
DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6
|
||||||
|
DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD EXTI9_5_IRQHandler ; External Line[9:5]s
|
||||||
|
DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9
|
||||||
|
DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10
|
||||||
|
DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11
|
||||||
|
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare
|
||||||
|
DCD TIM2_IRQHandler ; TIM2
|
||||||
|
DCD TIM3_IRQHandler ; TIM3
|
||||||
|
DCD TIM4_IRQHandler ; TIM4
|
||||||
|
DCD I2C1_EV_IRQHandler ; I2C1 Event
|
||||||
|
DCD I2C1_ER_IRQHandler ; I2C1 Error
|
||||||
|
DCD I2C2_EV_IRQHandler ; I2C2 Event
|
||||||
|
DCD I2C2_ER_IRQHandler ; I2C2 Error
|
||||||
|
DCD SPI1_IRQHandler ; SPI1
|
||||||
|
DCD SPI2_IRQHandler ; SPI2
|
||||||
|
DCD USART1_IRQHandler ; USART1
|
||||||
|
DCD USART2_IRQHandler ; USART2
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD EXTI15_10_IRQHandler ; External Line[15:10]s
|
||||||
|
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line
|
||||||
|
DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD SDIO_IRQHandler ; SDIO
|
||||||
|
DCD TIM5_IRQHandler ; TIM5
|
||||||
|
DCD SPI3_IRQHandler ; SPI3
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0
|
||||||
|
DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1
|
||||||
|
DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2
|
||||||
|
DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3
|
||||||
|
DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD OTG_FS_IRQHandler ; USB OTG FS
|
||||||
|
DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5
|
||||||
|
DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6
|
||||||
|
DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7
|
||||||
|
DCD USART6_IRQHandler ; USART6
|
||||||
|
DCD I2C3_EV_IRQHandler ; I2C3 event
|
||||||
|
DCD I2C3_ER_IRQHandler ; I2C3 error
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD FPU_IRQHandler ; FPU
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD SPI4_IRQHandler ; SPI4
|
||||||
|
|
||||||
|
__Vectors_End
|
||||||
|
|
||||||
|
__Vectors_Size EQU __Vectors_End - __Vectors
|
||||||
|
|
||||||
|
AREA |.text|, CODE, READONLY
|
||||||
|
|
||||||
|
; Reset handler
|
||||||
|
Reset_Handler PROC
|
||||||
|
EXPORT Reset_Handler [WEAK]
|
||||||
|
IMPORT SystemInit
|
||||||
|
IMPORT __main
|
||||||
|
|
||||||
|
LDR R0, =SystemInit
|
||||||
|
BLX R0
|
||||||
|
LDR R0, =__main
|
||||||
|
BX R0
|
||||||
|
ENDP
|
||||||
|
|
||||||
|
; Dummy Exception Handlers (infinite loops which can be modified)
|
||||||
|
|
||||||
|
NMI_Handler PROC
|
||||||
|
EXPORT NMI_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
HardFault_Handler\
|
||||||
|
PROC
|
||||||
|
EXPORT HardFault_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
MemManage_Handler\
|
||||||
|
PROC
|
||||||
|
EXPORT MemManage_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
BusFault_Handler\
|
||||||
|
PROC
|
||||||
|
EXPORT BusFault_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
UsageFault_Handler\
|
||||||
|
PROC
|
||||||
|
EXPORT UsageFault_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
SVC_Handler PROC
|
||||||
|
EXPORT SVC_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
DebugMon_Handler\
|
||||||
|
PROC
|
||||||
|
EXPORT DebugMon_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
PendSV_Handler PROC
|
||||||
|
EXPORT PendSV_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
SysTick_Handler PROC
|
||||||
|
EXPORT SysTick_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
|
||||||
|
Default_Handler PROC
|
||||||
|
|
||||||
|
EXPORT WWDG_IRQHandler [WEAK]
|
||||||
|
EXPORT PVD_IRQHandler [WEAK]
|
||||||
|
EXPORT TAMP_STAMP_IRQHandler [WEAK]
|
||||||
|
EXPORT RTC_WKUP_IRQHandler [WEAK]
|
||||||
|
EXPORT FLASH_IRQHandler [WEAK]
|
||||||
|
EXPORT RCC_IRQHandler [WEAK]
|
||||||
|
EXPORT EXTI0_IRQHandler [WEAK]
|
||||||
|
EXPORT EXTI1_IRQHandler [WEAK]
|
||||||
|
EXPORT EXTI2_IRQHandler [WEAK]
|
||||||
|
EXPORT EXTI3_IRQHandler [WEAK]
|
||||||
|
EXPORT EXTI4_IRQHandler [WEAK]
|
||||||
|
EXPORT DMA1_Stream0_IRQHandler [WEAK]
|
||||||
|
EXPORT DMA1_Stream1_IRQHandler [WEAK]
|
||||||
|
EXPORT DMA1_Stream2_IRQHandler [WEAK]
|
||||||
|
EXPORT DMA1_Stream3_IRQHandler [WEAK]
|
||||||
|
EXPORT DMA1_Stream4_IRQHandler [WEAK]
|
||||||
|
EXPORT DMA1_Stream5_IRQHandler [WEAK]
|
||||||
|
EXPORT DMA1_Stream6_IRQHandler [WEAK]
|
||||||
|
EXPORT ADC_IRQHandler [WEAK]
|
||||||
|
EXPORT EXTI9_5_IRQHandler [WEAK]
|
||||||
|
EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK]
|
||||||
|
EXPORT TIM1_UP_TIM10_IRQHandler [WEAK]
|
||||||
|
EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK]
|
||||||
|
EXPORT TIM1_CC_IRQHandler [WEAK]
|
||||||
|
EXPORT TIM2_IRQHandler [WEAK]
|
||||||
|
EXPORT TIM3_IRQHandler [WEAK]
|
||||||
|
EXPORT TIM4_IRQHandler [WEAK]
|
||||||
|
EXPORT I2C1_EV_IRQHandler [WEAK]
|
||||||
|
EXPORT I2C1_ER_IRQHandler [WEAK]
|
||||||
|
EXPORT I2C2_EV_IRQHandler [WEAK]
|
||||||
|
EXPORT I2C2_ER_IRQHandler [WEAK]
|
||||||
|
EXPORT SPI1_IRQHandler [WEAK]
|
||||||
|
EXPORT SPI2_IRQHandler [WEAK]
|
||||||
|
EXPORT USART1_IRQHandler [WEAK]
|
||||||
|
EXPORT USART2_IRQHandler [WEAK]
|
||||||
|
EXPORT EXTI15_10_IRQHandler [WEAK]
|
||||||
|
EXPORT RTC_Alarm_IRQHandler [WEAK]
|
||||||
|
EXPORT OTG_FS_WKUP_IRQHandler [WEAK]
|
||||||
|
EXPORT DMA1_Stream7_IRQHandler [WEAK]
|
||||||
|
EXPORT SDIO_IRQHandler [WEAK]
|
||||||
|
EXPORT TIM5_IRQHandler [WEAK]
|
||||||
|
EXPORT SPI3_IRQHandler [WEAK]
|
||||||
|
EXPORT DMA2_Stream0_IRQHandler [WEAK]
|
||||||
|
EXPORT DMA2_Stream1_IRQHandler [WEAK]
|
||||||
|
EXPORT DMA2_Stream2_IRQHandler [WEAK]
|
||||||
|
EXPORT DMA2_Stream3_IRQHandler [WEAK]
|
||||||
|
EXPORT DMA2_Stream4_IRQHandler [WEAK]
|
||||||
|
EXPORT OTG_FS_IRQHandler [WEAK]
|
||||||
|
EXPORT DMA2_Stream5_IRQHandler [WEAK]
|
||||||
|
EXPORT DMA2_Stream6_IRQHandler [WEAK]
|
||||||
|
EXPORT DMA2_Stream7_IRQHandler [WEAK]
|
||||||
|
EXPORT USART6_IRQHandler [WEAK]
|
||||||
|
EXPORT I2C3_EV_IRQHandler [WEAK]
|
||||||
|
EXPORT I2C3_ER_IRQHandler [WEAK]
|
||||||
|
EXPORT FPU_IRQHandler [WEAK]
|
||||||
|
EXPORT SPI4_IRQHandler [WEAK]
|
||||||
|
|
||||||
|
WWDG_IRQHandler
|
||||||
|
PVD_IRQHandler
|
||||||
|
TAMP_STAMP_IRQHandler
|
||||||
|
RTC_WKUP_IRQHandler
|
||||||
|
FLASH_IRQHandler
|
||||||
|
RCC_IRQHandler
|
||||||
|
EXTI0_IRQHandler
|
||||||
|
EXTI1_IRQHandler
|
||||||
|
EXTI2_IRQHandler
|
||||||
|
EXTI3_IRQHandler
|
||||||
|
EXTI4_IRQHandler
|
||||||
|
DMA1_Stream0_IRQHandler
|
||||||
|
DMA1_Stream1_IRQHandler
|
||||||
|
DMA1_Stream2_IRQHandler
|
||||||
|
DMA1_Stream3_IRQHandler
|
||||||
|
DMA1_Stream4_IRQHandler
|
||||||
|
DMA1_Stream5_IRQHandler
|
||||||
|
DMA1_Stream6_IRQHandler
|
||||||
|
ADC_IRQHandler
|
||||||
|
EXTI9_5_IRQHandler
|
||||||
|
TIM1_BRK_TIM9_IRQHandler
|
||||||
|
TIM1_UP_TIM10_IRQHandler
|
||||||
|
TIM1_TRG_COM_TIM11_IRQHandler
|
||||||
|
TIM1_CC_IRQHandler
|
||||||
|
TIM2_IRQHandler
|
||||||
|
TIM3_IRQHandler
|
||||||
|
TIM4_IRQHandler
|
||||||
|
I2C1_EV_IRQHandler
|
||||||
|
I2C1_ER_IRQHandler
|
||||||
|
I2C2_EV_IRQHandler
|
||||||
|
I2C2_ER_IRQHandler
|
||||||
|
SPI1_IRQHandler
|
||||||
|
SPI2_IRQHandler
|
||||||
|
USART1_IRQHandler
|
||||||
|
USART2_IRQHandler
|
||||||
|
EXTI15_10_IRQHandler
|
||||||
|
RTC_Alarm_IRQHandler
|
||||||
|
OTG_FS_WKUP_IRQHandler
|
||||||
|
DMA1_Stream7_IRQHandler
|
||||||
|
SDIO_IRQHandler
|
||||||
|
TIM5_IRQHandler
|
||||||
|
SPI3_IRQHandler
|
||||||
|
DMA2_Stream0_IRQHandler
|
||||||
|
DMA2_Stream1_IRQHandler
|
||||||
|
DMA2_Stream2_IRQHandler
|
||||||
|
DMA2_Stream3_IRQHandler
|
||||||
|
DMA2_Stream4_IRQHandler
|
||||||
|
OTG_FS_IRQHandler
|
||||||
|
DMA2_Stream5_IRQHandler
|
||||||
|
DMA2_Stream6_IRQHandler
|
||||||
|
DMA2_Stream7_IRQHandler
|
||||||
|
USART6_IRQHandler
|
||||||
|
I2C3_EV_IRQHandler
|
||||||
|
I2C3_ER_IRQHandler
|
||||||
|
FPU_IRQHandler
|
||||||
|
SPI4_IRQHandler
|
||||||
|
|
||||||
|
B .
|
||||||
|
|
||||||
|
ENDP
|
||||||
|
|
||||||
|
ALIGN
|
||||||
|
|
||||||
|
;*******************************************************************************
|
||||||
|
; User Stack and Heap initialization
|
||||||
|
;*******************************************************************************
|
||||||
|
IF :DEF:__MICROLIB
|
||||||
|
|
||||||
|
EXPORT __initial_sp
|
||||||
|
EXPORT __heap_base
|
||||||
|
EXPORT __heap_limit
|
||||||
|
|
||||||
|
ELSE
|
||||||
|
|
||||||
|
IMPORT __use_two_region_memory
|
||||||
|
EXPORT __user_initial_stackheap
|
||||||
|
|
||||||
|
__user_initial_stackheap
|
||||||
|
|
||||||
|
LDR R0, = Heap_Mem
|
||||||
|
LDR R1, =(Stack_Mem + Stack_Size)
|
||||||
|
LDR R2, = (Heap_Mem + Heap_Size)
|
||||||
|
LDR R3, = Stack_Mem
|
||||||
|
BX LR
|
||||||
|
|
||||||
|
ALIGN
|
||||||
|
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
|
|
@ -0,0 +1,763 @@
|
||||||
|
/**
|
||||||
|
******************************************************************************
|
||||||
|
* @file system_stm32f4xx.c
|
||||||
|
* @author MCD Application Team
|
||||||
|
* @version V2.6.0
|
||||||
|
* @date 04-November-2016
|
||||||
|
* @brief CMSIS Cortex-M4 Device Peripheral Access Layer System Source File.
|
||||||
|
*
|
||||||
|
* This file provides two functions and one global variable to be called from
|
||||||
|
* user application:
|
||||||
|
* - SystemInit(): This function is called at startup just after reset and
|
||||||
|
* before branch to main program. This call is made inside
|
||||||
|
* the "startup_stm32f4xx.s" file.
|
||||||
|
*
|
||||||
|
* - SystemCoreClock variable: Contains the core clock (HCLK), it can be used
|
||||||
|
* by the user application to setup the SysTick
|
||||||
|
* timer or configure other parameters.
|
||||||
|
*
|
||||||
|
* - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must
|
||||||
|
* be called whenever the core clock is changed
|
||||||
|
* during program execution.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
******************************************************************************
|
||||||
|
* @attention
|
||||||
|
*
|
||||||
|
* <h2><center>© COPYRIGHT 2016 STMicroelectronics</center></h2>
|
||||||
|
*
|
||||||
|
* 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. Neither the name of STMicroelectronics nor the names of its contributors
|
||||||
|
* may 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 HOLDER 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.
|
||||||
|
*
|
||||||
|
******************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @addtogroup CMSIS
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @addtogroup stm32f4xx_system
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @addtogroup STM32F4xx_System_Private_Includes
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "stm32f4xx.h"
|
||||||
|
|
||||||
|
#if !defined (HSE_VALUE)
|
||||||
|
#define HSE_VALUE ((uint32_t)25000000) /*!< Default value of the External oscillator in Hz */
|
||||||
|
#endif /* HSE_VALUE */
|
||||||
|
|
||||||
|
#if !defined (HSI_VALUE)
|
||||||
|
#define HSI_VALUE ((uint32_t)16000000) /*!< Value of the Internal oscillator in Hz*/
|
||||||
|
#endif /* HSI_VALUE */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @addtogroup STM32F4xx_System_Private_TypesDefinitions
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @addtogroup STM32F4xx_System_Private_Defines
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/************************* Miscellaneous Configuration ************************/
|
||||||
|
/*!< Uncomment the following line if you need to use external SRAM or SDRAM as data memory */
|
||||||
|
#if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx)\
|
||||||
|
|| defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\
|
||||||
|
|| defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx)
|
||||||
|
/* #define DATA_IN_ExtSRAM */
|
||||||
|
#endif /* STM32F40xxx || STM32F41xxx || STM32F42xxx || STM32F43xxx || STM32F469xx || STM32F479xx ||\
|
||||||
|
STM32F412Zx || STM32F412Vx */
|
||||||
|
|
||||||
|
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\
|
||||||
|
|| defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx)
|
||||||
|
/* #define DATA_IN_ExtSDRAM */
|
||||||
|
#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F446xx || STM32F469xx ||\
|
||||||
|
STM32F479xx */
|
||||||
|
|
||||||
|
/*!< Uncomment the following line if you need to relocate your vector Table in
|
||||||
|
Internal SRAM. */
|
||||||
|
/* #define VECT_TAB_SRAM */
|
||||||
|
#define VECT_TAB_OFFSET 0x00 /*!< Vector Table base offset field.
|
||||||
|
This value must be a multiple of 0x200. */
|
||||||
|
/******************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @addtogroup STM32F4xx_System_Private_Macros
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @addtogroup STM32F4xx_System_Private_Variables
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
/* This variable is updated in three ways:
|
||||||
|
1) by calling CMSIS function SystemCoreClockUpdate()
|
||||||
|
2) by calling HAL API function HAL_RCC_GetHCLKFreq()
|
||||||
|
3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency
|
||||||
|
Note: If you use this function to configure the system clock; then there
|
||||||
|
is no need to call the 2 first functions listed above, since SystemCoreClock
|
||||||
|
variable is updated automatically.
|
||||||
|
*/
|
||||||
|
uint32_t SystemCoreClock = 16000000;
|
||||||
|
const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
|
||||||
|
const uint8_t APBPrescTable[8] = {0, 0, 0, 0, 1, 2, 3, 4};
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @addtogroup STM32F4xx_System_Private_FunctionPrototypes
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM)
|
||||||
|
static void SystemInit_ExtMemCtl(void);
|
||||||
|
#endif /* DATA_IN_ExtSRAM || DATA_IN_ExtSDRAM */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @addtogroup STM32F4xx_System_Private_Functions
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Setup the microcontroller system
|
||||||
|
* Initialize the FPU setting, vector table location and External memory
|
||||||
|
* configuration.
|
||||||
|
* @param None
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
void SystemInit(void)
|
||||||
|
{
|
||||||
|
/* FPU settings ------------------------------------------------------------*/
|
||||||
|
#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
|
||||||
|
SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */
|
||||||
|
#endif
|
||||||
|
/* Reset the RCC clock configuration to the default reset state ------------*/
|
||||||
|
/* Set HSION bit */
|
||||||
|
RCC->CR |= (uint32_t)0x00000001;
|
||||||
|
|
||||||
|
/* Reset CFGR register */
|
||||||
|
RCC->CFGR = 0x00000000;
|
||||||
|
|
||||||
|
/* Reset HSEON, CSSON and PLLON bits */
|
||||||
|
RCC->CR &= (uint32_t)0xFEF6FFFF;
|
||||||
|
|
||||||
|
/* Reset PLLCFGR register */
|
||||||
|
RCC->PLLCFGR = 0x24003010;
|
||||||
|
|
||||||
|
/* Reset HSEBYP bit */
|
||||||
|
RCC->CR &= (uint32_t)0xFFFBFFFF;
|
||||||
|
|
||||||
|
/* Disable all interrupts */
|
||||||
|
RCC->CIR = 0x00000000;
|
||||||
|
|
||||||
|
#if defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM)
|
||||||
|
SystemInit_ExtMemCtl();
|
||||||
|
#endif /* DATA_IN_ExtSRAM || DATA_IN_ExtSDRAM */
|
||||||
|
|
||||||
|
/* Configure the Vector Table location add offset address ------------------*/
|
||||||
|
#ifdef VECT_TAB_SRAM
|
||||||
|
SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
|
||||||
|
#else
|
||||||
|
SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Update SystemCoreClock variable according to Clock Register Values.
|
||||||
|
* The SystemCoreClock variable contains the core clock (HCLK), it can
|
||||||
|
* be used by the user application to setup the SysTick timer or configure
|
||||||
|
* other parameters.
|
||||||
|
*
|
||||||
|
* @note Each time the core clock (HCLK) changes, this function must be called
|
||||||
|
* to update SystemCoreClock variable value. Otherwise, any configuration
|
||||||
|
* based on this variable will be incorrect.
|
||||||
|
*
|
||||||
|
* @note - The system frequency computed by this function is not the real
|
||||||
|
* frequency in the chip. It is calculated based on the predefined
|
||||||
|
* constant and the selected clock source:
|
||||||
|
*
|
||||||
|
* - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*)
|
||||||
|
*
|
||||||
|
* - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**)
|
||||||
|
*
|
||||||
|
* - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**)
|
||||||
|
* or HSI_VALUE(*) multiplied/divided by the PLL factors.
|
||||||
|
*
|
||||||
|
* (*) HSI_VALUE is a constant defined in stm32f4xx_hal_conf.h file (default value
|
||||||
|
* 16 MHz) but the real value may vary depending on the variations
|
||||||
|
* in voltage and temperature.
|
||||||
|
*
|
||||||
|
* (**) HSE_VALUE is a constant defined in stm32f4xx_hal_conf.h file (its value
|
||||||
|
* depends on the application requirements), user has to ensure that HSE_VALUE
|
||||||
|
* is same as the real frequency of the crystal used. Otherwise, this function
|
||||||
|
* may have wrong result.
|
||||||
|
*
|
||||||
|
* - The result of this function could be not correct when using fractional
|
||||||
|
* value for HSE crystal.
|
||||||
|
*
|
||||||
|
* @param None
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
void SystemCoreClockUpdate(void)
|
||||||
|
{
|
||||||
|
uint32_t tmp = 0, pllvco = 0, pllp = 2, pllsource = 0, pllm = 2;
|
||||||
|
|
||||||
|
/* Get SYSCLK source -------------------------------------------------------*/
|
||||||
|
tmp = RCC->CFGR & RCC_CFGR_SWS;
|
||||||
|
|
||||||
|
switch (tmp)
|
||||||
|
{
|
||||||
|
case 0x00: /* HSI used as system clock source */
|
||||||
|
SystemCoreClock = HSI_VALUE;
|
||||||
|
break;
|
||||||
|
case 0x04: /* HSE used as system clock source */
|
||||||
|
SystemCoreClock = HSE_VALUE;
|
||||||
|
break;
|
||||||
|
case 0x08: /* PLL used as system clock source */
|
||||||
|
|
||||||
|
/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N
|
||||||
|
SYSCLK = PLL_VCO / PLL_P
|
||||||
|
*/
|
||||||
|
pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) >> 22;
|
||||||
|
pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM;
|
||||||
|
|
||||||
|
if (pllsource != 0)
|
||||||
|
{
|
||||||
|
/* HSE used as PLL clock source */
|
||||||
|
pllvco = (HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* HSI used as PLL clock source */
|
||||||
|
pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);
|
||||||
|
}
|
||||||
|
|
||||||
|
pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) + 1 ) *2;
|
||||||
|
SystemCoreClock = pllvco/pllp;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
SystemCoreClock = HSI_VALUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
/* Compute HCLK frequency --------------------------------------------------*/
|
||||||
|
/* Get HCLK prescaler */
|
||||||
|
tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)];
|
||||||
|
/* HCLK frequency */
|
||||||
|
SystemCoreClock >>= tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined (DATA_IN_ExtSRAM) && defined (DATA_IN_ExtSDRAM)
|
||||||
|
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\
|
||||||
|
|| defined(STM32F469xx) || defined(STM32F479xx)
|
||||||
|
/**
|
||||||
|
* @brief Setup the external memory controller.
|
||||||
|
* Called in startup_stm32f4xx.s before jump to main.
|
||||||
|
* This function configures the external memories (SRAM/SDRAM)
|
||||||
|
* This SRAM/SDRAM will be used as program data memory (including heap and stack).
|
||||||
|
* @param None
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
void SystemInit_ExtMemCtl(void)
|
||||||
|
{
|
||||||
|
__IO uint32_t tmp = 0x00;
|
||||||
|
|
||||||
|
register uint32_t tmpreg = 0, timeout = 0xFFFF;
|
||||||
|
register __IO uint32_t index;
|
||||||
|
|
||||||
|
/* Enable GPIOC, GPIOD, GPIOE, GPIOF, GPIOG, GPIOH and GPIOI interface clock */
|
||||||
|
RCC->AHB1ENR |= 0x000001F8;
|
||||||
|
|
||||||
|
/* Delay after an RCC peripheral clock enabling */
|
||||||
|
tmp = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOCEN);
|
||||||
|
|
||||||
|
/* Connect PDx pins to FMC Alternate function */
|
||||||
|
GPIOD->AFR[0] = 0x00CCC0CC;
|
||||||
|
GPIOD->AFR[1] = 0xCCCCCCCC;
|
||||||
|
/* Configure PDx pins in Alternate function mode */
|
||||||
|
GPIOD->MODER = 0xAAAA0A8A;
|
||||||
|
/* Configure PDx pins speed to 100 MHz */
|
||||||
|
GPIOD->OSPEEDR = 0xFFFF0FCF;
|
||||||
|
/* Configure PDx pins Output type to push-pull */
|
||||||
|
GPIOD->OTYPER = 0x00000000;
|
||||||
|
/* No pull-up, pull-down for PDx pins */
|
||||||
|
GPIOD->PUPDR = 0x00000000;
|
||||||
|
|
||||||
|
/* Connect PEx pins to FMC Alternate function */
|
||||||
|
GPIOE->AFR[0] = 0xC00CC0CC;
|
||||||
|
GPIOE->AFR[1] = 0xCCCCCCCC;
|
||||||
|
/* Configure PEx pins in Alternate function mode */
|
||||||
|
GPIOE->MODER = 0xAAAA828A;
|
||||||
|
/* Configure PEx pins speed to 100 MHz */
|
||||||
|
GPIOE->OSPEEDR = 0xFFFFC3CF;
|
||||||
|
/* Configure PEx pins Output type to push-pull */
|
||||||
|
GPIOE->OTYPER = 0x00000000;
|
||||||
|
/* No pull-up, pull-down for PEx pins */
|
||||||
|
GPIOE->PUPDR = 0x00000000;
|
||||||
|
|
||||||
|
/* Connect PFx pins to FMC Alternate function */
|
||||||
|
GPIOF->AFR[0] = 0xCCCCCCCC;
|
||||||
|
GPIOF->AFR[1] = 0xCCCCCCCC;
|
||||||
|
/* Configure PFx pins in Alternate function mode */
|
||||||
|
GPIOF->MODER = 0xAA800AAA;
|
||||||
|
/* Configure PFx pins speed to 50 MHz */
|
||||||
|
GPIOF->OSPEEDR = 0xAA800AAA;
|
||||||
|
/* Configure PFx pins Output type to push-pull */
|
||||||
|
GPIOF->OTYPER = 0x00000000;
|
||||||
|
/* No pull-up, pull-down for PFx pins */
|
||||||
|
GPIOF->PUPDR = 0x00000000;
|
||||||
|
|
||||||
|
/* Connect PGx pins to FMC Alternate function */
|
||||||
|
GPIOG->AFR[0] = 0xCCCCCCCC;
|
||||||
|
GPIOG->AFR[1] = 0xCCCCCCCC;
|
||||||
|
/* Configure PGx pins in Alternate function mode */
|
||||||
|
GPIOG->MODER = 0xAAAAAAAA;
|
||||||
|
/* Configure PGx pins speed to 50 MHz */
|
||||||
|
GPIOG->OSPEEDR = 0xAAAAAAAA;
|
||||||
|
/* Configure PGx pins Output type to push-pull */
|
||||||
|
GPIOG->OTYPER = 0x00000000;
|
||||||
|
/* No pull-up, pull-down for PGx pins */
|
||||||
|
GPIOG->PUPDR = 0x00000000;
|
||||||
|
|
||||||
|
/* Connect PHx pins to FMC Alternate function */
|
||||||
|
GPIOH->AFR[0] = 0x00C0CC00;
|
||||||
|
GPIOH->AFR[1] = 0xCCCCCCCC;
|
||||||
|
/* Configure PHx pins in Alternate function mode */
|
||||||
|
GPIOH->MODER = 0xAAAA08A0;
|
||||||
|
/* Configure PHx pins speed to 50 MHz */
|
||||||
|
GPIOH->OSPEEDR = 0xAAAA08A0;
|
||||||
|
/* Configure PHx pins Output type to push-pull */
|
||||||
|
GPIOH->OTYPER = 0x00000000;
|
||||||
|
/* No pull-up, pull-down for PHx pins */
|
||||||
|
GPIOH->PUPDR = 0x00000000;
|
||||||
|
|
||||||
|
/* Connect PIx pins to FMC Alternate function */
|
||||||
|
GPIOI->AFR[0] = 0xCCCCCCCC;
|
||||||
|
GPIOI->AFR[1] = 0x00000CC0;
|
||||||
|
/* Configure PIx pins in Alternate function mode */
|
||||||
|
GPIOI->MODER = 0x0028AAAA;
|
||||||
|
/* Configure PIx pins speed to 50 MHz */
|
||||||
|
GPIOI->OSPEEDR = 0x0028AAAA;
|
||||||
|
/* Configure PIx pins Output type to push-pull */
|
||||||
|
GPIOI->OTYPER = 0x00000000;
|
||||||
|
/* No pull-up, pull-down for PIx pins */
|
||||||
|
GPIOI->PUPDR = 0x00000000;
|
||||||
|
|
||||||
|
/*-- FMC Configuration -------------------------------------------------------*/
|
||||||
|
/* Enable the FMC interface clock */
|
||||||
|
RCC->AHB3ENR |= 0x00000001;
|
||||||
|
/* Delay after an RCC peripheral clock enabling */
|
||||||
|
tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN);
|
||||||
|
|
||||||
|
FMC_Bank5_6->SDCR[0] = 0x000019E4;
|
||||||
|
FMC_Bank5_6->SDTR[0] = 0x01115351;
|
||||||
|
|
||||||
|
/* SDRAM initialization sequence */
|
||||||
|
/* Clock enable command */
|
||||||
|
FMC_Bank5_6->SDCMR = 0x00000011;
|
||||||
|
tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
|
||||||
|
while((tmpreg != 0) && (timeout-- > 0))
|
||||||
|
{
|
||||||
|
tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Delay */
|
||||||
|
for (index = 0; index<1000; index++);
|
||||||
|
|
||||||
|
/* PALL command */
|
||||||
|
FMC_Bank5_6->SDCMR = 0x00000012;
|
||||||
|
timeout = 0xFFFF;
|
||||||
|
while((tmpreg != 0) && (timeout-- > 0))
|
||||||
|
{
|
||||||
|
tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Auto refresh command */
|
||||||
|
FMC_Bank5_6->SDCMR = 0x00000073;
|
||||||
|
timeout = 0xFFFF;
|
||||||
|
while((tmpreg != 0) && (timeout-- > 0))
|
||||||
|
{
|
||||||
|
tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* MRD register program */
|
||||||
|
FMC_Bank5_6->SDCMR = 0x00046014;
|
||||||
|
timeout = 0xFFFF;
|
||||||
|
while((tmpreg != 0) && (timeout-- > 0))
|
||||||
|
{
|
||||||
|
tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set refresh count */
|
||||||
|
tmpreg = FMC_Bank5_6->SDRTR;
|
||||||
|
FMC_Bank5_6->SDRTR = (tmpreg | (0x0000027C<<1));
|
||||||
|
|
||||||
|
/* Disable write protection */
|
||||||
|
tmpreg = FMC_Bank5_6->SDCR[0];
|
||||||
|
FMC_Bank5_6->SDCR[0] = (tmpreg & 0xFFFFFDFF);
|
||||||
|
|
||||||
|
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)
|
||||||
|
/* Configure and enable Bank1_SRAM2 */
|
||||||
|
FMC_Bank1->BTCR[2] = 0x00001011;
|
||||||
|
FMC_Bank1->BTCR[3] = 0x00000201;
|
||||||
|
FMC_Bank1E->BWTR[2] = 0x0fffffff;
|
||||||
|
#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx */
|
||||||
|
#if defined(STM32F469xx) || defined(STM32F479xx)
|
||||||
|
/* Configure and enable Bank1_SRAM2 */
|
||||||
|
FMC_Bank1->BTCR[2] = 0x00001091;
|
||||||
|
FMC_Bank1->BTCR[3] = 0x00110212;
|
||||||
|
FMC_Bank1E->BWTR[2] = 0x0fffffff;
|
||||||
|
#endif /* STM32F469xx || STM32F479xx */
|
||||||
|
|
||||||
|
(void)(tmp);
|
||||||
|
}
|
||||||
|
#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F469xx || STM32F479xx */
|
||||||
|
#elif defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM)
|
||||||
|
/**
|
||||||
|
* @brief Setup the external memory controller.
|
||||||
|
* Called in startup_stm32f4xx.s before jump to main.
|
||||||
|
* This function configures the external memories (SRAM/SDRAM)
|
||||||
|
* This SRAM/SDRAM will be used as program data memory (including heap and stack).
|
||||||
|
* @param None
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
void SystemInit_ExtMemCtl(void)
|
||||||
|
{
|
||||||
|
__IO uint32_t tmp = 0x00;
|
||||||
|
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\
|
||||||
|
|| defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx)
|
||||||
|
#if defined (DATA_IN_ExtSDRAM)
|
||||||
|
register uint32_t tmpreg = 0, timeout = 0xFFFF;
|
||||||
|
register __IO uint32_t index;
|
||||||
|
|
||||||
|
#if defined(STM32F446xx)
|
||||||
|
/* Enable GPIOA, GPIOC, GPIOD, GPIOE, GPIOF, GPIOG interface
|
||||||
|
clock */
|
||||||
|
RCC->AHB1ENR |= 0x0000007D;
|
||||||
|
#else
|
||||||
|
/* Enable GPIOC, GPIOD, GPIOE, GPIOF, GPIOG, GPIOH and GPIOI interface
|
||||||
|
clock */
|
||||||
|
RCC->AHB1ENR |= 0x000001F8;
|
||||||
|
#endif /* STM32F446xx */
|
||||||
|
/* Delay after an RCC peripheral clock enabling */
|
||||||
|
tmp = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOCEN);
|
||||||
|
|
||||||
|
#if defined(STM32F446xx)
|
||||||
|
/* Connect PAx pins to FMC Alternate function */
|
||||||
|
GPIOA->AFR[0] |= 0xC0000000;
|
||||||
|
GPIOA->AFR[1] |= 0x00000000;
|
||||||
|
/* Configure PDx pins in Alternate function mode */
|
||||||
|
GPIOA->MODER |= 0x00008000;
|
||||||
|
/* Configure PDx pins speed to 50 MHz */
|
||||||
|
GPIOA->OSPEEDR |= 0x00008000;
|
||||||
|
/* Configure PDx pins Output type to push-pull */
|
||||||
|
GPIOA->OTYPER |= 0x00000000;
|
||||||
|
/* No pull-up, pull-down for PDx pins */
|
||||||
|
GPIOA->PUPDR |= 0x00000000;
|
||||||
|
|
||||||
|
/* Connect PCx pins to FMC Alternate function */
|
||||||
|
GPIOC->AFR[0] |= 0x00CC0000;
|
||||||
|
GPIOC->AFR[1] |= 0x00000000;
|
||||||
|
/* Configure PDx pins in Alternate function mode */
|
||||||
|
GPIOC->MODER |= 0x00000A00;
|
||||||
|
/* Configure PDx pins speed to 50 MHz */
|
||||||
|
GPIOC->OSPEEDR |= 0x00000A00;
|
||||||
|
/* Configure PDx pins Output type to push-pull */
|
||||||
|
GPIOC->OTYPER |= 0x00000000;
|
||||||
|
/* No pull-up, pull-down for PDx pins */
|
||||||
|
GPIOC->PUPDR |= 0x00000000;
|
||||||
|
#endif /* STM32F446xx */
|
||||||
|
|
||||||
|
/* Connect PDx pins to FMC Alternate function */
|
||||||
|
GPIOD->AFR[0] = 0x000000CC;
|
||||||
|
GPIOD->AFR[1] = 0xCC000CCC;
|
||||||
|
/* Configure PDx pins in Alternate function mode */
|
||||||
|
GPIOD->MODER = 0xA02A000A;
|
||||||
|
/* Configure PDx pins speed to 50 MHz */
|
||||||
|
GPIOD->OSPEEDR = 0xA02A000A;
|
||||||
|
/* Configure PDx pins Output type to push-pull */
|
||||||
|
GPIOD->OTYPER = 0x00000000;
|
||||||
|
/* No pull-up, pull-down for PDx pins */
|
||||||
|
GPIOD->PUPDR = 0x00000000;
|
||||||
|
|
||||||
|
/* Connect PEx pins to FMC Alternate function */
|
||||||
|
GPIOE->AFR[0] = 0xC00000CC;
|
||||||
|
GPIOE->AFR[1] = 0xCCCCCCCC;
|
||||||
|
/* Configure PEx pins in Alternate function mode */
|
||||||
|
GPIOE->MODER = 0xAAAA800A;
|
||||||
|
/* Configure PEx pins speed to 50 MHz */
|
||||||
|
GPIOE->OSPEEDR = 0xAAAA800A;
|
||||||
|
/* Configure PEx pins Output type to push-pull */
|
||||||
|
GPIOE->OTYPER = 0x00000000;
|
||||||
|
/* No pull-up, pull-down for PEx pins */
|
||||||
|
GPIOE->PUPDR = 0x00000000;
|
||||||
|
|
||||||
|
/* Connect PFx pins to FMC Alternate function */
|
||||||
|
GPIOF->AFR[0] = 0xCCCCCCCC;
|
||||||
|
GPIOF->AFR[1] = 0xCCCCCCCC;
|
||||||
|
/* Configure PFx pins in Alternate function mode */
|
||||||
|
GPIOF->MODER = 0xAA800AAA;
|
||||||
|
/* Configure PFx pins speed to 50 MHz */
|
||||||
|
GPIOF->OSPEEDR = 0xAA800AAA;
|
||||||
|
/* Configure PFx pins Output type to push-pull */
|
||||||
|
GPIOF->OTYPER = 0x00000000;
|
||||||
|
/* No pull-up, pull-down for PFx pins */
|
||||||
|
GPIOF->PUPDR = 0x00000000;
|
||||||
|
|
||||||
|
/* Connect PGx pins to FMC Alternate function */
|
||||||
|
GPIOG->AFR[0] = 0xCCCCCCCC;
|
||||||
|
GPIOG->AFR[1] = 0xCCCCCCCC;
|
||||||
|
/* Configure PGx pins in Alternate function mode */
|
||||||
|
GPIOG->MODER = 0xAAAAAAAA;
|
||||||
|
/* Configure PGx pins speed to 50 MHz */
|
||||||
|
GPIOG->OSPEEDR = 0xAAAAAAAA;
|
||||||
|
/* Configure PGx pins Output type to push-pull */
|
||||||
|
GPIOG->OTYPER = 0x00000000;
|
||||||
|
/* No pull-up, pull-down for PGx pins */
|
||||||
|
GPIOG->PUPDR = 0x00000000;
|
||||||
|
|
||||||
|
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\
|
||||||
|
|| defined(STM32F469xx) || defined(STM32F479xx)
|
||||||
|
/* Connect PHx pins to FMC Alternate function */
|
||||||
|
GPIOH->AFR[0] = 0x00C0CC00;
|
||||||
|
GPIOH->AFR[1] = 0xCCCCCCCC;
|
||||||
|
/* Configure PHx pins in Alternate function mode */
|
||||||
|
GPIOH->MODER = 0xAAAA08A0;
|
||||||
|
/* Configure PHx pins speed to 50 MHz */
|
||||||
|
GPIOH->OSPEEDR = 0xAAAA08A0;
|
||||||
|
/* Configure PHx pins Output type to push-pull */
|
||||||
|
GPIOH->OTYPER = 0x00000000;
|
||||||
|
/* No pull-up, pull-down for PHx pins */
|
||||||
|
GPIOH->PUPDR = 0x00000000;
|
||||||
|
|
||||||
|
/* Connect PIx pins to FMC Alternate function */
|
||||||
|
GPIOI->AFR[0] = 0xCCCCCCCC;
|
||||||
|
GPIOI->AFR[1] = 0x00000CC0;
|
||||||
|
/* Configure PIx pins in Alternate function mode */
|
||||||
|
GPIOI->MODER = 0x0028AAAA;
|
||||||
|
/* Configure PIx pins speed to 50 MHz */
|
||||||
|
GPIOI->OSPEEDR = 0x0028AAAA;
|
||||||
|
/* Configure PIx pins Output type to push-pull */
|
||||||
|
GPIOI->OTYPER = 0x00000000;
|
||||||
|
/* No pull-up, pull-down for PIx pins */
|
||||||
|
GPIOI->PUPDR = 0x00000000;
|
||||||
|
#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F469xx || STM32F479xx */
|
||||||
|
|
||||||
|
/*-- FMC Configuration -------------------------------------------------------*/
|
||||||
|
/* Enable the FMC interface clock */
|
||||||
|
RCC->AHB3ENR |= 0x00000001;
|
||||||
|
/* Delay after an RCC peripheral clock enabling */
|
||||||
|
tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN);
|
||||||
|
|
||||||
|
/* Configure and enable SDRAM bank1 */
|
||||||
|
#if defined(STM32F446xx)
|
||||||
|
FMC_Bank5_6->SDCR[0] = 0x00001954;
|
||||||
|
#else
|
||||||
|
FMC_Bank5_6->SDCR[0] = 0x000019E4;
|
||||||
|
#endif /* STM32F446xx */
|
||||||
|
FMC_Bank5_6->SDTR[0] = 0x01115351;
|
||||||
|
|
||||||
|
/* SDRAM initialization sequence */
|
||||||
|
/* Clock enable command */
|
||||||
|
FMC_Bank5_6->SDCMR = 0x00000011;
|
||||||
|
tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
|
||||||
|
while((tmpreg != 0) && (timeout-- > 0))
|
||||||
|
{
|
||||||
|
tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Delay */
|
||||||
|
for (index = 0; index<1000; index++);
|
||||||
|
|
||||||
|
/* PALL command */
|
||||||
|
FMC_Bank5_6->SDCMR = 0x00000012;
|
||||||
|
timeout = 0xFFFF;
|
||||||
|
while((tmpreg != 0) && (timeout-- > 0))
|
||||||
|
{
|
||||||
|
tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Auto refresh command */
|
||||||
|
#if defined(STM32F446xx)
|
||||||
|
FMC_Bank5_6->SDCMR = 0x000000F3;
|
||||||
|
#else
|
||||||
|
FMC_Bank5_6->SDCMR = 0x00000073;
|
||||||
|
#endif /* STM32F446xx */
|
||||||
|
timeout = 0xFFFF;
|
||||||
|
while((tmpreg != 0) && (timeout-- > 0))
|
||||||
|
{
|
||||||
|
tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* MRD register program */
|
||||||
|
#if defined(STM32F446xx)
|
||||||
|
FMC_Bank5_6->SDCMR = 0x00044014;
|
||||||
|
#else
|
||||||
|
FMC_Bank5_6->SDCMR = 0x00046014;
|
||||||
|
#endif /* STM32F446xx */
|
||||||
|
timeout = 0xFFFF;
|
||||||
|
while((tmpreg != 0) && (timeout-- > 0))
|
||||||
|
{
|
||||||
|
tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set refresh count */
|
||||||
|
tmpreg = FMC_Bank5_6->SDRTR;
|
||||||
|
#if defined(STM32F446xx)
|
||||||
|
FMC_Bank5_6->SDRTR = (tmpreg | (0x0000050C<<1));
|
||||||
|
#else
|
||||||
|
FMC_Bank5_6->SDRTR = (tmpreg | (0x0000027C<<1));
|
||||||
|
#endif /* STM32F446xx */
|
||||||
|
|
||||||
|
/* Disable write protection */
|
||||||
|
tmpreg = FMC_Bank5_6->SDCR[0];
|
||||||
|
FMC_Bank5_6->SDCR[0] = (tmpreg & 0xFFFFFDFF);
|
||||||
|
#endif /* DATA_IN_ExtSDRAM */
|
||||||
|
#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F446xx || STM32F469xx || STM32F479xx */
|
||||||
|
|
||||||
|
#if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx)\
|
||||||
|
|| defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\
|
||||||
|
|| defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx)
|
||||||
|
|
||||||
|
#if defined(DATA_IN_ExtSRAM)
|
||||||
|
/*-- GPIOs Configuration -----------------------------------------------------*/
|
||||||
|
/* Enable GPIOD, GPIOE, GPIOF and GPIOG interface clock */
|
||||||
|
RCC->AHB1ENR |= 0x00000078;
|
||||||
|
/* Delay after an RCC peripheral clock enabling */
|
||||||
|
tmp = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIODEN);
|
||||||
|
|
||||||
|
/* Connect PDx pins to FMC Alternate function */
|
||||||
|
GPIOD->AFR[0] = 0x00CCC0CC;
|
||||||
|
GPIOD->AFR[1] = 0xCCCCCCCC;
|
||||||
|
/* Configure PDx pins in Alternate function mode */
|
||||||
|
GPIOD->MODER = 0xAAAA0A8A;
|
||||||
|
/* Configure PDx pins speed to 100 MHz */
|
||||||
|
GPIOD->OSPEEDR = 0xFFFF0FCF;
|
||||||
|
/* Configure PDx pins Output type to push-pull */
|
||||||
|
GPIOD->OTYPER = 0x00000000;
|
||||||
|
/* No pull-up, pull-down for PDx pins */
|
||||||
|
GPIOD->PUPDR = 0x00000000;
|
||||||
|
|
||||||
|
/* Connect PEx pins to FMC Alternate function */
|
||||||
|
GPIOE->AFR[0] = 0xC00CC0CC;
|
||||||
|
GPIOE->AFR[1] = 0xCCCCCCCC;
|
||||||
|
/* Configure PEx pins in Alternate function mode */
|
||||||
|
GPIOE->MODER = 0xAAAA828A;
|
||||||
|
/* Configure PEx pins speed to 100 MHz */
|
||||||
|
GPIOE->OSPEEDR = 0xFFFFC3CF;
|
||||||
|
/* Configure PEx pins Output type to push-pull */
|
||||||
|
GPIOE->OTYPER = 0x00000000;
|
||||||
|
/* No pull-up, pull-down for PEx pins */
|
||||||
|
GPIOE->PUPDR = 0x00000000;
|
||||||
|
|
||||||
|
/* Connect PFx pins to FMC Alternate function */
|
||||||
|
GPIOF->AFR[0] = 0x00CCCCCC;
|
||||||
|
GPIOF->AFR[1] = 0xCCCC0000;
|
||||||
|
/* Configure PFx pins in Alternate function mode */
|
||||||
|
GPIOF->MODER = 0xAA000AAA;
|
||||||
|
/* Configure PFx pins speed to 100 MHz */
|
||||||
|
GPIOF->OSPEEDR = 0xFF000FFF;
|
||||||
|
/* Configure PFx pins Output type to push-pull */
|
||||||
|
GPIOF->OTYPER = 0x00000000;
|
||||||
|
/* No pull-up, pull-down for PFx pins */
|
||||||
|
GPIOF->PUPDR = 0x00000000;
|
||||||
|
|
||||||
|
/* Connect PGx pins to FMC Alternate function */
|
||||||
|
GPIOG->AFR[0] = 0x00CCCCCC;
|
||||||
|
GPIOG->AFR[1] = 0x000000C0;
|
||||||
|
/* Configure PGx pins in Alternate function mode */
|
||||||
|
GPIOG->MODER = 0x00085AAA;
|
||||||
|
/* Configure PGx pins speed to 100 MHz */
|
||||||
|
GPIOG->OSPEEDR = 0x000CAFFF;
|
||||||
|
/* Configure PGx pins Output type to push-pull */
|
||||||
|
GPIOG->OTYPER = 0x00000000;
|
||||||
|
/* No pull-up, pull-down for PGx pins */
|
||||||
|
GPIOG->PUPDR = 0x00000000;
|
||||||
|
|
||||||
|
/*-- FMC/FSMC Configuration --------------------------------------------------*/
|
||||||
|
/* Enable the FMC/FSMC interface clock */
|
||||||
|
RCC->AHB3ENR |= 0x00000001;
|
||||||
|
|
||||||
|
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)
|
||||||
|
/* Delay after an RCC peripheral clock enabling */
|
||||||
|
tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN);
|
||||||
|
/* Configure and enable Bank1_SRAM2 */
|
||||||
|
FMC_Bank1->BTCR[2] = 0x00001011;
|
||||||
|
FMC_Bank1->BTCR[3] = 0x00000201;
|
||||||
|
FMC_Bank1E->BWTR[2] = 0x0fffffff;
|
||||||
|
#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx */
|
||||||
|
#if defined(STM32F469xx) || defined(STM32F479xx)
|
||||||
|
/* Delay after an RCC peripheral clock enabling */
|
||||||
|
tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN);
|
||||||
|
/* Configure and enable Bank1_SRAM2 */
|
||||||
|
FMC_Bank1->BTCR[2] = 0x00001091;
|
||||||
|
FMC_Bank1->BTCR[3] = 0x00110212;
|
||||||
|
FMC_Bank1E->BWTR[2] = 0x0fffffff;
|
||||||
|
#endif /* STM32F469xx || STM32F479xx */
|
||||||
|
#if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx)|| defined(STM32F417xx)\
|
||||||
|
|| defined(STM32F412Zx) || defined(STM32F412Vx)
|
||||||
|
/* Delay after an RCC peripheral clock enabling */
|
||||||
|
tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FSMCEN);
|
||||||
|
/* Configure and enable Bank1_SRAM2 */
|
||||||
|
FSMC_Bank1->BTCR[2] = 0x00001011;
|
||||||
|
FSMC_Bank1->BTCR[3] = 0x00000201;
|
||||||
|
FSMC_Bank1E->BWTR[2] = 0x0FFFFFFF;
|
||||||
|
#endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx || STM32F412Zx || STM32F412Vx */
|
||||||
|
|
||||||
|
#endif /* DATA_IN_ExtSRAM */
|
||||||
|
#endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx || STM32F427xx || STM32F437xx ||\
|
||||||
|
STM32F429xx || STM32F439xx || STM32F469xx || STM32F479xx || STM32F412Zx || STM32F412Vx */
|
||||||
|
(void)(tmp);
|
||||||
|
}
|
||||||
|
#endif /* DATA_IN_ExtSRAM && DATA_IN_ExtSDRAM */
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
|
@ -0,0 +1,15 @@
|
||||||
|
|
||||||
|
#ifndef __ETL_PROFILE_H__
|
||||||
|
#define __ETL_PROFILE_H__
|
||||||
|
|
||||||
|
#define ETL_VERBOSE_ERRORS
|
||||||
|
#define ETL_CHECK_PUSH_POP
|
||||||
|
#define ETL_ISTRING_REPAIR_ENABLE
|
||||||
|
#define ETL_IVECTOR_REPAIR_ENABLE
|
||||||
|
#define ETL_IDEQUE_REPAIR_ENABLE
|
||||||
|
#define ETL_CALLBACK_TIMER_USE_ATOMIC_LOCK
|
||||||
|
#define ETL_NO_STL
|
||||||
|
|
||||||
|
//#include "etl/profiles/auto.h"
|
||||||
|
|
||||||
|
#endif
|
167
components/etl/examples/ArmTimerCallbacks - C++/main.cpp
Normal file
167
components/etl/examples/ArmTimerCallbacks - C++/main.cpp
Normal file
|
@ -0,0 +1,167 @@
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
//#if (__cplusplus < 201103L)
|
||||||
|
extern "C"
|
||||||
|
{
|
||||||
|
//#endif
|
||||||
|
#include "Board_LED.h" // ::Board Support:LED
|
||||||
|
#include "Board_Buttons.h" // ::Board Support:Buttons
|
||||||
|
//#if (__cplusplus < 201103L)
|
||||||
|
}
|
||||||
|
//#endif
|
||||||
|
|
||||||
|
#include "stm32f4xx.h" // Device header
|
||||||
|
|
||||||
|
#include "etl/function.h"
|
||||||
|
#include "etl/callback_timer.h"
|
||||||
|
#include "etl/vector.h"
|
||||||
|
#include "etl/iterator.h"
|
||||||
|
#include "etl/binary.h"
|
||||||
|
|
||||||
|
struct FP
|
||||||
|
{
|
||||||
|
void (*function)();
|
||||||
|
};
|
||||||
|
|
||||||
|
static etl::vector<FP, 10> power_callbacks;
|
||||||
|
|
||||||
|
void register_poweroff_callback(void (*function)())
|
||||||
|
{
|
||||||
|
FP fp = { function };
|
||||||
|
power_callbacks.push_back(fp);
|
||||||
|
}
|
||||||
|
|
||||||
|
const int N_TIMERS = 4;
|
||||||
|
|
||||||
|
etl::callback_timer<N_TIMERS> callback_timer;
|
||||||
|
|
||||||
|
etl::timer::id::type short_toggle;
|
||||||
|
etl::timer::id::type long_toggle;
|
||||||
|
etl::timer::id::type start_timers;
|
||||||
|
etl::timer::id::type swap_timers;
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
|
* SystemCoreClockConfigure: configure SystemCoreClock using HSI
|
||||||
|
(HSE is not populated on Nucleo board)
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
void SystemCoreClockConfigure(void) {
|
||||||
|
|
||||||
|
RCC->CR |= ((uint32_t)RCC_CR_HSION); // Enable HSI
|
||||||
|
while ((RCC->CR & RCC_CR_HSIRDY) == 0); // Wait for HSI Ready
|
||||||
|
|
||||||
|
RCC->CFGR = RCC_CFGR_SW_HSI; // HSI is system clock
|
||||||
|
while ((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_HSI); // Wait for HSI used as system clock
|
||||||
|
|
||||||
|
FLASH->ACR = FLASH_ACR_PRFTEN; // Enable Prefetch Buffer
|
||||||
|
FLASH->ACR |= FLASH_ACR_ICEN; // Instruction cache enable
|
||||||
|
FLASH->ACR |= FLASH_ACR_DCEN; // Data cache enable
|
||||||
|
FLASH->ACR |= FLASH_ACR_LATENCY_5WS; // Flash 5 wait state
|
||||||
|
|
||||||
|
RCC->CFGR |= RCC_CFGR_HPRE_DIV1; // HCLK = SYSCLK
|
||||||
|
RCC->CFGR |= RCC_CFGR_PPRE1_DIV4; // APB1 = HCLK/4
|
||||||
|
RCC->CFGR |= RCC_CFGR_PPRE2_DIV2; // APB2 = HCLK/2
|
||||||
|
|
||||||
|
RCC->CR &= ~RCC_CR_PLLON; // Disable PLL
|
||||||
|
|
||||||
|
// PLL configuration: VCO = HSI/M * N, Sysclk = VCO/P
|
||||||
|
RCC->PLLCFGR = ( 16ul | // PLL_M = 16
|
||||||
|
(384ul << 6U) | // PLL_N = 384
|
||||||
|
( 3ul << 16U) | // PLL_P = 8
|
||||||
|
(RCC_PLLCFGR_PLLSRC_HSI) | // PLL_SRC = HSI
|
||||||
|
( 8ul << 24U) ); // PLL_Q = 8
|
||||||
|
|
||||||
|
RCC->CR |= RCC_CR_PLLON; // Enable PLL
|
||||||
|
while((RCC->CR & RCC_CR_PLLRDY) == 0) __NOP(); // Wait till PLL is ready
|
||||||
|
|
||||||
|
RCC->CFGR &= ~RCC_CFGR_SW; // Select PLL as system clock source
|
||||||
|
RCC->CFGR |= RCC_CFGR_SW_PLL;
|
||||||
|
while ((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL); // Wait till PLL is system clock src
|
||||||
|
}
|
||||||
|
|
||||||
|
void StartTimers()
|
||||||
|
{
|
||||||
|
callback_timer.start(short_toggle);
|
||||||
|
callback_timer.start(swap_timers);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SwapTimers()
|
||||||
|
{
|
||||||
|
static bool state = false;
|
||||||
|
|
||||||
|
if (!state)
|
||||||
|
{
|
||||||
|
callback_timer.stop(short_toggle);
|
||||||
|
callback_timer.start(long_toggle);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
callback_timer.start(short_toggle);
|
||||||
|
callback_timer.stop(long_toggle);
|
||||||
|
}
|
||||||
|
|
||||||
|
state = !state;
|
||||||
|
|
||||||
|
callback_timer.start(swap_timers);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LedToggle()
|
||||||
|
{
|
||||||
|
static bool state = false;
|
||||||
|
|
||||||
|
if (state)
|
||||||
|
{
|
||||||
|
LED_On(0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LED_Off(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
state = !state;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
SystemCoreClockConfigure(); // configure HSI as System Clock
|
||||||
|
SystemCoreClockUpdate();
|
||||||
|
|
||||||
|
LED_Initialize();
|
||||||
|
Buttons_Initialize();
|
||||||
|
|
||||||
|
// The LEDs will start flashing fast after 2 seconds.
|
||||||
|
// After another 5 seconds they will start flashing slower.
|
||||||
|
short_toggle = callback_timer.register_timer(LedToggle, 50, etl::timer::mode::REPEATING);
|
||||||
|
long_toggle = callback_timer.register_timer(LedToggle, 100, etl::timer::mode::REPEATING);
|
||||||
|
start_timers = callback_timer.register_timer(StartTimers, 2000, etl::timer::mode::SINGLE_SHOT);
|
||||||
|
swap_timers = callback_timer.register_timer(SwapTimers, 1500, etl::timer::mode::SINGLE_SHOT);
|
||||||
|
|
||||||
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
|
|
||||||
|
callback_timer.enable(true);
|
||||||
|
|
||||||
|
callback_timer.start(start_timers);
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
__NOP();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C"
|
||||||
|
{
|
||||||
|
void SysTick_Handler()
|
||||||
|
{
|
||||||
|
const uint32_t TICK = 1U;
|
||||||
|
static uint32_t nticks = TICK;
|
||||||
|
|
||||||
|
if (callback_timer.tick(nticks))
|
||||||
|
{
|
||||||
|
nticks = TICK;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nticks += TICK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
2
components/etl/examples/Blink/Blink1/__vm/.gitignore
vendored
Normal file
2
components/etl/examples/Blink/Blink1/__vm/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
*.vsarduino.h
|
||||||
|
*.vmps.xml
|
53
components/etl/examples/BlinkList/BlinkList.ino
Normal file
53
components/etl/examples/BlinkList/BlinkList.ino
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
//***********************************************************************************
|
||||||
|
// A version of the Blink demo, but with delays stored in two instances of etl::list
|
||||||
|
//***********************************************************************************
|
||||||
|
|
||||||
|
#undef min
|
||||||
|
#undef max
|
||||||
|
|
||||||
|
#include <list.h>
|
||||||
|
#include <container.h>
|
||||||
|
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
// initialize digital pin 13 as an output.
|
||||||
|
pinMode(13, OUTPUT);
|
||||||
|
}
|
||||||
|
|
||||||
|
void iterate(const etl::ilist<int>& delays)
|
||||||
|
{
|
||||||
|
etl::ilist<int>::const_iterator itr;
|
||||||
|
|
||||||
|
// Iterate through the list.
|
||||||
|
itr = delays.begin();
|
||||||
|
|
||||||
|
while (itr != delays.end())
|
||||||
|
{
|
||||||
|
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
|
||||||
|
delay(100); // wait
|
||||||
|
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
|
||||||
|
delay(*itr++); // wait
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop()
|
||||||
|
{
|
||||||
|
int delay_times1[] = { 900, 800, 700, 600, 500, 400, 300, 200, 100 };
|
||||||
|
int delay_times2[] = { 400, 300, 200, 100 };
|
||||||
|
|
||||||
|
// Fill the first delay list, then reverse it.
|
||||||
|
// Notice how we don't have to know the size of the array!
|
||||||
|
const size_t size1 = sizeof(etl::array_size(delay_times1));
|
||||||
|
etl::list<int, size1> delays1(etl::begin(delay_times1), etl::end(delay_times1));
|
||||||
|
delays1.reverse();
|
||||||
|
|
||||||
|
// Fill the second delay list,
|
||||||
|
const size_t size2 = sizeof(etl::array_size(delay_times2));
|
||||||
|
etl::list<int, size2> delays2(etl::begin(delay_times2), etl::end(delay_times2));
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
iterate(delays1);
|
||||||
|
iterate(delays2);
|
||||||
|
}
|
||||||
|
}
|
22
components/etl/examples/BlinkList/VisualMicro/BlinkList.sln
Normal file
22
components/etl/examples/BlinkList/VisualMicro/BlinkList.sln
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio 14
|
||||||
|
VisualStudioVersion = 14.0.24720.0
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BlinkList", "BlinkList.vcxproj", "{C5F80730-F44F-4478-BDAE-6634EFC2CA88}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{C5F80730-F44F-4478-BDAE-6634EFC2CA88}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{C5F80730-F44F-4478-BDAE-6634EFC2CA88}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{C5F80730-F44F-4478-BDAE-6634EFC2CA88}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{C5F80730-F44F-4478-BDAE-6634EFC2CA88}.Release|x86.Build.0 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,28 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup>
|
||||||
|
<Filter Include="Source Files">
|
||||||
|
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||||
|
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Header Files">
|
||||||
|
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||||
|
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Resource Files">
|
||||||
|
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||||
|
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||||
|
</Filter>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="..\BlinkList.ino" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="__vm\.VisualMicro.vsarduino.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="__vm\.BlinkList.vsarduino.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
1
components/etl/examples/BlinkList/VisualMicro/__vm/.gitignore
vendored
Normal file
1
components/etl/examples/BlinkList/VisualMicro/__vm/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
*.vsarduino.h
|
1
components/etl/examples/BlinkList/__vm/.gitignore
vendored
Normal file
1
components/etl/examples/BlinkList/__vm/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
*.vmps.xml
|
39
components/etl/examples/Debounce/Debounce.ino
Normal file
39
components/etl/examples/Debounce/Debounce.ino
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
//***********************************************************************************
|
||||||
|
// A debounce demo that reads a key and toggles the LED.
|
||||||
|
// Set the pin to the correct one for your key.
|
||||||
|
//***********************************************************************************
|
||||||
|
|
||||||
|
#include <debounce.h>
|
||||||
|
|
||||||
|
const int SAMPLE_TIME = 1; // The sample time in ms.
|
||||||
|
const int DEBOUNCE_COUNT = 50; // The number of samples that must agree before a key state change is recognised. 50 = 50ms for 1ms sample time.
|
||||||
|
const int HOLD_COUNT = 1000; // The number of samples that must agree before a key held state is recognised. 1000 = 1s for 1ms sample time.
|
||||||
|
const int REPEAT_COUNT = 200; // The number of samples that must agree before a key repeat state is recognised. 200 = 200ms for 1ms sample time.
|
||||||
|
const int KEY = XX; // The pin that the key is attached to.
|
||||||
|
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
// Initialize LED pin as an output and set off.
|
||||||
|
pinMode(LED_BUILTIN , OUTPUT);
|
||||||
|
digitalWrite(LED_BUILTIN, LOW);
|
||||||
|
|
||||||
|
// Initialize KEY pin as an input.
|
||||||
|
pinMode(KEY, INPUT);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop()
|
||||||
|
{
|
||||||
|
static int led_state = LOW;
|
||||||
|
static etl::debounce<DEBOUNCE_COUNT, HOLD_COUNT, REPEAT_COUNT> key_state;
|
||||||
|
|
||||||
|
if (key_state.add(digitalRead(KEY) == HIGH)) // Assumes 'HIGH' is 'pressed' and 'LOW' is 'released'.
|
||||||
|
{
|
||||||
|
if (key_state.is_set())
|
||||||
|
{
|
||||||
|
led_state = (led_state == LOW ? HIGH : LOW); // Toggle the LED state on every validated press or repeat.
|
||||||
|
digitalWrite(LED_BUILTIN, led_state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
delay(SAMPLE_TIME); // Wait 1ms
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
cmake_minimum_required(VERSION 3.5.0)
|
||||||
|
project(FunctionInterruptSimulation)
|
||||||
|
|
||||||
|
add_definitions(-DETL_DEBUG)
|
||||||
|
|
||||||
|
include_directories(${UTPP_INCLUDE_DIRS} ${PROJECT_SOURCE_DIR}/../../include)
|
||||||
|
|
||||||
|
set(SOURCE_FILES FunctionInterruptSimulation.cpp)
|
||||||
|
|
||||||
|
add_executable(FunctionInterruptSimulation ${SOURCE_FILES})
|
||||||
|
target_include_directories(FunctionInterruptSimulation
|
||||||
|
PUBLIC
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}
|
||||||
|
)
|
||||||
|
|
||||||
|
set_property(TARGET FunctionInterruptSimulation PROPERTY CXX_STANDARD 17)
|
||||||
|
|
|
@ -0,0 +1,149 @@
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
#include "etl/delegate.h"
|
||||||
|
#include "etl/delegate_service.h"
|
||||||
|
|
||||||
|
enum VectorId
|
||||||
|
{
|
||||||
|
TIM1_CC_IRQ_HANDLER = 42,
|
||||||
|
TIM2_IRQ_HANDLER = 43,
|
||||||
|
TIM3_IRQ_HANDLER = 44,
|
||||||
|
USART1_IRQ_HANDLER = 52,
|
||||||
|
USART2_IRQ_HANDLER = 53,
|
||||||
|
VECTOR_ID_END,
|
||||||
|
VECTOR_ID_OFFSET = TIM1_CC_IRQ_HANDLER,
|
||||||
|
VECTOR_ID_RANGE = VECTOR_ID_END - VECTOR_ID_OFFSET
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef etl::delegate_service<VECTOR_ID_RANGE, VECTOR_ID_OFFSET> InterruptVectors;
|
||||||
|
|
||||||
|
// Ensure that the callback service is initialised before use.
|
||||||
|
InterruptVectors& GetInterruptVectorsInstance()
|
||||||
|
{
|
||||||
|
static InterruptVectors interruptVectors;
|
||||||
|
|
||||||
|
return interruptVectors;
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C"
|
||||||
|
{
|
||||||
|
InterruptVectors& interruptVectors = GetInterruptVectorsInstance();
|
||||||
|
|
||||||
|
// Function called from the timer1 interrupt vector.
|
||||||
|
void TIM1_CC_IRQHandler()
|
||||||
|
{
|
||||||
|
interruptVectors.call<TIM1_CC_IRQ_HANDLER>();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function called from the timer2 interrupt vector.
|
||||||
|
void TIM2_IRQHandler()
|
||||||
|
{
|
||||||
|
interruptVectors.call<TIM2_IRQ_HANDLER>();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function called from the timer3 interrupt vector.
|
||||||
|
void TIM3_IRQHandler()
|
||||||
|
{
|
||||||
|
interruptVectors.call<TIM3_IRQ_HANDLER>();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function called from the usart1 interrupt vector.
|
||||||
|
void USART1_IRQHandler()
|
||||||
|
{
|
||||||
|
interruptVectors.call<USART1_IRQ_HANDLER>();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function called from the usart2 interrupt vector.
|
||||||
|
void USART2_IRQHandler()
|
||||||
|
{
|
||||||
|
interruptVectors.call<USART2_IRQ_HANDLER>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//********************************
|
||||||
|
// Timer driver.
|
||||||
|
//********************************
|
||||||
|
class Timer
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
// Handler for interrupts from the timer.
|
||||||
|
void InterruptHandler(const size_t id)
|
||||||
|
{
|
||||||
|
std::cout << "Timer interrupt (member) : ID " << id << "\n";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//********************************
|
||||||
|
// Free function timer driver.
|
||||||
|
//********************************
|
||||||
|
void FreeTimerInterruptHandler(const size_t id)
|
||||||
|
{
|
||||||
|
std::cout << "Timer interrupt (free) : ID " << id << "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
//********************************
|
||||||
|
// UART driver.
|
||||||
|
//********************************
|
||||||
|
class Uart
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
// Constructor.
|
||||||
|
Uart(int port_id, size_t interruptId)
|
||||||
|
: port_id(port_id),
|
||||||
|
callback(etl::delegate<void(size_t)>::create<Uart, &Uart::InterruptHandler>(*this))
|
||||||
|
{
|
||||||
|
GetInterruptVectorsInstance().register_delegate(interruptId, callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handler for interrupts from the UART.
|
||||||
|
void InterruptHandler(const size_t id)
|
||||||
|
{
|
||||||
|
std::cout << "UART" << port_id << " : ID " << id << "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
etl::delegate<void(size_t)> callback;
|
||||||
|
|
||||||
|
int port_id;
|
||||||
|
};
|
||||||
|
|
||||||
|
void UnhandledInterrupt(const size_t id)
|
||||||
|
{
|
||||||
|
std::cout << "Unhandled Interrupt : ID " << id << "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Declare the driver instances.
|
||||||
|
Timer timer;
|
||||||
|
Uart uart1(0, USART1_IRQ_HANDLER);
|
||||||
|
Uart uart2(1, USART2_IRQ_HANDLER);
|
||||||
|
|
||||||
|
// Declare a global callback for the timer.
|
||||||
|
// Uses the most efficient callback type for a class, as everything is known at compile time.
|
||||||
|
etl::delegate<void(size_t)> timer_member_callback = etl::delegate<void(size_t)>::create<Timer, timer, &Timer::InterruptHandler>();
|
||||||
|
|
||||||
|
// Declare the callbacks for the free functions.
|
||||||
|
etl::delegate<void(size_t)> timer_free_callback = etl::delegate<void(size_t)>::create<FreeTimerInterruptHandler>();
|
||||||
|
etl::delegate<void(size_t)> unhandled_callback = etl::delegate<void(size_t)>::create<UnhandledInterrupt>();
|
||||||
|
|
||||||
|
//********************************
|
||||||
|
// Test it out.
|
||||||
|
//********************************
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
// Setup the callbacks.
|
||||||
|
InterruptVectors& interruptVectors = GetInterruptVectorsInstance();
|
||||||
|
|
||||||
|
interruptVectors.register_delegate<TIM1_CC_IRQ_HANDLER>(timer_member_callback);
|
||||||
|
interruptVectors.register_delegate<TIM2_IRQ_HANDLER>(timer_free_callback);
|
||||||
|
interruptVectors.register_unhandled_delegate(unhandled_callback);
|
||||||
|
|
||||||
|
// Simulate the interrupts.
|
||||||
|
TIM1_CC_IRQHandler();
|
||||||
|
TIM2_IRQHandler();
|
||||||
|
USART1_IRQHandler();
|
||||||
|
USART2_IRQHandler();
|
||||||
|
TIM3_IRQHandler(); // Unhandled!
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
///\file
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
The MIT License(MIT)
|
||||||
|
|
||||||
|
Embedded Template Library.
|
||||||
|
https://github.com/ETLCPP/etl
|
||||||
|
https://www.etlcpp.com
|
||||||
|
|
||||||
|
Copyright(c) 2017 jwellbelove
|
||||||
|
|
||||||
|
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.
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifndef __ETL_PROFILE_H__
|
||||||
|
#define __ETL_PROFILE_H__
|
||||||
|
|
||||||
|
#define ETL_THROW_EXCEPTIONS
|
||||||
|
#define ETL_VERBOSE_ERRORS
|
||||||
|
#define ETL_CHECK_PUSH_POP
|
||||||
|
#define ETL_ISTRING_REPAIR_ENABLE
|
||||||
|
#define ETL_IVECTOR_REPAIR_ENABLE
|
||||||
|
#define ETL_IDEQUE_REPAIR_ENABLE
|
||||||
|
#define ETL_IN_UNIT_TEST
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#include "profiles/msvc_x86.h"
|
||||||
|
#else
|
||||||
|
#include "profiles/gcc_windows_x86.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1 @@
|
||||||
|
*.VC.opendb
|
|
@ -0,0 +1 @@
|
||||||
|
*.VC.opendb
|
|
@ -0,0 +1,31 @@
|
||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio 15
|
||||||
|
VisualStudioVersion = 15.0.26730.16
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FunctionInterruptSimulation-Delegates", "FunctionInterruptSimulation-Delegates.vcxproj", "{5157DB15-C255-4E47-9FB1-AF388437F90F}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|x64 = Debug|x64
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Release|x64 = Release|x64
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{5157DB15-C255-4E47-9FB1-AF388437F90F}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{5157DB15-C255-4E47-9FB1-AF388437F90F}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{5157DB15-C255-4E47-9FB1-AF388437F90F}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{5157DB15-C255-4E47-9FB1-AF388437F90F}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{5157DB15-C255-4E47-9FB1-AF388437F90F}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{5157DB15-C255-4E47-9FB1-AF388437F90F}.Release|x64.Build.0 = Release|x64
|
||||||
|
{5157DB15-C255-4E47-9FB1-AF388437F90F}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{5157DB15-C255-4E47-9FB1-AF388437F90F}.Release|x86.Build.0 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {260225EB-60CB-44CC-A60C-16A23BBC10EB}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
|
@ -0,0 +1,156 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" ToolsVersion="15.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="Release|Win32">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="..\FunctionInterruptSimulation.cpp" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="..\etl_profile.h" />
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<VCProjectVersion>15.0</VCProjectVersion>
|
||||||
|
<ProjectGuid>{5157DB15-C255-4E47-9FB1-AF388437F90F}</ProjectGuid>
|
||||||
|
<Keyword>Win32Proj</Keyword>
|
||||||
|
<RootNamespace>FunctionInterruptSimulation</RootNamespace>
|
||||||
|
<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v141</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v141</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v141</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v141</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="Shared">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<AdditionalIncludeDirectories>../../../src</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
|
@ -0,0 +1,31 @@
|
||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio 15
|
||||||
|
VisualStudioVersion = 15.0.26730.16
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FunctionInterruptSimulation-Delegates", "FunctionInterruptSimulation-Delegates.vcxproj", "{5157DB15-C255-4E47-9FB1-AF388437F90F}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|x64 = Debug|x64
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Release|x64 = Release|x64
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{5157DB15-C255-4E47-9FB1-AF388437F90F}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{5157DB15-C255-4E47-9FB1-AF388437F90F}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{5157DB15-C255-4E47-9FB1-AF388437F90F}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{5157DB15-C255-4E47-9FB1-AF388437F90F}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{5157DB15-C255-4E47-9FB1-AF388437F90F}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{5157DB15-C255-4E47-9FB1-AF388437F90F}.Release|x64.Build.0 = Release|x64
|
||||||
|
{5157DB15-C255-4E47-9FB1-AF388437F90F}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{5157DB15-C255-4E47-9FB1-AF388437F90F}.Release|x86.Build.0 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {260225EB-60CB-44CC-A60C-16A23BBC10EB}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
|
@ -0,0 +1,157 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" ToolsVersion="15.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="Release|Win32">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="..\FunctionInterruptSimulation.cpp" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="..\etl_profile.h" />
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<VCProjectVersion>15.0</VCProjectVersion>
|
||||||
|
<ProjectGuid>{5157DB15-C255-4E47-9FB1-AF388437F90F}</ProjectGuid>
|
||||||
|
<Keyword>Win32Proj</Keyword>
|
||||||
|
<RootNamespace>FunctionInterruptSimulation</RootNamespace>
|
||||||
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="Shared">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<AdditionalIncludeDirectories>../../../src</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
|
@ -0,0 +1,17 @@
|
||||||
|
cmake_minimum_required(VERSION 3.5.0)
|
||||||
|
project(FunctionInterruptSimulation)
|
||||||
|
|
||||||
|
add_definitions(-DETL_DEBUG)
|
||||||
|
|
||||||
|
include_directories(${UTPP_INCLUDE_DIRS} ${PROJECT_SOURCE_DIR}/../../include)
|
||||||
|
|
||||||
|
set(SOURCE_FILES FunctionInterruptSimulation.cpp)
|
||||||
|
|
||||||
|
add_executable(FunctionInterruptSimulation ${SOURCE_FILES})
|
||||||
|
target_include_directories(FunctionInterruptSimulation
|
||||||
|
PUBLIC
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}
|
||||||
|
)
|
||||||
|
|
||||||
|
set_property(TARGET FunctionInterruptSimulation PROPERTY CXX_STANDARD 17)
|
||||||
|
|
|
@ -0,0 +1,149 @@
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
#include "etl/function.h"
|
||||||
|
#include "etl/callback_service.h"
|
||||||
|
|
||||||
|
enum VectorId
|
||||||
|
{
|
||||||
|
TIM1_CC_IRQ_HANDLER = 42,
|
||||||
|
TIM2_IRQ_HANDLER = 43,
|
||||||
|
TIM3_IRQ_HANDLER = 44,
|
||||||
|
USART1_IRQ_HANDLER = 52,
|
||||||
|
USART2_IRQ_HANDLER = 53,
|
||||||
|
VECTOR_ID_END,
|
||||||
|
VECTOR_ID_OFFSET = TIM1_CC_IRQ_HANDLER,
|
||||||
|
VECTOR_ID_RANGE = VECTOR_ID_END - VECTOR_ID_OFFSET
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef etl::callback_service<VECTOR_ID_RANGE, VECTOR_ID_OFFSET> InterruptVectors;
|
||||||
|
|
||||||
|
// Ensure that the callback service is initialised before use.
|
||||||
|
InterruptVectors& GetInterruptVectorsInstance()
|
||||||
|
{
|
||||||
|
static InterruptVectors interruptVectors;
|
||||||
|
|
||||||
|
return interruptVectors;
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C"
|
||||||
|
{
|
||||||
|
InterruptVectors& interruptVectors = GetInterruptVectorsInstance();
|
||||||
|
|
||||||
|
// Function called from the timer1 interrupt vector.
|
||||||
|
void TIM1_CC_IRQHandler()
|
||||||
|
{
|
||||||
|
interruptVectors.callback<TIM1_CC_IRQ_HANDLER>();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function called from the timer2 interrupt vector.
|
||||||
|
void TIM2_IRQHandler()
|
||||||
|
{
|
||||||
|
interruptVectors.callback<TIM2_IRQ_HANDLER>();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function called from the timer3 interrupt vector.
|
||||||
|
void TIM3_IRQHandler()
|
||||||
|
{
|
||||||
|
interruptVectors.callback<TIM3_IRQ_HANDLER>();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function called from the usart1 interrupt vector.
|
||||||
|
void USART1_IRQHandler()
|
||||||
|
{
|
||||||
|
interruptVectors.callback<USART1_IRQ_HANDLER>();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function called from the usart2 interrupt vector.
|
||||||
|
void USART2_IRQHandler()
|
||||||
|
{
|
||||||
|
interruptVectors.callback<USART2_IRQ_HANDLER>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//********************************
|
||||||
|
// Timer driver.
|
||||||
|
//********************************
|
||||||
|
class Timer
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
// Handler for interrupts from the timer.
|
||||||
|
void InterruptHandler(const size_t id)
|
||||||
|
{
|
||||||
|
std::cout << "Timer interrupt (member) : ID " << id << "\n";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//********************************
|
||||||
|
// Free function timer driver.
|
||||||
|
//********************************
|
||||||
|
void FreeTimerInterruptHandler(const size_t id)
|
||||||
|
{
|
||||||
|
std::cout << "Timer interrupt (free) : ID " << id << "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
//********************************
|
||||||
|
// UART driver.
|
||||||
|
//********************************
|
||||||
|
class Uart
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
// Constructor.
|
||||||
|
Uart(int port_id, int interruptId)
|
||||||
|
: port_id(port_id),
|
||||||
|
callback(*this)
|
||||||
|
{
|
||||||
|
GetInterruptVectorsInstance().register_callback(interruptId, callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handler for interrupts from the UART.
|
||||||
|
void InterruptHandler(const size_t id)
|
||||||
|
{
|
||||||
|
std::cout << "UART" << port_id << " : ID " << id << "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
etl::function_mp<Uart, size_t, &Uart::InterruptHandler> callback;
|
||||||
|
|
||||||
|
int port_id;
|
||||||
|
};
|
||||||
|
|
||||||
|
void UnhandledInterrupt(const size_t id)
|
||||||
|
{
|
||||||
|
std::cout << "Unhandled Interrupt : ID " << id << "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Declare the driver instances.
|
||||||
|
Timer timer;
|
||||||
|
Uart uart1(0, USART1_IRQ_HANDLER);
|
||||||
|
Uart uart2(1, USART2_IRQ_HANDLER);
|
||||||
|
|
||||||
|
// Declare a global callback for the timer.
|
||||||
|
// Uses the most efficient callback type for a class, as everything is known at compile time.
|
||||||
|
etl::function_imp<Timer, size_t, timer, &Timer::InterruptHandler> timer_member_callback;
|
||||||
|
|
||||||
|
// Declare the callbacks for the free functions.
|
||||||
|
etl::function_fp<size_t, FreeTimerInterruptHandler> timer_free_callback;
|
||||||
|
etl::function_fp<size_t, UnhandledInterrupt> unhandled_callback;
|
||||||
|
|
||||||
|
//********************************
|
||||||
|
// Test it out.
|
||||||
|
//********************************
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
// Setup the callbacks.
|
||||||
|
InterruptVectors& interruptVectors = GetInterruptVectorsInstance();
|
||||||
|
|
||||||
|
interruptVectors.register_callback<TIM1_CC_IRQ_HANDLER>(timer_member_callback);
|
||||||
|
interruptVectors.register_callback<TIM2_IRQ_HANDLER>(timer_free_callback);
|
||||||
|
interruptVectors.register_unhandled_callback(unhandled_callback);
|
||||||
|
|
||||||
|
// Simulate the interrupts.
|
||||||
|
TIM1_CC_IRQHandler();
|
||||||
|
TIM2_IRQHandler();
|
||||||
|
USART1_IRQHandler();
|
||||||
|
USART2_IRQHandler();
|
||||||
|
TIM3_IRQHandler(); // Unhandled!
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
///\file
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
The MIT License(MIT)
|
||||||
|
|
||||||
|
Embedded Template Library.
|
||||||
|
https://github.com/ETLCPP/etl
|
||||||
|
https://www.etlcpp.com
|
||||||
|
|
||||||
|
Copyright(c) 2017 jwellbelove
|
||||||
|
|
||||||
|
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.
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifndef __ETL_PROFILE_H__
|
||||||
|
#define __ETL_PROFILE_H__
|
||||||
|
|
||||||
|
#define ETL_THROW_EXCEPTIONS
|
||||||
|
#define ETL_VERBOSE_ERRORS
|
||||||
|
#define ETL_CHECK_PUSH_POP
|
||||||
|
#define ETL_ISTRING_REPAIR_ENABLE
|
||||||
|
#define ETL_IVECTOR_REPAIR_ENABLE
|
||||||
|
#define ETL_IDEQUE_REPAIR_ENABLE
|
||||||
|
#define ETL_IN_UNIT_TEST
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#include "profiles/msvc_x86.h"
|
||||||
|
#else
|
||||||
|
#include "profiles/gcc_windows_x86.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,31 @@
|
||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio 15
|
||||||
|
VisualStudioVersion = 15.0.26730.16
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FunctionInterruptSimulation", "FunctionInterruptSimulation.vcxproj", "{5157DB15-C255-4E47-9FB1-AF388437F90F}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|x64 = Debug|x64
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Release|x64 = Release|x64
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{5157DB15-C255-4E47-9FB1-AF388437F90F}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{5157DB15-C255-4E47-9FB1-AF388437F90F}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{5157DB15-C255-4E47-9FB1-AF388437F90F}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{5157DB15-C255-4E47-9FB1-AF388437F90F}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{5157DB15-C255-4E47-9FB1-AF388437F90F}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{5157DB15-C255-4E47-9FB1-AF388437F90F}.Release|x64.Build.0 = Release|x64
|
||||||
|
{5157DB15-C255-4E47-9FB1-AF388437F90F}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{5157DB15-C255-4E47-9FB1-AF388437F90F}.Release|x86.Build.0 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {260225EB-60CB-44CC-A60C-16A23BBC10EB}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
|
@ -0,0 +1,156 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" ToolsVersion="15.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="Release|Win32">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="..\FunctionInterruptSimulation.cpp" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="..\etl_profile.h" />
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<VCProjectVersion>15.0</VCProjectVersion>
|
||||||
|
<ProjectGuid>{5157DB15-C255-4E47-9FB1-AF388437F90F}</ProjectGuid>
|
||||||
|
<Keyword>Win32Proj</Keyword>
|
||||||
|
<RootNamespace>FunctionInterruptSimulation</RootNamespace>
|
||||||
|
<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v141</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v141</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v141</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v141</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="Shared">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<AdditionalIncludeDirectories>../../../src</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<AdditionalIncludeDirectories>../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
|
@ -0,0 +1,27 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup>
|
||||||
|
<Filter Include="Source Files">
|
||||||
|
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||||
|
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Header Files">
|
||||||
|
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||||
|
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Resource Files">
|
||||||
|
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||||
|
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||||
|
</Filter>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="..\FunctionInterruptSimulation.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="..\etl_profile.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
12
components/etl/examples/MutexMessageRouter/CMakeLists.txt
Normal file
12
components/etl/examples/MutexMessageRouter/CMakeLists.txt
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
cmake_minimum_required(VERSION 3.5.0)
|
||||||
|
project(etl_mutex_router LANGUAGES CXX)
|
||||||
|
|
||||||
|
add_executable(etl_mutex_router MutexMessageRouter.cpp)
|
||||||
|
|
||||||
|
target_compile_definitions(etl_mutex_router PRIVATE -DETL_DEBUG)
|
||||||
|
|
||||||
|
target_include_directories(etl_mutex_router
|
||||||
|
PRIVATE
|
||||||
|
${PROJECT_SOURCE_DIR}/../../include)
|
||||||
|
|
||||||
|
set_property(TARGET etl_mutex_router PROPERTY CXX_STANDARD 17)
|
|
@ -0,0 +1,110 @@
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <thread>
|
||||||
|
#include <atomic>
|
||||||
|
#include <string>
|
||||||
|
#include <chrono>
|
||||||
|
|
||||||
|
#include "etl/mutex.h"
|
||||||
|
#include "etl/message.h"
|
||||||
|
#include "etl/message_router.h"
|
||||||
|
|
||||||
|
//*************************************
|
||||||
|
struct Message1 : public etl::message<1>
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
//*************************************
|
||||||
|
struct Message2 : public etl::message<2>
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
//*************************************
|
||||||
|
class Router : public etl::message_router<Router, Message1, Message2>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
using base_t = etl::message_router<Router, Message1, Message2>;
|
||||||
|
|
||||||
|
//*****************
|
||||||
|
// Overridden receive that protects access with mutexes
|
||||||
|
void receive(const etl::imessage& msg) override
|
||||||
|
{
|
||||||
|
access.lock();
|
||||||
|
base_t::receive(msg); // Send it to the message_router's receive.
|
||||||
|
access.unlock();
|
||||||
|
}
|
||||||
|
|
||||||
|
//*****************
|
||||||
|
void on_receive(const Message1&)
|
||||||
|
{
|
||||||
|
result.append("Message1\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
//*****************
|
||||||
|
void on_receive(const Message2&)
|
||||||
|
{
|
||||||
|
result.append("Message2\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
//*****************
|
||||||
|
void on_receive_unknown(const etl::imessage&)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string result;
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
etl::mutex access;
|
||||||
|
};
|
||||||
|
|
||||||
|
//*************************************
|
||||||
|
etl::atomic<bool> start = false;
|
||||||
|
Router router;
|
||||||
|
|
||||||
|
//*************************************
|
||||||
|
void thread1()
|
||||||
|
{
|
||||||
|
using namespace std::chrono_literals;
|
||||||
|
|
||||||
|
while (!start.load());
|
||||||
|
|
||||||
|
for (int i = 0; i < 10; ++i)
|
||||||
|
{
|
||||||
|
std::this_thread::sleep_for(1ms);
|
||||||
|
router.receive(Message1());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//*************************************
|
||||||
|
void thread2()
|
||||||
|
{
|
||||||
|
using namespace std::chrono_literals;
|
||||||
|
|
||||||
|
while (!start.load());
|
||||||
|
|
||||||
|
for (int i = 0; i < 10; ++i)
|
||||||
|
{
|
||||||
|
std::this_thread::sleep_for(1ms);
|
||||||
|
router.receive(Message2());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//*************************************
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
std::thread t1(thread1);
|
||||||
|
std::thread t2(thread2);
|
||||||
|
|
||||||
|
start.store(true);
|
||||||
|
|
||||||
|
t1.join();
|
||||||
|
t2.join();
|
||||||
|
|
||||||
|
std::cout << router.result << "\n";
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 17
|
||||||
|
VisualStudioVersion = 17.7.34009.444
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MutexMessageRouter", "MutexMessageRouter.vcxproj", "{23AD62D5-C3B6-48B0-BF0D-E349FEB3F338}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|x64 = Debug|x64
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Release|x64 = Release|x64
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{23AD62D5-C3B6-48B0-BF0D-E349FEB3F338}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{23AD62D5-C3B6-48B0-BF0D-E349FEB3F338}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{23AD62D5-C3B6-48B0-BF0D-E349FEB3F338}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{23AD62D5-C3B6-48B0-BF0D-E349FEB3F338}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{23AD62D5-C3B6-48B0-BF0D-E349FEB3F338}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{23AD62D5-C3B6-48B0-BF0D-E349FEB3F338}.Release|x64.Build.0 = Release|x64
|
||||||
|
{23AD62D5-C3B6-48B0-BF0D-E349FEB3F338}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{23AD62D5-C3B6-48B0-BF0D-E349FEB3F338}.Release|x86.Build.0 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {8AA5CBFE-B15F-4262-97AE-C12F7266BD85}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
|
@ -0,0 +1,140 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug|Win32">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|Win32">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<VCProjectVersion>17.0</VCProjectVersion>
|
||||||
|
<Keyword>Win32Proj</Keyword>
|
||||||
|
<ProjectGuid>{23ad62d5-c3b6-48b0-bf0d-e349feb3f338}</ProjectGuid>
|
||||||
|
<RootNamespace>MutexMessageRouter</RootNamespace>
|
||||||
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="Shared">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<AdditionalIncludeDirectories>../../include;</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<AdditionalIncludeDirectories>../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="MutexMessageRouter.cpp" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Text Include="CMakeLists.txt" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
17
components/etl/examples/QueuedFSM/CMakeLists.txt
Normal file
17
components/etl/examples/QueuedFSM/CMakeLists.txt
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
cmake_minimum_required(VERSION 3.5.0)
|
||||||
|
project(queued_fsm)
|
||||||
|
|
||||||
|
add_definitions(-DETL_DEBUG)
|
||||||
|
|
||||||
|
include_directories(${UTPP_INCLUDE_DIRS} ${PROJECT_SOURCE_DIR}/../../include)
|
||||||
|
|
||||||
|
set(SOURCE_FILES QueuedFSM.cpp)
|
||||||
|
|
||||||
|
add_executable(queued_fsm ${SOURCE_FILES})
|
||||||
|
target_include_directories(queued_fsm
|
||||||
|
PUBLIC
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}
|
||||||
|
)
|
||||||
|
|
||||||
|
set_property(TARGET queued_fsm PROPERTY CXX_STANDARD 17)
|
||||||
|
|
288
components/etl/examples/QueuedFSM/QueuedFSM.cpp
Normal file
288
components/etl/examples/QueuedFSM/QueuedFSM.cpp
Normal file
|
@ -0,0 +1,288 @@
|
||||||
|
/******************************************************************************
|
||||||
|
The MIT License(MIT)
|
||||||
|
|
||||||
|
Embedded Template Library.
|
||||||
|
https://github.com/ETLCPP/etl
|
||||||
|
https://www.etlcpp.com
|
||||||
|
|
||||||
|
Copyright(c) 2020 jwellbelove
|
||||||
|
|
||||||
|
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.
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
//*****************************************************************************
|
||||||
|
// This example demonstrates the basic method to queue messages to an etl::fsm
|
||||||
|
// derived class.
|
||||||
|
//*****************************************************************************
|
||||||
|
|
||||||
|
#include "etl/queue.h"
|
||||||
|
#include "etl/fsm.h"
|
||||||
|
#include "etl/message_packet.h"
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
//*****************************************************************************
|
||||||
|
// The messages.
|
||||||
|
//*****************************************************************************
|
||||||
|
struct Message1 : public etl::message<1>
|
||||||
|
{
|
||||||
|
Message1(int i_)
|
||||||
|
: i(i_)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
int i;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Message2 : public etl::message<2>
|
||||||
|
{
|
||||||
|
Message2(double d_)
|
||||||
|
: d(d_)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
double d;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Message3 : public etl::message<3>
|
||||||
|
{
|
||||||
|
Message3(const std::string& s_)
|
||||||
|
: s(s_)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string s;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Message4 : public etl::message<4>
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
STATE1,
|
||||||
|
STATE2
|
||||||
|
};
|
||||||
|
|
||||||
|
//*****************************************************************************
|
||||||
|
// The Finite State Machine.
|
||||||
|
//*****************************************************************************
|
||||||
|
class Fsm : public etl::fsm
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
//***************************************************************************
|
||||||
|
// Constructor.
|
||||||
|
//***************************************************************************
|
||||||
|
Fsm()
|
||||||
|
: fsm(1)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//***************************************************************************
|
||||||
|
// The overridden virtual receive function.
|
||||||
|
//***************************************************************************
|
||||||
|
void receive(const etl::imessage& msg_) override
|
||||||
|
{
|
||||||
|
if (accepts(msg_))
|
||||||
|
{
|
||||||
|
// Place in queue.
|
||||||
|
queue.emplace(msg_);
|
||||||
|
|
||||||
|
std::cout << "Queueing message " << int(msg_.get_message_id()) << std::endl;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
std::cout << "Ignoring message " << int(msg_.get_message_id()) << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//***************************************************************************
|
||||||
|
// The method to call to handle any queued messages.
|
||||||
|
//***************************************************************************
|
||||||
|
void process_queue()
|
||||||
|
{
|
||||||
|
while (!queue.empty())
|
||||||
|
{
|
||||||
|
message_packet& packet = queue.front();
|
||||||
|
etl::imessage& msg = packet.get();
|
||||||
|
std::cout << "Processing message " << int(msg.get_message_id()) << std::endl;
|
||||||
|
|
||||||
|
// Call the base class's receive function.
|
||||||
|
// This will route it to the correct 'on_event' handler.
|
||||||
|
etl::fsm::receive(msg);
|
||||||
|
|
||||||
|
queue.pop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
typedef etl::message_packet< Message1, Message2, Message3, Message4> message_packet;
|
||||||
|
|
||||||
|
// The queue of message items.
|
||||||
|
etl::queue<message_packet, 10> queue;
|
||||||
|
};
|
||||||
|
|
||||||
|
//*****************************************************************************
|
||||||
|
// State 1.
|
||||||
|
//*****************************************************************************
|
||||||
|
class State1 : public etl::fsm_state<Fsm, State1, STATE1, Message1, Message2, Message3>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
//***************************************************************************
|
||||||
|
// When we enter this state.
|
||||||
|
//***************************************************************************
|
||||||
|
etl::fsm_state_id_t on_enter_state() override
|
||||||
|
{
|
||||||
|
std::cout << " S1 : Enter state" << std::endl;
|
||||||
|
return STATE1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//***************************************************************************
|
||||||
|
void on_exit_state() override
|
||||||
|
{
|
||||||
|
std::cout << " S1 : Exit state" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
//***************************************************************************
|
||||||
|
etl::fsm_state_id_t on_event(const Message1& msg)
|
||||||
|
{
|
||||||
|
std::cout << " S1 : Received message " << int(msg.get_message_id()) << " : '" << msg.i << "'" << std::endl;
|
||||||
|
std::cout.flush();
|
||||||
|
return STATE1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//***************************************************************************
|
||||||
|
etl::fsm_state_id_t on_event(const Message2& msg)
|
||||||
|
{
|
||||||
|
std::cout << " S1 : Received message " << int(msg.get_message_id()) << " : '" << msg.d << "'" << std::endl;
|
||||||
|
std::cout.flush();
|
||||||
|
return STATE1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//***************************************************************************
|
||||||
|
etl::fsm_state_id_t on_event(const Message3& msg)
|
||||||
|
{
|
||||||
|
std::cout << " S1 : Received message " << int(msg.get_message_id()) << " : '" << msg.s << "'" << std::endl;
|
||||||
|
std::cout.flush();
|
||||||
|
return STATE1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//***************************************************************************
|
||||||
|
etl::fsm_state_id_t on_event_unknown(const etl::imessage& msg)
|
||||||
|
{
|
||||||
|
std::cout << " S1 : Received unknown message " << int(msg.get_message_id()) << std::endl;
|
||||||
|
std::cout.flush();
|
||||||
|
return STATE2;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//*****************************************************************************
|
||||||
|
// State 2.
|
||||||
|
//*****************************************************************************
|
||||||
|
class State2 : public etl::fsm_state<Fsm, State2, STATE2, Message1, Message2, Message3>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
//***************************************************************************
|
||||||
|
etl::fsm_state_id_t on_enter_state() override
|
||||||
|
{
|
||||||
|
std::cout << " S2 : Enter state" << std::endl;
|
||||||
|
return STATE2;
|
||||||
|
}
|
||||||
|
|
||||||
|
//***************************************************************************
|
||||||
|
// When we enter this state.
|
||||||
|
//***************************************************************************
|
||||||
|
void on_exit_state() override
|
||||||
|
{
|
||||||
|
std::cout << " S2 : Exit state" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
//***************************************************************************
|
||||||
|
etl::fsm_state_id_t on_event(const Message1& msg)
|
||||||
|
{
|
||||||
|
std::cout << " S2 : Received message " << int(msg.get_message_id()) << " : '" << msg.i << "'" << std::endl;
|
||||||
|
return STATE2;
|
||||||
|
}
|
||||||
|
|
||||||
|
//***************************************************************************
|
||||||
|
etl::fsm_state_id_t on_event(const Message2& msg)
|
||||||
|
{
|
||||||
|
std::cout << " S2 : Received message " << int(msg.get_message_id()) << " : '" << msg.d << "'" << std::endl;
|
||||||
|
return STATE2;
|
||||||
|
}
|
||||||
|
|
||||||
|
//***************************************************************************
|
||||||
|
etl::fsm_state_id_t on_event(const Message3& msg)
|
||||||
|
{
|
||||||
|
std::cout << " S2 : Received message " << int(msg.get_message_id()) << " : '" << msg.s << "'" << std::endl;
|
||||||
|
return STATE2;
|
||||||
|
}
|
||||||
|
|
||||||
|
//***************************************************************************
|
||||||
|
etl::fsm_state_id_t on_event_unknown(const etl::imessage& msg)
|
||||||
|
{
|
||||||
|
std::cout << " S2 : Received unknown message " << int(msg.get_message_id()) << std::endl;
|
||||||
|
return STATE1;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//*****************************************************************************
|
||||||
|
// The test application.
|
||||||
|
//*****************************************************************************
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
Fsm fsm;
|
||||||
|
|
||||||
|
State1 state1;
|
||||||
|
State2 state2;
|
||||||
|
|
||||||
|
// The list of states.
|
||||||
|
etl::ifsm_state* state_list[] = { &state1, &state2 };
|
||||||
|
|
||||||
|
// Define some messages.
|
||||||
|
Message1 m1(1);
|
||||||
|
Message2 m2(1.2);
|
||||||
|
Message3 m3("Hello");
|
||||||
|
|
||||||
|
// Set up the FSM
|
||||||
|
fsm.set_states(state_list, 2);
|
||||||
|
fsm.start();
|
||||||
|
|
||||||
|
// Queue all of the messages.
|
||||||
|
etl::send_message(fsm, m1);
|
||||||
|
etl::send_message(fsm, Message1(2));
|
||||||
|
etl::send_message(fsm, m2);
|
||||||
|
etl::send_message(fsm, Message2(3.4));
|
||||||
|
etl::send_message(fsm, m3);
|
||||||
|
etl::send_message(fsm, Message3("World"));
|
||||||
|
etl::send_message(fsm, Message4());
|
||||||
|
|
||||||
|
std::cout << std::endl;
|
||||||
|
|
||||||
|
// De-queue them
|
||||||
|
fsm.process_queue();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
43
components/etl/examples/QueuedFSM/etl_profile.h
Normal file
43
components/etl/examples/QueuedFSM/etl_profile.h
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
///\file
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
The MIT License(MIT)
|
||||||
|
|
||||||
|
Embedded Template Library.
|
||||||
|
https://github.com/ETLCPP/etl
|
||||||
|
https://www.etlcpp.com
|
||||||
|
|
||||||
|
Copyright(c) 2020 jwellbelove
|
||||||
|
|
||||||
|
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.
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifndef __ETL_PROFILE_H__
|
||||||
|
#define __ETL_PROFILE_H__
|
||||||
|
|
||||||
|
#define ETL_THROW_EXCEPTIONS
|
||||||
|
#define ETL_VERBOSE_ERRORS
|
||||||
|
|
||||||
|
#if defined(_MSC_VER)
|
||||||
|
#include "etl/profiles/msvc_x86.h"
|
||||||
|
#elif defined(__GNUC__)
|
||||||
|
#include "etl/profiles/gcc_generic.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
30
components/etl/examples/QueuedFSM/vs2019/QueuedFSM.sln
Normal file
30
components/etl/examples/QueuedFSM/vs2019/QueuedFSM.sln
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio 15
|
||||||
|
VisualStudioVersion = 15.0.26730.10
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "QueuedFSM", "QueuedFSM.vcxproj", "{2BB47D48-5EFC-4C38-B2BE-002172F00E3B}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|x64 = Debug|x64
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Release|x64 = Release|x64
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{2BB47D48-5EFC-4C38-B2BE-002172F00E3B}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{2BB47D48-5EFC-4C38-B2BE-002172F00E3B}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{2BB47D48-5EFC-4C38-B2BE-002172F00E3B}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{2BB47D48-5EFC-4C38-B2BE-002172F00E3B}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{2BB47D48-5EFC-4C38-B2BE-002172F00E3B}.Release|x64.Build.0 = Release|x64
|
||||||
|
{2BB47D48-5EFC-4C38-B2BE-002172F00E3B}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{2BB47D48-5EFC-4C38-B2BE-002172F00E3B}.Release|x86.Build.0 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {98B87835-6672-45D4-95BF-CC5C22C87D2C}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
160
components/etl/examples/QueuedFSM/vs2019/QueuedFSM.vcxproj
Normal file
160
components/etl/examples/QueuedFSM/vs2019/QueuedFSM.vcxproj
Normal file
|
@ -0,0 +1,160 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" ToolsVersion="15.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="Release|Win32">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<VCProjectVersion>15.0</VCProjectVersion>
|
||||||
|
<ProjectGuid>{2BB47D48-5EFC-4C38-B2BE-002172F00E3B}</ProjectGuid>
|
||||||
|
<Keyword>Win32Proj</Keyword>
|
||||||
|
<RootNamespace>QueuedFSM</RootNamespace>
|
||||||
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="Shared">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<AdditionalIncludeDirectories>../../../include;../vs2017</AdditionalIncludeDirectories>
|
||||||
|
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<AdditionalIncludeDirectories>../../../include;../vs2017</AdditionalIncludeDirectories>
|
||||||
|
<PrecompiledHeaderFile />
|
||||||
|
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="..\QueuedFSM.cpp" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="..\etl_profile.h" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
|
@ -0,0 +1,27 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup>
|
||||||
|
<Filter Include="Source Files">
|
||||||
|
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||||
|
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Header Files">
|
||||||
|
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||||
|
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Resource Files">
|
||||||
|
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||||
|
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||||
|
</Filter>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="..\QueuedFSM.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="..\etl_profile.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
17
components/etl/examples/QueuedMessageRouter/CMakeLists.txt
Normal file
17
components/etl/examples/QueuedMessageRouter/CMakeLists.txt
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
cmake_minimum_required(VERSION 3.5.0)
|
||||||
|
project(queued_message_router)
|
||||||
|
|
||||||
|
add_definitions(-DETL_DEBUG)
|
||||||
|
|
||||||
|
include_directories(${UTPP_INCLUDE_DIRS} ${PROJECT_SOURCE_DIR}/../../include)
|
||||||
|
|
||||||
|
set(SOURCE_FILES QueuedMessageRouter.cpp)
|
||||||
|
|
||||||
|
add_executable(queued_message_router ${SOURCE_FILES})
|
||||||
|
target_include_directories(queued_message_router
|
||||||
|
PUBLIC
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}
|
||||||
|
)
|
||||||
|
|
||||||
|
set_property(TARGET queued_message_router PROPERTY CXX_STANDARD 17)
|
||||||
|
|
|
@ -0,0 +1,149 @@
|
||||||
|
|
||||||
|
#include "etl/queue.h"
|
||||||
|
#include "etl/message_router.h"
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
//*****************************************************************************
|
||||||
|
// The messages.
|
||||||
|
//*****************************************************************************
|
||||||
|
struct Message1 : public etl::message<1>
|
||||||
|
{
|
||||||
|
Message1(int i_)
|
||||||
|
: i(i_)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
int i;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Message2 : public etl::message<2>
|
||||||
|
{
|
||||||
|
Message2(double d_)
|
||||||
|
: d(d_)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
double d;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Message3 : public etl::message<3>
|
||||||
|
{
|
||||||
|
Message3(const std::string& s_)
|
||||||
|
: s(s_)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string s;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Message4 : public etl::message<4>
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
//*****************************************************************************
|
||||||
|
// The message router.
|
||||||
|
// Handles message types Message1, Message2, Message3.
|
||||||
|
//*****************************************************************************
|
||||||
|
class Router : public etl::message_router<Router, Message1, Message2, Message3>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
typedef etl::message_router<Router, Message1, Message2, Message3> Base_t;
|
||||||
|
|
||||||
|
//***************************************************************************
|
||||||
|
Router()
|
||||||
|
: message_router(1)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//***************************************************************************
|
||||||
|
// Override the base class's receive function.
|
||||||
|
void receive(const etl::imessage& msg_)
|
||||||
|
{
|
||||||
|
if (accepts(msg_))
|
||||||
|
{
|
||||||
|
// Place in queue.
|
||||||
|
queue.emplace(msg_);
|
||||||
|
|
||||||
|
std::cout << "Queueing message " << int(msg_.get_message_id()) << std::endl;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
std::cout << "Ignoring message " << int(msg_.get_message_id()) << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//***************************************************************************
|
||||||
|
void process_queue()
|
||||||
|
{
|
||||||
|
while (!queue.empty())
|
||||||
|
{
|
||||||
|
message_packet& packet = queue.front();
|
||||||
|
etl::imessage& msg = packet.get();
|
||||||
|
std::cout << "Processing message " << int(msg.get_message_id()) << std::endl;
|
||||||
|
|
||||||
|
// Call the base class's receive function.
|
||||||
|
// This will route it to the correct on_receive handler.
|
||||||
|
Base_t::receive(msg);
|
||||||
|
|
||||||
|
queue.pop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//***************************************************************************
|
||||||
|
void on_receive(const Message1& msg)
|
||||||
|
{
|
||||||
|
std::cout << " Received message " << int(msg.get_message_id()) << " : '" << msg.i << "'" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
//***************************************************************************
|
||||||
|
void on_receive(const Message2& msg)
|
||||||
|
{
|
||||||
|
std::cout << " Received message " << int(msg.get_message_id()) << " : '" << msg.d << "'" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
//***************************************************************************
|
||||||
|
void on_receive(const Message3& msg)
|
||||||
|
{
|
||||||
|
std::cout << " Received message " << int(msg.get_message_id()) << " : '" << msg.s << "'" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
//***************************************************************************
|
||||||
|
void on_receive_unknown(const etl::imessage& msg)
|
||||||
|
{
|
||||||
|
std::cout << " Received unknown message " << int(msg.get_message_id()) << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
etl::queue<message_packet, 10> queue;
|
||||||
|
};
|
||||||
|
|
||||||
|
//*****************************************************************************
|
||||||
|
// The test application.
|
||||||
|
//*****************************************************************************
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
Router router;
|
||||||
|
|
||||||
|
Message1 m1(1);
|
||||||
|
Message2 m2(1.2);
|
||||||
|
Message3 m3("Hello");
|
||||||
|
|
||||||
|
etl::send_message(router, m1);
|
||||||
|
etl::send_message(router, Message1(2));
|
||||||
|
etl::send_message(router, m2);
|
||||||
|
etl::send_message(router, Message2(3.4));
|
||||||
|
etl::send_message(router, m3);
|
||||||
|
etl::send_message(router, Message3("World"));
|
||||||
|
etl::send_message(router, Message4());
|
||||||
|
|
||||||
|
std::cout << std::endl;
|
||||||
|
|
||||||
|
router.process_queue();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue