diff --git a/.cirrus.yml b/.cirrus.yml index 7a13d123fc..e8a0b85c02 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -156,7 +156,7 @@ FreeBSD_task: image_family: freebsd-13-2 install_script: - pkg update -f && pkg upgrade -y && pkg install -y gmake gcc - - ln -s /usr/local/lib/gcc12/libgfortran.so.5.0.0 /usr/lib/libgfortran.so + - ln -s /usr/local/lib/gcc13/libgfortran.so.5.0.0 /usr/lib/libgfortran.so compile_script: - gmake CC=clang FC=gfortran USE_OPENMP=1 CPP_THREAD_SAFETY_TEST=1 diff --git a/Makefile.rule b/Makefile.rule index 2e777cdc67..bb239be2a4 100644 --- a/Makefile.rule +++ b/Makefile.rule @@ -173,6 +173,10 @@ NO_AFFINITY = 1 # If you are compiling for Linux and you have more than 16 numa nodes or more than 256 cpus # BIGNUMA = 1 +# If you are compiling for an embedded system ("bare metal") like Cortex M series +# Note that you will have to provide implementations of malloc() and free() in this case +# EMBEDDED = 1 + # Don't use AVX kernel on Sandy Bridge. It is compatible with old compilers # and OS. However, the performance is low. # NO_AVX = 1 diff --git a/Makefile.system b/Makefile.system index 902b536052..1f1cfd16c2 100644 --- a/Makefile.system +++ b/Makefile.system @@ -811,8 +811,12 @@ ifeq ($(ARCH), arm) NO_BINARY_MODE = 1 BINARY_DEFINED = 1 +ifneq ($(EMBEDDED), 1) CCOMMON_OPT += -marm FCOMMON_OPT += -marm +else +CCOMMON_OPT += -DOS_EMBEDDED -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 +endif # If softfp abi is mentioned on the command line, force it. ifeq ($(ARM_SOFTFP_ABI), 1)