mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-01-31 03:27:39 +00:00
5660ec4741
This release is an atomic upgrade to GCC 14.1.0 with C23 and C++23
68 lines
1.5 KiB
Bash
Executable file
68 lines
1.5 KiB
Bash
Executable file
#!/bin/sh
|
|
# /opt/aarch64o2/lib/gcc/aarch64-linux-musl/9.2.0/include
|
|
# /opt/cross11portcosmo/lib/gcc/aarch64-linux-musl/11.2.0/include
|
|
|
|
# IMPORTANT NOTES
|
|
#
|
|
# 1. You also need:
|
|
# #pragma GCC diagnostic ignored "-Wmissing-braces"
|
|
# In third_party/aarch64/arm_neon.internal.h
|
|
#
|
|
# 2. You have to rewrite arm_fp16 to use `__funline`.
|
|
#
|
|
# 3. You should fix up the `#pragma GCC aarch64` things.
|
|
#
|
|
|
|
s=/opt/include
|
|
d=third_party/aarch64
|
|
|
|
FILES='
|
|
arm_acle
|
|
arm_bf16
|
|
arm_fp16
|
|
arm_neon
|
|
arm_sve
|
|
'
|
|
|
|
strip_c_comments() {
|
|
# https://stackoverflow.com/a/13062682/1653720
|
|
[ $# -eq 2 ] && arg="$1" || arg=""
|
|
eval file="\$$#"
|
|
sed 's/a/aA/g; s/__/aB/g; s/#/aC/g' "$file" |
|
|
gcc -P -E $arg - |
|
|
sed 's/aC/#/g; s/aB/__/g; s/aA/a/g'
|
|
}
|
|
|
|
rm -f third_party/aarch64/*.h
|
|
|
|
for f in $FILES; do
|
|
echo cp $s/$f.h $d/$f.internal.h
|
|
cp $s/$f.h $d/$f.internal.h || exit
|
|
done
|
|
|
|
sed -i \
|
|
-e 's/# *include/#include/' \
|
|
-e '/#include .std/d' \
|
|
-e 's!#include [<"]!#include "third_party/aarch64/!' \
|
|
-e 's!\.h[>"]$!.internal.h"!' \
|
|
third_party/aarch64/*.h
|
|
|
|
# solve the pedantic gcc linter warning `'vmulxh_f16' is static but used
|
|
# in inline function 'vmulxh_laneq_f16' which is not static [-Werror]`
|
|
sed -i \
|
|
-e 's/static/extern/g' \
|
|
third_party/aarch64/arm_fp16.internal.h
|
|
|
|
for f in third_party/aarch64/*.h; do
|
|
strip_c_comments $f >$f.tmp || exit
|
|
mv $f.tmp $f
|
|
done
|
|
|
|
for f in third_party/aarch64/*.h; do
|
|
(
|
|
printf %s\\n '#if defined(__aarch64__) && !(__ASSEMBLER__ + __LINKER__ + 0)'
|
|
cat $f
|
|
printf %s\\n '#endif'
|
|
) >$f.tmp
|
|
mv $f.tmp $f
|
|
done
|