mirror of
https://github.com/ETLCPP/etl.git
synced 2026-06-29 22:08:45 +08:00
Merge branch 'development'
This commit is contained in:
commit
36b1f094e2
6
.github/workflows/clang.yml
vendored
6
.github/workflows/clang.yml
vendored
@ -22,6 +22,7 @@ jobs:
|
||||
sudo apt-get install -y "clang-9" "lldb-9" "lld-9" "clang-format-9"
|
||||
export CC=clang-9
|
||||
export CXX=clang++-9
|
||||
git fetch --tags
|
||||
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 ./
|
||||
clang --version
|
||||
make
|
||||
@ -41,6 +42,7 @@ jobs:
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
git fetch --tags
|
||||
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03=OFF ./
|
||||
gcc --version
|
||||
make
|
||||
@ -64,6 +66,7 @@ jobs:
|
||||
sudo apt-get install -y "clang-9" "lldb-9" "lld-9" "clang-format-9"
|
||||
export CC=clang-9
|
||||
export CXX=clang++-9
|
||||
git fetch --tags
|
||||
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 ./
|
||||
clang --version
|
||||
make
|
||||
@ -85,6 +88,7 @@ jobs:
|
||||
run: |
|
||||
export CC=clang
|
||||
export CXX=clang++
|
||||
git fetch --tags
|
||||
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 ./
|
||||
clang --version
|
||||
make
|
||||
@ -106,6 +110,7 @@ jobs:
|
||||
run: |
|
||||
export CC=clang
|
||||
export CXX=clang++
|
||||
git fetch --tags
|
||||
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 ./
|
||||
clang --version
|
||||
make
|
||||
@ -127,6 +132,7 @@ jobs:
|
||||
run: |
|
||||
export CC=clang
|
||||
export CXX=clang++
|
||||
git fetch --tags
|
||||
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 ./
|
||||
clang --version
|
||||
make
|
||||
|
||||
3
.github/workflows/gcc.yml
vendored
3
.github/workflows/gcc.yml
vendored
@ -18,6 +18,7 @@ jobs:
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
git fetch --tags
|
||||
cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03=OFF ./
|
||||
gcc --version
|
||||
make
|
||||
@ -37,6 +38,7 @@ jobs:
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
git fetch --tags
|
||||
cmake -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03=OFF ./
|
||||
gcc --version
|
||||
make
|
||||
@ -56,6 +58,7 @@ jobs:
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
git fetch --tags
|
||||
cmake -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03=ON ./
|
||||
gcc --version
|
||||
make
|
||||
|
||||
3
.github/workflows/vs2019.yml
vendored
3
.github/workflows/vs2019.yml
vendored
@ -21,6 +21,7 @@ jobs:
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
git fetch --tags
|
||||
cmake -G "Visual Studio 16 2019" -AWin32 -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03=OFF ./
|
||||
MSBuild.exe -version
|
||||
MSBuild.exe .\etl.sln
|
||||
@ -42,6 +43,7 @@ jobs:
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
git fetch --tags
|
||||
cmake -G "Visual Studio 16 2019" -AWin32 -DBUILD_TESTS=ON -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03=OFF ./
|
||||
MSBuild.exe -version
|
||||
MSBuild.exe .\etl.sln
|
||||
@ -64,6 +66,7 @@ jobs:
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
git fetch --tags
|
||||
cmake -G "Visual Studio 16 2019" -AWin32 -DBUILD_TESTS=ON -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF -DETL_FORCE_TEST_CPP03=ON ./
|
||||
MSBuild.exe -version
|
||||
MSBuild.exe .\etl.sln
|
||||
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@ -211,6 +211,8 @@ $RECYCLE.BIN/
|
||||
## Python
|
||||
#############
|
||||
|
||||
/venv
|
||||
|
||||
*.py[cod]
|
||||
|
||||
# Packages
|
||||
@ -222,6 +224,7 @@ eggs/
|
||||
parts/
|
||||
var/
|
||||
sdist/
|
||||
|
||||
develop-eggs/
|
||||
.installed.cfg
|
||||
|
||||
|
||||
@ -11,6 +11,7 @@ stages:
|
||||
Build ETL:
|
||||
stage: build
|
||||
script:
|
||||
- git fetch --tags
|
||||
- cmake -DBUILD_TESTS=ON ./
|
||||
- make
|
||||
artifacts:
|
||||
|
||||
@ -2,7 +2,12 @@
|
||||
# The Embedded Template Library (https://www.etlcpp.com/)
|
||||
#######################################################################
|
||||
cmake_minimum_required(VERSION 3.5.0)
|
||||
project(etl)
|
||||
|
||||
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/helpers.cmake)
|
||||
|
||||
determine_version_with_git()
|
||||
|
||||
project(etl VERSION ${ETL_VERSION})
|
||||
|
||||
option(BUILD_TESTS "Build unit tests" OFF)
|
||||
option(NO_STL "No STL" OFF)
|
||||
@ -11,16 +16,44 @@ add_library(${PROJECT_NAME} INTERFACE)
|
||||
|
||||
target_include_directories(${PROJECT_NAME} SYSTEM INTERFACE
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
||||
$<INSTALL_INTERFACE: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})
|
||||
install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}Config)
|
||||
install(EXPORT ${PROJECT_NAME}Config DESTINATION lib/cmake/${PROJECT_NAME})
|
||||
install(DIRECTORY include/${PROJECT_NAME} DESTINATION include)
|
||||
# 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
|
||||
write_basic_package_version_file(
|
||||
"${PROJECT_NAME}ConfigVersion.cmake"
|
||||
COMPATIBILITY SameMajorVersion
|
||||
)
|
||||
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)
|
||||
|
||||
@ -1,103 +0,0 @@
|
||||
|
||||
import shutil
|
||||
import os
|
||||
|
||||
# Assumes this folder structure.
|
||||
# Folder Variable
|
||||
# ---------------------------------------
|
||||
# etl etl_dir
|
||||
# arduino arduino_dir
|
||||
# include include_dir
|
||||
# etl-arduino etl_arduino_dir
|
||||
# src etl_arduino_src_dir
|
||||
|
||||
print('')
|
||||
print('Copy ETL files to the etl-arduino repository')
|
||||
print('')
|
||||
|
||||
# Get the current path of the script
|
||||
arduino_dir = os.path.dirname(__file__)
|
||||
print('arduino_dir = ', arduino_dir)
|
||||
|
||||
# Get the root folder of the ETL
|
||||
etl_dir = os.path.dirname(arduino_dir)
|
||||
print('etl_dir = ', etl_dir)
|
||||
|
||||
# Get the ETL repository folder
|
||||
include_dir = os.path.join(etl_dir, 'include')
|
||||
print('include_dir = ', include_dir)
|
||||
|
||||
# Get the ETL arduino_examples folder
|
||||
arduino_examples_dir = os.path.join(arduino_dir, 'examples')
|
||||
print('examples_dir = ', arduino_examples_dir)
|
||||
|
||||
# Get the root folder of both repositories
|
||||
common_dir = os.path.dirname(etl_dir)
|
||||
print('common_dir = ', common_dir)
|
||||
|
||||
# Get the ETL Arduino repository folder
|
||||
etl_arduino_dir = os.path.join(common_dir, 'etl-arduino')
|
||||
print('etl_arduino_dir = ', etl_arduino_dir)
|
||||
|
||||
# Get the ETL Arduino src repository folder
|
||||
etl_arduino_src_dir = os.path.join(etl_arduino_dir, 'src')
|
||||
print('etl_arduino_src_dir = ', etl_arduino_src_dir)
|
||||
|
||||
# Get the ETL Arduino examples repository folder
|
||||
etl_arduino_examples_dir = os.path.join(etl_arduino_dir, 'examples')
|
||||
print('etl_arduino_examples_dir = ', etl_arduino_examples_dir)
|
||||
|
||||
print('')
|
||||
|
||||
# Copy the library properties
|
||||
src_filename = 'library-arduino.properties'
|
||||
dst_filename = 'library.properties'
|
||||
source = os.path.join(arduino_dir, src_filename)
|
||||
destination = os.path.join(etl_arduino_dir, dst_filename)
|
||||
print('Copy the library properties')
|
||||
print(' From :', source)
|
||||
print(' To :', destination)
|
||||
shutil.copyfile(source, destination)
|
||||
|
||||
print('')
|
||||
|
||||
# Copy the library json
|
||||
src_filename = 'library-arduino.json'
|
||||
dst_filename = 'library.json'
|
||||
source = os.path.join(arduino_dir, src_filename)
|
||||
destination = os.path.join(etl_arduino_dir, dst_filename)
|
||||
print('Copy the library json')
|
||||
print(' From :', source)
|
||||
print(' To :', destination)
|
||||
shutil.copyfile(source, destination)
|
||||
|
||||
print('')
|
||||
|
||||
# Copy the Arduino ETL header
|
||||
filename = 'Embedded_Template_Library.h'
|
||||
source = os.path.join(arduino_dir, filename)
|
||||
destination = os.path.join(etl_arduino_src_dir, filename)
|
||||
print('Copy the Arduino ETL header')
|
||||
print(' From :', source)
|
||||
print(' To :', destination)
|
||||
shutil.copyfile(source, destination)
|
||||
|
||||
print('')
|
||||
|
||||
# Copy the ETL headers
|
||||
source = include_dir
|
||||
destination = etl_arduino_src_dir
|
||||
print('Copy the ETL headers')
|
||||
print(' From :', source)
|
||||
print(' To :', destination)
|
||||
shutil.copytree(source, destination, dirs_exist_ok = True)
|
||||
|
||||
print('')
|
||||
|
||||
# Copy the ETL arduino_examples
|
||||
source = arduino_examples_dir
|
||||
destination = etl_arduino_examples_dir
|
||||
print('Copy the ETL Arduino examples')
|
||||
print(' From :', source)
|
||||
print(' To :', destination)
|
||||
shutil.copytree(source, destination, dirs_exist_ok = True)
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "Embedded Template Library - Arduino",
|
||||
"version": "20.27.1",
|
||||
"version": "20.27.2",
|
||||
"authors": {
|
||||
"name": "John Wellbelove",
|
||||
"email": "john.wellbelove@etlcpp.com"
|
||||
@ -16,6 +16,24 @@
|
||||
"build": {
|
||||
"includeDir": "include"
|
||||
},
|
||||
"export": {
|
||||
"include": [
|
||||
"include",
|
||||
"examples",
|
||||
"LICENSE",
|
||||
"README.md"
|
||||
],
|
||||
"exclude": [
|
||||
"include/etl/experimental",
|
||||
"include/etl/deprecated",
|
||||
"**/__vm",
|
||||
"**/.vs",
|
||||
"**/*.filters",
|
||||
"**/*.log",
|
||||
"**/*.tmp"
|
||||
]
|
||||
},
|
||||
"platforms": "*",
|
||||
"frameworks": "*"
|
||||
}
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
name=Embedded Template Library - Arduino
|
||||
version=20.27.1
|
||||
version=20.27.2
|
||||
author= John Wellbelove <john.wellbelove@etlcpp.com>
|
||||
maintainer=John Wellbelove <john.wellbelove@etlcpp.com>
|
||||
license=MIT
|
||||
|
||||
284
cmake/GetGitRevisionDescription.cmake
Normal file
284
cmake/GetGitRevisionDescription.cmake
Normal file
@ -0,0 +1,284 @@
|
||||
# - 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.
|
||||
#
|
||||
# git_describe_working_tree(<var> [<additional arguments to git describe> ...])
|
||||
#
|
||||
# Returns the results of git describe on the working tree (--dirty option),
|
||||
# and adjusting the output so that it tests false if an error occurs.
|
||||
#
|
||||
# git_get_exact_tag(<var> [<additional arguments to git describe> ...])
|
||||
#
|
||||
# Returns the results of git describe --exact-match on the source tree,
|
||||
# and adjusting the output so that it tests false if there was no exact
|
||||
# matching tag.
|
||||
#
|
||||
# git_local_changes(<var>)
|
||||
#
|
||||
# Returns either "CLEAN" or "DIRTY" with respect to uncommitted changes.
|
||||
# Uses the return code of "git diff-index --quiet HEAD --".
|
||||
# Does not regard untracked files.
|
||||
#
|
||||
# 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(__get_git_revision_description)
|
||||
return()
|
||||
endif()
|
||||
set(__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 wil return
|
||||
# C:/bla/.git
|
||||
#
|
||||
function(_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(get_git_head_revision _refspecvar _hashvar)
|
||||
_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)
|
||||
_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(git_describe _var)
|
||||
if(NOT GIT_FOUND)
|
||||
find_package(Git QUIET)
|
||||
endif()
|
||||
get_git_head_revision(refspec hash)
|
||||
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()
|
||||
|
||||
function(git_describe_working_tree _var)
|
||||
if(NOT GIT_FOUND)
|
||||
find_package(Git QUIET)
|
||||
endif()
|
||||
if(NOT GIT_FOUND)
|
||||
set(${_var}
|
||||
"GIT-NOTFOUND"
|
||||
PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND "${GIT_EXECUTABLE}" describe --dirty ${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()
|
||||
|
||||
function(git_get_exact_tag _var)
|
||||
git_describe(out --exact-match ${ARGN})
|
||||
set(${_var}
|
||||
"${out}"
|
||||
PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
function(git_local_changes _var)
|
||||
if(NOT GIT_FOUND)
|
||||
find_package(Git QUIET)
|
||||
endif()
|
||||
get_git_head_revision(refspec hash)
|
||||
if(NOT GIT_FOUND)
|
||||
set(${_var}
|
||||
"GIT-NOTFOUND"
|
||||
PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
if(NOT hash)
|
||||
set(${_var}
|
||||
"HEAD-HASH-NOTFOUND"
|
||||
PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND "${GIT_EXECUTABLE}" diff-index --quiet HEAD --
|
||||
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
RESULT_VARIABLE res
|
||||
OUTPUT_VARIABLE out
|
||||
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
if(res EQUAL 0)
|
||||
set(${_var}
|
||||
"CLEAN"
|
||||
PARENT_SCOPE)
|
||||
else()
|
||||
set(${_var}
|
||||
"DIRTY"
|
||||
PARENT_SCOPE)
|
||||
endif()
|
||||
endfunction()
|
||||
43
cmake/GetGitRevisionDescription.cmake.in
Normal file
43
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
cmake/etlConfig.cmake.in
Normal file
4
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@")
|
||||
31
cmake/helpers.cmake
Normal file
31
cmake/helpers.cmake
Normal file
@ -0,0 +1,31 @@
|
||||
function(determine_version 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"
|
||||
)
|
||||
message(STATUS "Determined ETL version ${ETL_VERSION} from version.txt file")
|
||||
endfunction()
|
||||
|
||||
function(determine_version_with_git)
|
||||
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/GetGitRevisionDescription.cmake)
|
||||
git_describe(VERSION)
|
||||
string(FIND ${VERSION} "-" VALID_VERSION)
|
||||
if(VALID_VERSION EQUAL -1)
|
||||
message(WARNING "Version string ${VERSION} retrieved with git describe is invalid")
|
||||
return()
|
||||
endif()
|
||||
message(STATUS ${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 from version.txt"
|
||||
)
|
||||
message(STATUS "Determined ETL version ${ETL_VERSION} from the git tag")
|
||||
endfunction()
|
||||
@ -44,7 +44,7 @@ SOFTWARE.
|
||||
//*****************************************************************************
|
||||
|
||||
// Define the large character types if necessary.
|
||||
#if (ETL_NO_LARGE_CHAR_SUPPORT)
|
||||
#if ETL_NO_LARGE_CHAR_SUPPORT
|
||||
#if ETL_USING_8BIT_TYPES
|
||||
typedef int8_t char8_t;
|
||||
#endif
|
||||
|
||||
@ -95,7 +95,15 @@ namespace etl
|
||||
//*************************************************************************
|
||||
bool full() const
|
||||
{
|
||||
return (in + 1U) % BUFFER_SIZE == out;
|
||||
size_t i = in;
|
||||
|
||||
++i;
|
||||
if (i == BUFFER_SIZE) ETL_UNLIKELY
|
||||
{
|
||||
i = 0U;
|
||||
}
|
||||
|
||||
return i == out;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
@ -126,6 +134,26 @@ namespace etl
|
||||
{
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
void increment_in()
|
||||
{
|
||||
++in;
|
||||
if (in == BUFFER_SIZE) ETL_UNLIKELY
|
||||
{
|
||||
in = 0U;
|
||||
}
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
void increment_out()
|
||||
{
|
||||
++out;
|
||||
if (out == BUFFER_SIZE) ETL_UNLIKELY
|
||||
{
|
||||
out = 0U;
|
||||
}
|
||||
}
|
||||
|
||||
const size_type BUFFER_SIZE;
|
||||
size_type in; ///< Index to the next write.
|
||||
size_type out; ///< Index to the next read.
|
||||
@ -835,14 +863,14 @@ namespace etl
|
||||
void push(const_reference item)
|
||||
{
|
||||
::new (&pbuffer[in]) T(item);
|
||||
in = (in + 1U) % BUFFER_SIZE;
|
||||
increment_in();
|
||||
|
||||
// Did we catch up with the 'out' index?
|
||||
if (in == out)
|
||||
{
|
||||
// Forget about the oldest one.
|
||||
pbuffer[out].~T();
|
||||
out = (out + 1U) % BUFFER_SIZE;
|
||||
this->increment_out();
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -859,14 +887,14 @@ namespace etl
|
||||
void push(rvalue_reference item)
|
||||
{
|
||||
::new (&pbuffer[in]) T(etl::move(item));
|
||||
in = (in + 1U) % BUFFER_SIZE;
|
||||
increment_in();
|
||||
|
||||
// Did we catch up with the 'out' index?
|
||||
if (in == out)
|
||||
{
|
||||
// Forget about the oldest item.
|
||||
pbuffer[out].~T();
|
||||
out = (out + 1U) % BUFFER_SIZE;
|
||||
increment_out();
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -895,7 +923,7 @@ namespace etl
|
||||
{
|
||||
ETL_ASSERT(!empty(), ETL_ERROR(circular_buffer_empty));
|
||||
pbuffer[out].~T();
|
||||
out = (out + 1U) % BUFFER_SIZE;
|
||||
increment_out();
|
||||
ETL_DECREMENT_DEBUG_COUNT
|
||||
}
|
||||
|
||||
@ -1013,6 +1041,8 @@ namespace etl
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
pointer pbuffer;
|
||||
|
||||
private:
|
||||
|
||||
@ -172,7 +172,7 @@ namespace etl
|
||||
//*************************************************************************
|
||||
cyclic_value& operator ++()
|
||||
{
|
||||
if (value >= LAST)
|
||||
if (value >= LAST) ETL_UNLIKELY
|
||||
{
|
||||
value = FIRST;
|
||||
}
|
||||
@ -201,7 +201,7 @@ namespace etl
|
||||
//*************************************************************************
|
||||
cyclic_value& operator --()
|
||||
{
|
||||
if (value <= FIRST)
|
||||
if (value <= FIRST) ETL_UNLIKELY
|
||||
{
|
||||
value = LAST;
|
||||
}
|
||||
|
||||
@ -34,28 +34,16 @@ SOFTWARE.
|
||||
namespace etl
|
||||
{
|
||||
#if ETL_USING_CPP11
|
||||
//***************************************************************************
|
||||
// nth_type
|
||||
//***************************************************************************
|
||||
namespace private_nth_type
|
||||
{
|
||||
template <size_t N, typename T1, typename... TRest>
|
||||
struct nth_type_helper
|
||||
{
|
||||
using type = typename nth_type_helper<N - 1U, TRest...>::type;
|
||||
};
|
||||
|
||||
template <size_t N, typename T1>
|
||||
struct nth_type_helper<N, T1>
|
||||
{
|
||||
using type = T1;
|
||||
};
|
||||
}
|
||||
|
||||
template <size_t N, typename... TTypes>
|
||||
template <size_t N, typename T1, typename... TRest>
|
||||
struct nth_type
|
||||
{
|
||||
using type = typename private_nth_type::nth_type_helper<N, TTypes...>::type;
|
||||
using type = typename nth_type<N - 1U, TRest...>::type;
|
||||
};
|
||||
|
||||
template <typename T1, typename... TRest>
|
||||
struct nth_type<0U, T1, TRest...>
|
||||
{
|
||||
using type = T1;
|
||||
};
|
||||
|
||||
template <size_t N, typename... TTypes>
|
||||
|
||||
@ -187,7 +187,7 @@ namespace etl
|
||||
//*************************************************************************
|
||||
void add_in()
|
||||
{
|
||||
if (++in == CAPACITY)
|
||||
if (++in == CAPACITY) ETL_UNLIKELY
|
||||
{
|
||||
in = 0;
|
||||
}
|
||||
@ -201,7 +201,7 @@ namespace etl
|
||||
//*************************************************************************
|
||||
void del_out()
|
||||
{
|
||||
if (++out == CAPACITY)
|
||||
if (++out == CAPACITY) ETL_UNLIKELY
|
||||
{
|
||||
out = 0;
|
||||
}
|
||||
|
||||
@ -185,7 +185,7 @@ namespace etl
|
||||
{
|
||||
++index;
|
||||
|
||||
if (index == maximum)
|
||||
if (index == maximum) ETL_UNLIKELY
|
||||
{
|
||||
index = 0;
|
||||
}
|
||||
|
||||
@ -89,7 +89,7 @@ namespace etl
|
||||
{
|
||||
++index;
|
||||
|
||||
if (index == maximum)
|
||||
if (index == maximum) ETL_UNLIKELY
|
||||
{
|
||||
index = 0;
|
||||
}
|
||||
|
||||
@ -141,7 +141,7 @@ namespace etl
|
||||
{
|
||||
++index;
|
||||
|
||||
if (index == maximum)
|
||||
if (index == maximum) ETL_UNLIKELY
|
||||
{
|
||||
index = 0;
|
||||
}
|
||||
|
||||
@ -421,7 +421,7 @@ namespace etl
|
||||
{
|
||||
++index;
|
||||
|
||||
if (index == maximum)
|
||||
if (index == maximum) ETL_UNLIKELY
|
||||
{
|
||||
index = 0;
|
||||
}
|
||||
|
||||
@ -118,7 +118,7 @@ namespace etl
|
||||
{
|
||||
++index;
|
||||
|
||||
if (index == maximum)
|
||||
if (index == maximum) ETL_UNLIKELY
|
||||
{
|
||||
index = 0;
|
||||
}
|
||||
|
||||
@ -31,6 +31,7 @@ SOFTWARE.
|
||||
#ifndef ETL_VERSION_INCLUDED
|
||||
#define ETL_VERSION_INCLUDED
|
||||
|
||||
#include "platform.h"
|
||||
#include "macros.h"
|
||||
|
||||
///\defgroup version version
|
||||
@ -39,12 +40,34 @@ SOFTWARE.
|
||||
|
||||
#define ETL_VERSION_MAJOR 20
|
||||
#define ETL_VERSION_MINOR 27
|
||||
#define ETL_VERSION_PATCH 1
|
||||
#define ETL_VERSION_PATCH 2
|
||||
|
||||
|
||||
#define ETL_VERSION ETL_STRINGIFY(ETL_VERSION_MAJOR) "." ETL_STRINGIFY(ETL_VERSION_MINOR) "." ETL_STRINGIFY(ETL_VERSION_PATCH)
|
||||
#define ETL_VERSION_W ETL_STRINGIFY(ETL_VERSION_MAJOR) L"." ETL_STRINGIFY(ETL_VERSION_MINOR) L"." ETL_STRINGIFY(ETL_VERSION_PATCH)
|
||||
#define ETL_VERSION_U16 ETL_STRINGIFY(ETL_VERSION_MAJOR) u"." ETL_STRINGIFY(ETL_VERSION_MINOR) u"." ETL_STRINGIFY(ETL_VERSION_PATCH)
|
||||
#define ETL_VERSION_U32 ETL_STRINGIFY(ETL_VERSION_MAJOR) U"." ETL_STRINGIFY(ETL_VERSION_MINOR) U"." ETL_STRINGIFY(ETL_VERSION_PATCH)
|
||||
#define ETL_VERSION_VALUE ((ETL_VERSION_MAJOR * 10000) + (ETL_VERSION_MINOR * 100) + ETL_VERSION_PATCH)
|
||||
|
||||
namespace etl
|
||||
{
|
||||
namespace traits
|
||||
{
|
||||
static ETL_CONSTANT long version = ETL_VERSION_VALUE;
|
||||
static ETL_CONSTANT long version_major = ETL_VERSION_MAJOR;
|
||||
static ETL_CONSTANT long version_minor = ETL_VERSION_MINOR;
|
||||
static ETL_CONSTANT long version_patch = ETL_VERSION_PATCH;
|
||||
#if ETL_USING_CPP11
|
||||
static constexpr const char* version_string = ETL_VERSION;
|
||||
static constexpr const wchar_t* version_wstring = ETL_VERSION_W;
|
||||
static constexpr const char16_t* version_u16string = ETL_VERSION_U16;
|
||||
static constexpr const char32_t* version_u32string = ETL_VERSION_U32;
|
||||
#else
|
||||
static const char* version_string = ETL_VERSION;
|
||||
static const wchar_t* version_wstring = ETL_VERSION_W;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "Embedded Template Library",
|
||||
"version": "20.27.1",
|
||||
"version": "20.27.2",
|
||||
"authors": {
|
||||
"name": "John Wellbelove",
|
||||
"email": "john.wellbelove@etlcpp.com"
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
name=Embedded Template Library
|
||||
version=20.27.1
|
||||
version=20.27.2
|
||||
author= John Wellbelove <john.wellbelove@etlcpp.com>
|
||||
maintainer=John Wellbelove <john.wellbelove@etlcpp.com>
|
||||
license=MIT
|
||||
|
||||
@ -7,8 +7,8 @@ project('etl',
|
||||
# plain options affect `native: false` targets.
|
||||
'cpp_std=c++17', 'build.cpp_std=c++17',
|
||||
],
|
||||
meson_version: '>=0.54.0',
|
||||
version: '20.27.1'
|
||||
meson_version: '>=0.57.0',
|
||||
version: files('version.txt')
|
||||
)
|
||||
|
||||
compile_args = []
|
||||
|
||||
237
scripts/update_release.py
Normal file
237
scripts/update_release.py
Normal file
@ -0,0 +1,237 @@
|
||||
|
||||
import shutil
|
||||
import os
|
||||
|
||||
# Get the current path of the script
|
||||
script_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
# Get the root folder of the ETL
|
||||
etl_dir = os.path.abspath(os.path.join(script_dir, os.pardir))
|
||||
|
||||
# Get the ETL repository folder
|
||||
include_dir = os.path.join(etl_dir, 'include')
|
||||
|
||||
# Get the ETL headers folder
|
||||
headers_dir = os.path.join(include_dir, 'etl')
|
||||
|
||||
# Get the Arduino folder
|
||||
arduino_dir = os.path.join(etl_dir, 'arduino')
|
||||
|
||||
# Get the ETL arduino_examples folder
|
||||
arduino_examples_dir = os.path.join(arduino_dir, 'examples')
|
||||
|
||||
# Get the root folder of both repositories
|
||||
common_dir = os.path.abspath(os.path.join(etl_dir, os.pardir))
|
||||
|
||||
# Get the ETL Arduino repository folder
|
||||
etl_arduino_dir = os.path.join(common_dir, 'etl-arduino')
|
||||
|
||||
# Get the ETL Arduino src repository folder
|
||||
etl_arduino_src_dir = os.path.join(etl_arduino_dir, 'src')
|
||||
|
||||
# Get the ETL Arduino examples repository folder
|
||||
etl_arduino_examples_dir = os.path.join(etl_arduino_dir, 'examples')
|
||||
|
||||
major_version = ''
|
||||
minor_version = ''
|
||||
patch_version = ''
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Assumes this folder structure.
|
||||
# Folder Variable
|
||||
# ---------------------------------------
|
||||
# etl etl_dir
|
||||
# arduino arduino_dir
|
||||
# include include_dir
|
||||
# etl-arduino etl_arduino_dir
|
||||
# src etl_arduino_src_dir
|
||||
def create_arduino_variant():
|
||||
print('')
|
||||
print('Copy ETL files to the etl-arduino repository')
|
||||
print('')
|
||||
|
||||
print('script_dir = ', script_dir)
|
||||
print('etl_dir = ', etl_dir)
|
||||
print('include_dir = ', include_dir)
|
||||
print('headers_dir = ', headers_dir)
|
||||
print('arduino_dir = ', arduino_dir)
|
||||
print('examples_dir = ', arduino_examples_dir)
|
||||
print('common_dir = ', common_dir)
|
||||
print('etl_arduino_dir = ', etl_arduino_dir)
|
||||
print('etl_arduino_src_dir = ', etl_arduino_src_dir)
|
||||
print('etl_arduino_examples_dir = ', etl_arduino_examples_dir)
|
||||
|
||||
print('')
|
||||
|
||||
# Copy the library properties
|
||||
src_filename = 'library-arduino.properties'
|
||||
dst_filename = 'library.properties'
|
||||
source = os.path.join(arduino_dir, src_filename)
|
||||
destination = os.path.join(etl_arduino_dir, dst_filename)
|
||||
print('Copy the library properties')
|
||||
print(' From :', source)
|
||||
print(' To :', destination)
|
||||
shutil.copyfile(source, destination)
|
||||
|
||||
print('')
|
||||
|
||||
# Copy the library json
|
||||
src_filename = 'library-arduino.json'
|
||||
dst_filename = 'library.json'
|
||||
source = os.path.join(arduino_dir, src_filename)
|
||||
destination = os.path.join(etl_arduino_dir, dst_filename)
|
||||
print('Copy the library json')
|
||||
print(' From :', source)
|
||||
print(' To :', destination)
|
||||
shutil.copyfile(source, destination)
|
||||
|
||||
print('')
|
||||
|
||||
# Copy the Arduino ETL header
|
||||
filename = 'Embedded_Template_Library.h'
|
||||
source = os.path.join(arduino_dir, filename)
|
||||
destination = os.path.join(etl_arduino_src_dir, filename)
|
||||
print('Copy the Arduino ETL header')
|
||||
print(' From :', source)
|
||||
print(' To :', destination)
|
||||
shutil.copyfile(source, destination)
|
||||
|
||||
print('')
|
||||
|
||||
# Copy the ETL headers
|
||||
source = include_dir
|
||||
destination = etl_arduino_src_dir
|
||||
print('Copy the ETL headers')
|
||||
print(' From :', source)
|
||||
print(' To :', destination)
|
||||
shutil.copytree(source, destination, dirs_exist_ok = True)
|
||||
|
||||
print('')
|
||||
|
||||
# Copy the ETL arduino_examples
|
||||
source = arduino_examples_dir
|
||||
destination = etl_arduino_examples_dir
|
||||
print('Copy the ETL Arduino examples')
|
||||
print(' From :', source)
|
||||
print(' To :', destination)
|
||||
shutil.copytree(source, destination, dirs_exist_ok = True)
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
def get_version():
|
||||
version_file = os.path.join(etl_dir, 'version.txt')
|
||||
print('')
|
||||
print('version_file = ', version_file)
|
||||
|
||||
with open(version_file) as f:
|
||||
version = f.read().splitlines()
|
||||
|
||||
elements = version[0].split('.', 3)
|
||||
|
||||
return version[0], elements[0], elements[1], elements[2]
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
def update_version_h():
|
||||
print('')
|
||||
print('Creating version.h')
|
||||
|
||||
version_h = os.path.join(headers_dir, 'version.h')
|
||||
|
||||
with open(version_h) as f:
|
||||
text = f.read().splitlines()
|
||||
|
||||
search_major = '#define ETL_VERSION_MAJOR '
|
||||
search_minor = '#define ETL_VERSION_MINOR '
|
||||
search_patch = '#define ETL_VERSION_PATCH '
|
||||
|
||||
length_major = len(search_major)
|
||||
length_minor = len(search_minor)
|
||||
length_patch = len(search_patch)
|
||||
|
||||
for i in range(len(text) - 1):
|
||||
|
||||
index = text[i].find(search_major)
|
||||
if index != -1:
|
||||
text[i] = text[i][index:length_major] + major_version
|
||||
print(text[i])
|
||||
|
||||
index = text[i].find(search_minor)
|
||||
if index != -1:
|
||||
text[i] = text[i][index:length_minor] + minor_version
|
||||
print(text[i])
|
||||
|
||||
index = text[i].find(search_patch)
|
||||
if index != -1:
|
||||
text[i] = text[i][index:length_patch] + patch_version
|
||||
print(text[i])
|
||||
|
||||
with open(version_h, 'w') as f:
|
||||
for line in text:
|
||||
f.write(line)
|
||||
f.write('\n')
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
def update_library_json(filename):
|
||||
print('')
|
||||
print('Creating %s' % filename)
|
||||
|
||||
with open(filename) as f:
|
||||
text = f.read().splitlines()
|
||||
|
||||
search = 'version'
|
||||
|
||||
for i in range(len(text) - 1):
|
||||
index = text[i].find(search)
|
||||
if index != -1:
|
||||
text[i] = ' \"version\": \"' + full_version + '\",'
|
||||
|
||||
with open(filename, 'w') as f:
|
||||
for line in text:
|
||||
f.write(line)
|
||||
f.write('\n')
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
def update_library_properties(filename):
|
||||
print('')
|
||||
print('Creating %s' % filename)
|
||||
|
||||
with open(filename, 'r') as f:
|
||||
text = f.read().splitlines()
|
||||
|
||||
search = 'version'
|
||||
|
||||
for i in range(len(text) - 1):
|
||||
index = text[i].find(search)
|
||||
if index != -1:
|
||||
text[i] = 'version=' + full_version
|
||||
|
||||
with open(filename, 'w') as f:
|
||||
for line in text:
|
||||
f.write(line)
|
||||
f.write('\n')
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
def update_versions():
|
||||
print('')
|
||||
print('Update Versions')
|
||||
|
||||
global full_version
|
||||
global major_version
|
||||
global minor_version
|
||||
global patch_version
|
||||
|
||||
full_version, major_version, minor_version, patch_version = get_version()
|
||||
|
||||
print("Version = %s.%s.%s" % (major_version, minor_version, patch_version ))
|
||||
|
||||
update_version_h()
|
||||
|
||||
update_library_json(os.path.join(etl_dir, 'library.json'))
|
||||
update_library_json(os.path.join(arduino_dir, 'library-arduino.json'))
|
||||
|
||||
update_library_properties(os.path.join(etl_dir, 'library.properties'))
|
||||
update_library_properties(os.path.join(arduino_dir, 'library-arduino.properties'))
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
if __name__ == "__main__":
|
||||
update_versions()
|
||||
create_arduino_variant()
|
||||
@ -185,6 +185,7 @@ set(TEST_SOURCE_FILES
|
||||
test_multi_range.cpp
|
||||
test_multi_vector.cpp
|
||||
test_murmur3.cpp
|
||||
test_nth_type.cpp
|
||||
test_numeric.cpp
|
||||
test_observer.cpp
|
||||
test_optional.cpp
|
||||
|
||||
@ -250,7 +250,7 @@ elif
|
||||
endif
|
||||
|
||||
if meson.get_compiler('cpp').get_id() == 'gcc'
|
||||
etl_test_sources += files('test/test_atomic_gcc_sync.cpp')
|
||||
etl_test_sources += files('test_atomic_gcc_sync.cpp')
|
||||
compile_args += '-fexceptions'
|
||||
endif
|
||||
|
||||
|
||||
@ -31,7 +31,8 @@ SOFTWARE.
|
||||
#include "unit_test_framework.h"
|
||||
|
||||
#include "etl/platform.h"
|
||||
|
||||
#include "etl/version.h"
|
||||
#include "etl/char_traits.h"
|
||||
namespace
|
||||
{
|
||||
SUITE(test_etl_traits)
|
||||
@ -70,6 +71,14 @@ namespace
|
||||
CHECK_EQUAL((ETL_HAS_MUTABLE_ARRAY_VIEW == 1), etl::traits::has_mutable_array_view);
|
||||
CHECK_EQUAL((ETL_IS_DEBUG_BUILD == 1), etl::traits::is_debug_build);
|
||||
CHECK_EQUAL(__cplusplus, etl::traits::cplusplus);
|
||||
CHECK_EQUAL(ETL_VERSION_MAJOR, etl::traits::version_major);
|
||||
CHECK_EQUAL(ETL_VERSION_MINOR, etl::traits::version_minor);
|
||||
CHECK_EQUAL(ETL_VERSION_PATCH, etl::traits::version_patch);
|
||||
CHECK_EQUAL(ETL_VERSION_VALUE, etl::traits::version);
|
||||
CHECK_ARRAY_EQUAL(ETL_VERSION, etl::traits::version_string, etl::strlen(ETL_VERSION));
|
||||
CHECK_ARRAY_EQUAL(ETL_VERSION, etl::traits::version_wstring, etl::strlen(ETL_VERSION_W));
|
||||
CHECK_ARRAY_EQUAL(ETL_VERSION, etl::traits::version_u16string, etl::strlen(ETL_VERSION_U16));
|
||||
CHECK_ARRAY_EQUAL(ETL_VERSION, etl::traits::version_u32string, etl::strlen(ETL_VERSION_U32));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
46
test/test_nth_type.cpp
Normal file
46
test/test_nth_type.cpp
Normal file
@ -0,0 +1,46 @@
|
||||
/******************************************************************************
|
||||
The MIT License(MIT)
|
||||
|
||||
Embedded Template Library.
|
||||
https://github.com/ETLCPP/etl
|
||||
https://www.etlcpp.com
|
||||
|
||||
Copyright(c) 2022 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.
|
||||
******************************************************************************/
|
||||
|
||||
#include "unit_test_framework.h"
|
||||
|
||||
#include "etl/nth_type.h"
|
||||
#include <type_traits>
|
||||
|
||||
namespace
|
||||
{
|
||||
SUITE(test_nth_type)
|
||||
{
|
||||
//*************************************************************************
|
||||
TEST(test_nth_type)
|
||||
{
|
||||
CHECK((std::is_same_v<etl::nth_type_t<0, int, long, double>, int>));
|
||||
CHECK((std::is_same_v<etl::nth_type_t<1, int, long, double>, long>));
|
||||
CHECK((std::is_same_v<etl::nth_type_t<2, int, long, double>, double>));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -11299,6 +11299,7 @@
|
||||
<ClCompile Include="..\test_multi_span.cpp" />
|
||||
<ClCompile Include="..\test_multi_vector.cpp" />
|
||||
<ClCompile Include="..\test_murmur3.cpp" />
|
||||
<ClCompile Include="..\test_nth_type.cpp" />
|
||||
<ClCompile Include="..\test_numeric.cpp" />
|
||||
<ClCompile Include="..\test_observer.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
@ -11496,9 +11497,11 @@
|
||||
<None Include="..\..\.gitignore" />
|
||||
<None Include="..\..\.gitmodules" />
|
||||
<None Include="..\..\appveyor.yml" />
|
||||
<None Include="..\..\arduino\create_arduino_library.py" />
|
||||
<None Include="..\..\arduino\library-arduino.json" />
|
||||
<None Include="..\..\arduino\library-arduino.properties" />
|
||||
<None Include="..\..\cmake\GetGitRevisionDescription.cmake" />
|
||||
<None Include="..\..\cmake\GetGitRevisionDescription.cmake.in" />
|
||||
<None Include="..\..\cmake\helpers.cmake" />
|
||||
<None Include="..\..\etl.pspimage" />
|
||||
<None Include="..\..\etl.xar" />
|
||||
<None Include="..\..\include\etl\generators\generate.bat" />
|
||||
@ -11515,7 +11518,7 @@
|
||||
<None Include="..\..\library.properties" />
|
||||
<None Include="..\..\meson.build" />
|
||||
<None Include="..\..\README.md" />
|
||||
<None Include="..\cmake\unit-test_external_project.cmake" />
|
||||
<None Include="..\..\scripts\update_release.py" />
|
||||
<None Include="..\runsanitychecks.sh" />
|
||||
<None Include="..\runtests.sh" />
|
||||
<None Include="cpp.hint" />
|
||||
@ -11524,6 +11527,7 @@
|
||||
<Text Include="..\..\CMakeLists.txt" />
|
||||
<Text Include="..\..\support\Release notes.txt" />
|
||||
<Text Include="..\..\todo.txt" />
|
||||
<Text Include="..\..\version.txt" />
|
||||
<Text Include="..\CMakeLists.txt" />
|
||||
<Text Include="..\sanity-check\c++03\CMakeLists.txt" />
|
||||
<Text Include="..\sanity-check\c++11\CMakeLists.txt" />
|
||||
|
||||
@ -193,6 +193,9 @@
|
||||
<Filter Include="UnitTest++\Source Files\Win32">
|
||||
<UniqueIdentifier>{107d7e33-580f-4dc5-be11-a4b2076c2c10}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files\Scripts">
|
||||
<UniqueIdentifier>{4ee68175-3bc2-4d30-b8bf-be7261124979}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\include\etl\enum_type.h">
|
||||
@ -3236,6 +3239,9 @@
|
||||
<ClCompile Include="..\unittest++\Win32\TimeHelpers.cpp">
|
||||
<Filter>UnitTest++\Source Files\Win32</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\test_nth_type.cpp">
|
||||
<Filter>Tests\Types</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\..\library.properties">
|
||||
@ -3289,9 +3295,6 @@
|
||||
<None Include="..\..\.circleci\config.yml">
|
||||
<Filter>Resource Files\CI\CircleCI</Filter>
|
||||
</None>
|
||||
<None Include="..\cmake\unit-test_external_project.cmake">
|
||||
<Filter>Resource Files\CMake</Filter>
|
||||
</None>
|
||||
<None Include="..\..\appveyor.yml">
|
||||
<Filter>Resource Files\CI\Appveyor</Filter>
|
||||
</None>
|
||||
@ -3331,8 +3334,17 @@
|
||||
<None Include="..\..\arduino\library-arduino.properties">
|
||||
<Filter>Resource Files\Arduino</Filter>
|
||||
</None>
|
||||
<None Include="..\..\arduino\create_arduino_library.py">
|
||||
<Filter>Resource Files\Arduino</Filter>
|
||||
<None Include="..\..\cmake\GetGitRevisionDescription.cmake">
|
||||
<Filter>Resource Files\CMake</Filter>
|
||||
</None>
|
||||
<None Include="..\..\cmake\GetGitRevisionDescription.cmake.in">
|
||||
<Filter>Resource Files\CMake</Filter>
|
||||
</None>
|
||||
<None Include="..\..\cmake\helpers.cmake">
|
||||
<Filter>Resource Files\CMake</Filter>
|
||||
</None>
|
||||
<None Include="..\..\scripts\update_release.py">
|
||||
<Filter>Resource Files\Scripts</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
@ -3363,6 +3375,9 @@
|
||||
<Text Include="..\CMakeLists.txt">
|
||||
<Filter>Tests\Test Support</Filter>
|
||||
</Text>
|
||||
<Text Include="..\..\version.txt">
|
||||
<Filter>Resource Files</Filter>
|
||||
</Text>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Image Include="..\..\etl.ico">
|
||||
|
||||
1
version.txt
Normal file
1
version.txt
Normal file
@ -0,0 +1 @@
|
||||
20.27.2
|
||||
Loading…
x
Reference in New Issue
Block a user