Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
beb13b5
chore: standardised .gitattributes file
synesissoftware Jul 29, 2026
efcd563
chore: standardised .vimrc file
synesissoftware Jul 29, 2026
5684370
chore: VS Code settings
synesissoftware Jul 29, 2026
5b51010
chore: standardised markdown files
synesissoftware Jul 29, 2026
27ed61a
chore: README.md badges
synesissoftware Jul 29, 2026
d877f8f
chore: TODO.md standardisation
synesissoftware Jul 29, 2026
c1dda13
fix
synesissoftware Jul 30, 2026
810d16b
tidy
synesissoftware Jul 30, 2026
a77e530
chore: README badges
synesissoftware Jul 30, 2026
2da7ac7
whitespace
synesissoftware Jul 30, 2026
b40fce4
chore: renamed **CHANGES.txt** => **CHANGES.md**
synesissoftware Jul 30, 2026
5b3dda5
chore: renamed **CHANGES.txt** => **CHANGES.md**
synesissoftware Jul 30, 2026
0ec8fdc
chore: removed **HISTORY.md**
synesissoftware Jul 30, 2026
f8bd4d8
chore: CI improvements
synesissoftware Jul 30, 2026
ab720a4
chore: renaming all "TBC" to "T.B.C." (for searchability)
synesissoftware Jul 30, 2026
7ee43d6
chore: enhanced **EXAMPLES.md**
synesissoftware Jul 31, 2026
fc26b06
chore: enhanced **TODO.md**
synesissoftware Jul 31, 2026
37c5c1f
chore: enhanced **KNOWN_ISSUES.md**
synesissoftware Jul 31, 2026
f938687
chore: miscellaneous project boilerplate improvements
synesissoftware Jul 31, 2026
0f0fcf5
chore: canonicalised **README.md**
synesissoftware Jul 31, 2026
5980cfc
chore: fleshed out projects/libraries in **README.md**
synesissoftware Jul 31, 2026
902c300
test: added test to exercise issue with `stlsoft::simple_string`
synesissoftware Jul 31, 2026
b3af8cd
fix: `stlsoft::basic_simple_string<>#resize()` — expanding a non-empt…
synesissoftware Jul 31, 2026
cc8185b
1.11.1-rc5
synesissoftware Jul 31, 2026
866a7a7
boilerplate
synesissoftware Aug 7, 2026
e5ad5e4
CI: align push branches with Synesis canonical set
synesissoftware Aug 7, 2026
288efde
Scripts: add .sis/project_name.txt and wire ProjectName
synesissoftware Aug 7, 2026
eddf580
Scripts: MSYS auto-MinGW in prepare_cmake; add ctest_cmake.sh
synesissoftware Aug 7, 2026
4c2e5b6
CMake: set CMP0177 and fix BuildType default cache set
synesissoftware Aug 7, 2026
8bb46e0
Docs: review and refresh TODO.md against current packaging
synesissoftware Aug 7, 2026
f67f32a
Modernise STLSoft build/CI boilerplate and rewrite TODO roadmap.
synesissoftware Aug 7, 2026
9e5be86
squash-commit
mwsis Aug 7, 2026
4ce7a25
squash-commit
mwsis Aug 8, 2026
90ff90a
Merge branch 'master' into 'update'
mwsis Aug 8, 2026
5a04b5e
squash-commit
synesissoftware Aug 8, 2026
cc1b22a
Merge branch 'mwsis/update' into 'update.2'
synesissoftware Aug 8, 2026
ea7c275
squash-commit
synesissoftware Aug 8, 2026
1b230e1
Merge branch 'master' into 'update'
synesissoftware Aug 8, 2026
b134916
CMake: prefer tree headers over installed STLSoft on Apple Clang
synesissoftware Aug 8, 2026
99a3066
squash-commit
synesissoftware Aug 8, 2026
d43b44b
Merge branch 'dev' into 'update'
synesissoftware Aug 8, 2026
f13e3d0
Merge branch 'update' into 'update.2'
synesissoftware Aug 8, 2026
2e11187
fix: initialise `viewSize` in C memory-map component tests to silence…
synesissoftware Aug 8, 2026
6bd465b
Merge branch 'update' into 'update.2'
synesissoftware Aug 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,15 @@ on:
branches:
- master
- dev
- boilerplate
- idiomatic
- update
- update.2
- rc1
- rc2
- rc3
- rc4
- rc5
- update
pull_request:

concurrency:
Expand Down
1 change: 1 addition & 0 deletions .sis/project_name.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
STLSoft
2 changes: 1 addition & 1 deletion CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# **STLSoft** Changes <!-- omit in toc -->
# STLSoft - CHANGES <!-- omit in toc -->


## 1.11.1-rc5 - 9th August 2026
Expand Down
5 changes: 4 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
# Purpose: Top-level CMake lists file for STLSoft
#
# Created: 31st March 2021
# Updated: 30th July 2026
# Updated: 7th August 2026
#
# ######################################################################## #

Expand All @@ -14,6 +14,9 @@
# CMake

cmake_minimum_required(VERSION 3.20 FATAL_ERROR)
if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.31")
cmake_policy(SET CMP0177 NEW)
endif()

# require out-of-source builds
file(TO_CMAKE_PATH "${CMAKE_CURRENT_BINARY_DIR}/CMakeLists.txt" LOC_PATH)
Expand Down
2 changes: 1 addition & 1 deletion EXAMPLES.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# STLSoft Examples <!-- omit in toc -->
# STLSoft - Examples <!-- omit in toc -->

| Name | Source & Description | Platform | Summary |
| ---- | -------------------- | -------- | ------- |
Expand Down
4 changes: 2 additions & 2 deletions KNOWN_ISSUES.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@

## STLSoft 1.11 Known Issues

* [ ] Deeper API documentation beyond the README Components catalogue remains incomplete (see also [**TODO.md**](./TODO.md)); further documentation work is planned for 1.12+;
* [ ] Several `unixstl::system_traits` methods are declared but not defined, with the intention to flesh them out from Linux system calls (and provide emulations/workarounds for other architectures); pull requests are welcome;
* [ ] Deeper API documentation beyond the README Components catalogue remains incomplete (see [**TODO.md**](./TODO.md) **1.11.11**);
* [ ] Several `unixstl::system_traits` methods are declared but not defined, with the intention to flesh them out from Linux system calls (and provide emulations/workarounds for other architectures); see [**TODO.md**](./TODO.md) **1.11.6**; pull requests are welcome;


## STLSoft 1.11 Suspected Issues
Expand Down
237 changes: 105 additions & 132 deletions TODO.md

Large diffs are not rendered by default.

6 changes: 4 additions & 2 deletions build_cmake.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ Basename=$(basename "$ScriptPath")
CMakeDir=${SIS_CMAKE_BUILD_DIR:-$Dir/_build}
[[ -n "$MSYSTEM" ]] && DefaultMakeCmd=mingw32-make.exe || DefaultMakeCmd=make
MakeCmd=${SIS_CMAKE_MAKE_COMMAND:-${SIS_CMAKE_COMMAND:-$DefaultMakeCmd}}
ProjectNameFile="$Dir/.sis/project_name.txt"
ProjectName=$(tr -d '[:space:]' < "$ProjectNameFile")

IgnoreRemainingFlagsAndOptions=0
Targets=()
Expand Down Expand Up @@ -103,10 +105,10 @@ else

if [ -z "$Targets" ]; then

echo "Executing build (via command \`$MakeCmd\`)"
echo "Executing build for ${ProjectName} (via command \`$MakeCmd\`)"
else

echo "Executing build (via command \`$MakeCmd\`) with specific target(s) $(join_by , "${Targets[@]}")"
echo "Executing build for ${ProjectName} (via command \`$MakeCmd\`) with specific target(s) $(join_by , "${Targets[@]}")"
fi

$MakeCmd ${Targets[*]}
Expand Down
4 changes: 3 additions & 1 deletion clean_cmake.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ Basename=$(basename "$ScriptPath")
CMakeDir=${SIS_CMAKE_BUILD_DIR:-$Dir/_build}
[[ -n "$MSYSTEM" ]] && DefaultMakeCmd=mingw32-make.exe || DefaultMakeCmd=make
MakeCmd=${SIS_CMAKE_MAKE_COMMAND:-${SIS_CMAKE_COMMAND:-$DefaultMakeCmd}}
ProjectNameFile="$Dir/.sis/project_name.txt"
ProjectName=$(tr -d '[:space:]' < "$ProjectNameFile")


# ##########################################################
Expand Down Expand Up @@ -69,7 +71,7 @@ else
exit 1
else

echo "Cleaning build (via command \`$MakeCmd clean\`)"
echo "Cleaning ${ProjectName} build (via command \`$MakeCmd clean\`)"

$MakeCmd clean
status=$?
Expand Down
9 changes: 4 additions & 5 deletions cmake/BuildType.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
# Purpose: CMake module file (for BuildType)
#
# Created: 16th October 2019
# Updated: 28th October 2024
# Updated: 7th August 2026
#
# ######################################################################## #

Expand Down Expand Up @@ -35,7 +35,7 @@ include(BuildType)
]========]


if(EXISTS "${CMAKE_SOURCE_DIR}/.git")
if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/../.git")

set(DEFAULT_BUILD_TYPE "Debug")
else()
Expand All @@ -47,8 +47,8 @@ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)

message(STATUS "Setting build type to '${DEFAULT_BUILD_TYPE}' as none was specified.")

set(CACHE CMAKE_BUILD_TYPE "${DEFAULT_BUILD_TYPE}"
STRING "Choose the type of build." FORCE
set(CMAKE_BUILD_TYPE "${DEFAULT_BUILD_TYPE}" CACHE STRING
"Choose the type of build." FORCE
)

# Set the possible values of build type for cmake-gui
Expand All @@ -58,4 +58,3 @@ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
endif()

# ############################## end of file ############################# #

18 changes: 18 additions & 0 deletions cmake/TargetMacros.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,15 @@ function(define_automated_test_program program_name entry_point_source_name)
${entry_point_source_name}
)

# Prefer this tree's headers over any installed STLSoft. On Apple Clang,
# /usr/local/include is searched before -isystem paths, so includes that
# arrive only via imported deps (e.g. xTests) can otherwise shadow us.
set_property(TARGET ${program_name} PROPERTY NO_SYSTEM_FROM_IMPORTED TRUE)
target_include_directories(${program_name}
BEFORE PRIVATE
${CMAKE_SOURCE_DIR}/include
)

target_link_libraries(${program_name}
$<$<BOOL:${cstring_FOUND}>:cstring::core>
$<$<BOOL:${shwild_FOUND}>:shwild::core>
Expand Down Expand Up @@ -65,6 +74,15 @@ function(define_example_program program_name entry_point_source_name)
${entry_point_source_name}
)

# Prefer this tree's headers over any installed STLSoft. On Apple Clang,
# /usr/local/include is searched before -isystem paths, so includes that
# arrive only via imported deps (e.g. xTests) can otherwise shadow us.
set_property(TARGET ${program_name} PROPERTY NO_SYSTEM_FROM_IMPORTED TRUE)
target_include_directories(${program_name}
BEFORE PRIVATE
${CMAKE_SOURCE_DIR}/include
)

target_link_libraries(${program_name}
$<$<BOOL:${shwild_FOUND}>:shwild::core>
$<$<BOOL:${cstring_FOUND}>:cstring::core>
Expand Down
108 changes: 108 additions & 0 deletions ctest_cmake.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
#! /bin/bash

ScriptPath=$0
Dir=$(cd $(dirname "$ScriptPath"); pwd)
Basename=$(basename "$ScriptPath")
CMakeDir=${SIS_CMAKE_BUILD_DIR:-$Dir/_build}
[[ -n "$MSYSTEM" ]] && DefaultMakeCmd=mingw32-make.exe || DefaultMakeCmd=make
MakeCmd=${SIS_CMAKE_MAKE_COMMAND:-${SIS_CMAKE_COMMAND:-$DefaultMakeCmd}}
ProjectNameFile="$Dir/.sis/project_name.txt"
ProjectName=$(tr -d '[:space:]' < "$ProjectNameFile")

CMakeVerbose=
RunMake=1


# ##########################################################
# command-line handling

while [[ $# -gt 0 ]]; do

case $1 in
--no-make|-M)

RunMake=0
;;
--verbose|-V)

CMakeVerbose=--verbose
;;
--help)

[ -f "$Dir/.sis/script_info_lines.txt" ] && cat "$Dir/.sis/script_info_lines.txt"
cat << EOF
Runs CMake's CTest test program(s)

$ScriptPath [ ... flags/options ... ]

Flags/options:

behaviour:

-M
--no-make
does not execute CMake and make before running tests

-V
--verbose
verbose test output


standard flags:

--help
displays this help and terminates

EOF

exit 0
;;
*)

>&2 echo "$ScriptPath: unrecognised argument '$1'; use --help for usage"

exit 1
;;
esac

shift
done


# ##########################################################
# main()

status=0

if [ $RunMake -ne 0 ]; then

echo "Executing build for ${ProjectName} (via command \`$MakeCmd\`) and then running all component and unit test programs"

mkdir -p $CMakeDir || exit 1

cd $CMakeDir

$MakeCmd
status=$?

cd ->/dev/null
else

if [ ! -d "$CMakeDir" ] || [ ! -f "$CMakeDir/CMakeCache.txt" ] || [ ! -d "$CMakeDir/CMakeFiles" ]; then

>&2 echo "$ScriptPath: cannot run in '--no-make' mode without a previous successful build step"
fi
fi

if [ $status -eq 0 ]; then

echo "Running CMake tests"

ctest --test-dir $CMakeDir $CMakeVerbose
status=$?
fi

exit $status


# ############################## end of file ############################# #
2 changes: 1 addition & 1 deletion examples/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

include_directories(${CMAKE_SOURCE_DIR}/include)
include_directories(BEFORE ${CMAKE_SOURCE_DIR}/include)

if(_BUILD_AS_UNIX)

Expand Down
8 changes: 5 additions & 3 deletions execute_performance_tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ Basename=$(basename "$ScriptPath")
CMakeDir=${SIS_CMAKE_BUILD_DIR:-$Dir/_build}
[[ -n "$MSYSTEM" ]] && DefaultMakeCmd=mingw32-make.exe || DefaultMakeCmd=make
MakeCmd=${SIS_CMAKE_MAKE_COMMAND:-${SIS_CMAKE_COMMAND:-$DefaultMakeCmd}}
ProjectNameFile="$Dir/.sis/project_name.txt"
ProjectName=$(tr -d '[:space:]' < "$ProjectNameFile")

ExpandWidth=0
ListOnly=0
Expand Down Expand Up @@ -85,7 +87,7 @@ status=0
if [ $RunMake -ne 0 ]; then

if [ $ListOnly -eq 0 ]; then
echo "Executing make and then running all performance test programs"
echo "Executing build (via command \`$MakeCmd\`) and then running all ${ProjectName} performance test programs"

mkdir -p $CMakeDir || exit 1

Expand All @@ -110,10 +112,10 @@ if [ $status -eq 0 ]; then

if [ $ListOnly -ne 0 ]; then

echo "Listing all performance test programs"
echo "Listing all ${ProjectName} performance test programs"
else

echo "Running all performance test programs"
echo "Running all ${ProjectName} performance test programs"
fi

for f in $(find "$CMakeDir" -type f '(' -name 'test_performance*' -o -name 'test.performance.*' ')' -exec test -x {} \; -print | sort)
Expand Down
15 changes: 12 additions & 3 deletions prepare_cmake.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,17 @@ ScriptPath=$0
Dir=$(cd $(dirname "$ScriptPath"); pwd)
Basename=$(basename "$ScriptPath")
CMakeDir=${SIS_CMAKE_BUILD_DIR:-$Dir/_build}
[[ -n "$MSYSTEM" ]] && DefaultMakeCmd=mingw32-make.exe || DefaultMakeCmd=make
if [[ -n "$MSYSTEM" ]]; then

DefaultMakeCmd=mingw32-make.exe
MinGW=1
else

DefaultMakeCmd=make
fi
MakeCmd=${SIS_CMAKE_MAKE_COMMAND:-${SIS_CMAKE_COMMAND:-$DefaultMakeCmd}}
ProjectNameFile="$Dir/.sis/project_name.txt"
ProjectName=$(tr -d '[:space:]' < "$ProjectNameFile")


Configuration=Release
Expand Down Expand Up @@ -152,7 +161,7 @@ mkdir -p $CMakeDir || exit 1

cd $CMakeDir

echo "Executing CMake (in ${CMakeDir})"
echo "Executing CMake for ${ProjectName} (in ${CMakeDir})"

if [ $ExamplesDisabled -eq 0 ]; then CMakeBuildExamplesFlag="ON" ; else CMakeBuildExamplesFlag="OFF" ; fi
if [ $MSVC_MT -eq 0 ]; then CMakeMsvcMtFlag="OFF" ; else CMakeMsvcMtFlag="ON" ; fi
Expand Down Expand Up @@ -195,7 +204,7 @@ status=0

if [ $RunMake -ne 0 ]; then

echo "Executing build (via command \`$MakeCmd\`)"
echo "Executing build for ${ProjectName} (via command \`$MakeCmd\`)"

$MakeCmd
status=$?
Expand Down
4 changes: 3 additions & 1 deletion remove_cmake_artefacts.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ ScriptPath=$0
Dir=$(cd $(dirname "$ScriptPath"); pwd)
Basename=$(basename "$ScriptPath")
CMakeDir=${SIS_CMAKE_BUILD_DIR:-$Dir/_build}
ProjectNameFile="$Dir/.sis/project_name.txt"
ProjectName=$(tr -d '[:space:]' < "$ProjectNameFile")

Directories=(
CMakeFiles
Expand Down Expand Up @@ -100,7 +102,7 @@ if [ ! -d "$CMakeDir" ]; then
exit 0
else

echo "Removing all cmake artefacts in '$CMakeDir'"
echo "Removing all ${ProjectName} cmake artefacts in '$CMakeDir'"

num_dirs_removed=0
num_files_removed=0
Expand Down
8 changes: 5 additions & 3 deletions run_all_examples.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ Basename=$(basename "$ScriptPath")
CMakeDir=${SIS_CMAKE_BUILD_DIR:-$Dir/_build}
[[ -n "$MSYSTEM" ]] && DefaultMakeCmd=mingw32-make.exe || DefaultMakeCmd=make
MakeCmd=${SIS_CMAKE_MAKE_COMMAND:-${SIS_CMAKE_COMMAND:-$DefaultMakeCmd}}
ProjectNameFile="$Dir/.sis/project_name.txt"
ProjectName=$(tr -d '[:space:]' < "$ProjectNameFile")

ListOnly=0
RunMake=1
Expand Down Expand Up @@ -148,7 +150,7 @@ if [ $RunMake -ne 0 ]; then

if [ $ListOnly -eq 0 ]; then

echo "Executing build (via command \`$MakeCmd\`) and then running all example programs"
echo "Executing build (via command \`$MakeCmd\`) and then running all ${ProjectName} example programs"

mkdir -p $CMakeDir || exit 1

Expand Down Expand Up @@ -180,10 +182,10 @@ if [ $status -eq 0 ]; then

if [ $ListOnly -ne 0 ]; then

echo "Listing all example programs"
echo "Listing all ${ProjectName} example programs"
else

echo "Running all example programs"
echo "Running all ${ProjectName} example programs"
fi

for f in $(find "$CMakeDir/examples" -type f -exec test -x {} \; -print | sort)
Expand Down
Loading
Loading