Added C standard gnu23 to the makefile (#288)

* Added C standard gnu23 to the makefile

* Added gnu23 standard to all test modue makefiles

* Added installation of latest gcc version to tests workflow

* Fixed typo in previous commit

* Made GCC 14 installation conditional and moved from the workflow to the script

* Extracted GCC version check to external script for CI and created tests README

* Added #!/bin/bash

* Make check_gcc_version.sh executable
This commit is contained in:
MeirGavish
2025-12-13 04:46:03 +02:00
committed by GitHub
parent 9bffe5c9a9
commit ae5369b8fe
8 changed files with 32 additions and 5 deletions
@@ -8,9 +8,14 @@ jobs:
run-unit-tests: run-unit-tests:
name: Run Unit Tests name: Run Unit Tests
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v5 uses: actions/checkout@v5
- name: Check and install GCC version
run: ./ci_scripts/check_gcc_version.sh
- name: Run Unit Tests - name: Run Unit Tests
run: cd tests && ./run_tests.sh run: cd tests && ./run_tests.sh
+1 -1
View File
@@ -42,7 +42,7 @@ GIT_DIRTY := $(shell git diff-index --quiet HEAD -- || echo "-dirty")
GIT_HASH := $(shell git rev-parse --short HEAD || echo "undef") GIT_HASH := $(shell git rev-parse --short HEAD || echo "undef")
GIT_C_FLAGS := -DGIT_HASH=\"$(GIT_HASH)\" -DGIT_DIRTY=\"$(GIT_DIRTY)\" GIT_C_FLAGS := -DGIT_HASH=\"$(GIT_HASH)\" -DGIT_DIRTY=\"$(GIT_DIRTY)\"
CFLAGS := -g -O3 -Wall -Werror \ CFLAGS := -g -O3 -Wall -Werror -std=gnu23 \
-mcpu=arm7tdmi -mtune=arm7tdmi \ -mcpu=arm7tdmi -mtune=arm7tdmi \
-ffast-math -fomit-frame-pointer -funroll-loops \ -ffast-math -fomit-frame-pointer -funroll-loops \
$(ARCH) $(ARCH)
+17
View File
@@ -0,0 +1,17 @@
#!/bin/bash
# Check GCC version and install GCC 14 if needed
check_gcc_version() {
if command -v gcc &> /dev/null; then
gcc_version=$(gcc -dumpversion | cut -d. -f1)
if [ "$gcc_version" -lt 14 ]; then
echo "GCC version $gcc_version detected. Installing GCC 14..."
sudo apt-get update
sudo apt-get install -y gcc-14
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-14 100
echo "GCC 14 installed and set as default."
fi
fi
}
check_gcc_version
+5
View File
@@ -0,0 +1,5 @@
These are tests that run on the repository's CI or can be run locally
to make sure none of the base modules are broken.
The project uses the gnu23 C standard which is stably supported from GCC 14 and onwards
so this project should be compiled with GCC 14 or later.
+1 -1
View File
@@ -1,7 +1,7 @@
CC := gcc CC := gcc
CFLAGS := -I../../include -I. \ CFLAGS := -I../../include -I. \
-g -O3 -Wall -Werror -g -O3 -std=gnu23 -Wall -Werror
SRC := bitset_test.c \ SRC := bitset_test.c \
../../source/bitset.c ../../source/bitset.c
OUT := build/bitset_test OUT := build/bitset_test
+1 -1
View File
@@ -1,7 +1,7 @@
CC := gcc CC := gcc
CFLAGS := -I../../include -I. \ CFLAGS := -I../../include -I. \
-g -O3 -Wall -Werror -DPOOLS_TEST_ENV=yes -g -O3 -std=gnu23 -Wall -Werror -DPOOLS_TEST_ENV=yes
SRC := list_test.c \ SRC := list_test.c \
../../source/list.c \ ../../source/list.c \
+1 -1
View File
@@ -1,7 +1,7 @@
CC := gcc CC := gcc
CFLAGS := -I../../include -I. \ CFLAGS := -I../../include -I. \
-g -O3 -Wall -Werror -DPOOLS_TEST_ENV=yes -g -O3 -std=gnu23 -Wall -Werror -DPOOLS_TEST_ENV=yes
SRC := pool_test.c ../../source/pool.c ../../source/bitset.c SRC := pool_test.c ../../source/pool.c ../../source/bitset.c
OUT := build/pool_test OUT := build/pool_test
+1 -1
View File
@@ -1,7 +1,7 @@
CC := gcc CC := gcc
CFLAGS := -I../../include -I. \ CFLAGS := -I../../include -I. \
-g -O3 -Wall -Werror -Wno-format -g -O3 -std=gnu23 -Wall -Werror -Wno-format
SRC := util_test.c ../../source/util.c SRC := util_test.c ../../source/util.c
OUT := build/util_test OUT := build/util_test