Meta: Remove i686 target

This commit is contained in:
Liav A 2022-10-04 02:48:37 +03:00 committed by Andreas Kling
parent d3eb4f7a41
commit 55f17fff36
Notes: sideshowbarker 2024-07-17 11:33:34 +09:00
16 changed files with 25 additions and 61 deletions

View file

@ -22,13 +22,9 @@ jobs:
matrix: matrix:
debug-options: ['ALL_DEBUG', 'NORMAL_DEBUG'] debug-options: ['ALL_DEBUG', 'NORMAL_DEBUG']
os: [ubuntu-22.04] os: [ubuntu-22.04]
arch: ['i686', 'x86_64'] arch: ['x86_64']
# If ccache is broken and you would like to bust the ccache cache on Github Actions, increment this: # If ccache is broken and you would like to bust the ccache cache on Github Actions, increment this:
ccache-mark: [0] ccache-mark: [0]
exclude:
# We currently manually disable the ALL_DEBUG build on x86_64 for sake of saving CI time, as it is not our main target right now
- debug-options: 'ALL_DEBUG'
arch: 'x86_64'
steps: steps:
# Pull requests can trail behind `master` and can cause breakage if merging before running the CI checks on an updated branch. # Pull requests can trail behind `master` and can cause breakage if merging before running the CI checks on an updated branch.
@ -121,8 +117,8 @@ jobs:
- name: Show ccache stats before build and configure - name: Show ccache stats before build and configure
run: | run: |
# We only have 5 GiB of cache available *in total*. Beyond that, GitHub deletes caches. # We only have 5 GiB of cache available *in total*. Beyond that, GitHub deletes caches.
# Currently, we use about 130 MB for the two toolchains (i686 & x86_64), and three ccache caches: # Currently, we use about 130 MB for the toolchains (x86_64), and 2 ccache caches:
# One with ALL_DEBUG (i686) and two with NORMAL_DEBUG (i686 & x86_64). # One with ALL_DEBUG (x86_64), and one with NORMAL_DEBUG (x86_64).
# Therefore, using 1.6 GB or more per cache causes disaster. # Therefore, using 1.6 GB or more per cache causes disaster.
# Building from scratch fills the ccache cache from 0 to about 0.7 GB, and after compression it comes out to # Building from scratch fills the ccache cache from 0 to about 0.7 GB, and after compression it comes out to
# about 0.25 GB, so 3 GB (1GB after compression) should be plenty, all while comfortably fitting in the cache. # about 0.25 GB, so 3 GB (1GB after compression) should be plenty, all while comfortably fitting in the cache.
@ -231,7 +227,7 @@ jobs:
run: '[ ! -e debug.log ] || cat debug.log' run: '[ ! -e debug.log ] || cat debug.log'
- name: Check manpages for completeness - name: Check manpages for completeness
if: ${{ matrix.debug-options == 'NORMAL_DEBUG' && matrix.arch == 'i686'}} if: ${{ matrix.debug-options == 'NORMAL_DEBUG' && matrix.arch == 'x86_64'}}
working-directory: ${{ github.workspace }}/Build/${{ matrix.arch }} working-directory: ${{ github.workspace }}/Build/${{ matrix.arch }}
env: env:
# The script already sets the correct SERENITY_RUN and SERENITY_KERNEL_CMDLINE envvars. # The script already sets the correct SERENITY_RUN and SERENITY_KERNEL_CMDLINE envvars.

View file

@ -9,7 +9,7 @@ jobs:
name: Static Analysis name: Static Analysis
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
env: env:
PVS_STUDIO_ANALYSIS_ARCH: i686 PVS_STUDIO_ANALYSIS_ARCH: x86_64
if: always() && github.repository == 'SerenityOS/serenity' && github.ref == 'refs/heads/master' if: always() && github.repository == 'SerenityOS/serenity' && github.ref == 'refs/heads/master'
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3

View file

@ -13,7 +13,7 @@ jobs:
# Latest scanner version is tracked on: https://docs.sonarcloud.io/advanced-setup/ci-based-analysis/sonarscanner-cli/ # Latest scanner version is tracked on: https://docs.sonarcloud.io/advanced-setup/ci-based-analysis/sonarscanner-cli/
SONAR_SCANNER_VERSION: 4.7.0.2747 SONAR_SCANNER_VERSION: 4.7.0.2747
SONAR_SERVER_URL: "https://sonarcloud.io" SONAR_SERVER_URL: "https://sonarcloud.io"
SONAR_ANALYSIS_ARCH: i686 SONAR_ANALYSIS_ARCH: x86_64
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
with: with:

View file

@ -1,6 +1,6 @@
parameters: parameters:
os: 'Linux' os: 'Linux'
arch: 'i686' arch: 'x86_64'
toolchain: 'gcc' toolchain: 'gcc'
coverage: 'OFF' coverage: 'OFF'
download_cache_path: '' download_cache_path: ''

View file

@ -1,5 +1,5 @@
parameters: parameters:
arch: 'i686' arch: 'x86_64'
coverage: 'OFF' coverage: 'OFF'
jobs: jobs:

View file

@ -28,8 +28,7 @@ _serenity() {
local targets local targets
targets=( targets=(
'i686:Target i686 (default)' 'x86_64:Target x86_64 (default)'
'x86_64:Target x86_64'
'aarch64:Target aarch64' 'aarch64:Target aarch64'
'lagom:Target host machine' 'lagom:Target host machine'
) )

View file

@ -32,11 +32,6 @@ fi
# Prepend the toolchain qemu directory so we pick up QEMU from there # Prepend the toolchain qemu directory so we pick up QEMU from there
PATH="$SCRIPT_DIR/../Toolchain/Local/qemu/bin:$PATH" PATH="$SCRIPT_DIR/../Toolchain/Local/qemu/bin:$PATH"
# Also prepend the i686 toolchain directory because that's where most
# people will have their QEMU binaries if they built them before the
# directory was changed to Toolchain/Local/qemu.
PATH="$SCRIPT_DIR/../Toolchain/Local/i686/bin:$PATH"
# We depend on GNU coreutils du for the --apparent-size extension. # We depend on GNU coreutils du for the --apparent-size extension.
# GNU coreutils is a build dependency. # GNU coreutils is a build dependency.
if command -v gdu > /dev/null 2>&1 && gdu --version | grep -q "GNU coreutils"; then if command -v gdu > /dev/null 2>&1 && gdu --version | grep -q "GNU coreutils"; then

View file

@ -31,10 +31,6 @@ if [ "$SERENITY_ARCH" = "x86_64" ]; then
gdb_arch=i386:x86-64 gdb_arch=i386:x86-64
prekernel_image=Prekernel64 prekernel_image=Prekernel64
kernel_base=0x2000200000 kernel_base=0x2000200000
elif [ "$SERENITY_ARCH" = "i686" ]; then
gdb_arch=i386:intel
prekernel_image=Prekernel32
kernel_base=0xc0200000
elif [ "$SERENITY_ARCH" = "aarch64" ]; then elif [ "$SERENITY_ARCH" = "aarch64" ]; then
gdb_arch=aarch64:armv8-r gdb_arch=aarch64:armv8-r
prekernel_image=Prekernel prekernel_image=Prekernel

View file

@ -49,10 +49,10 @@ fi
# Prepend the toolchain qemu directory so we pick up QEMU from there # Prepend the toolchain qemu directory so we pick up QEMU from there
PATH="$SCRIPT_DIR/../Toolchain/Local/qemu/bin:$PATH" PATH="$SCRIPT_DIR/../Toolchain/Local/qemu/bin:$PATH"
# Also prepend the i686 toolchain directory because that's where most # Also prepend the x86_64 toolchain directory because that's where most
# people will have their QEMU binaries if they built them before the # people will have their QEMU binaries if they built them before the
# directory was changed to Toolchain/Local/qemu. # directory was changed to Toolchain/Local/qemu.
PATH="$SCRIPT_DIR/../Toolchain/Local/i686/bin:$PATH" PATH="$SCRIPT_DIR/../Toolchain/Local/x86_64/bin:$PATH"
SERENITY_RUN="${SERENITY_RUN:-$1}" SERENITY_RUN="${SERENITY_RUN:-$1}"
@ -75,7 +75,7 @@ if [ -z "$SERENITY_QEMU_BIN" ]; then
elif [ "$SERENITY_ARCH" = "x86_64" ]; then elif [ "$SERENITY_ARCH" = "x86_64" ]; then
SERENITY_QEMU_BIN="${QEMU_BINARY_PREFIX}qemu-system-x86_64${QEMU_BINARY_SUFFIX}" SERENITY_QEMU_BIN="${QEMU_BINARY_PREFIX}qemu-system-x86_64${QEMU_BINARY_SUFFIX}"
else else
SERENITY_QEMU_BIN="${QEMU_BINARY_PREFIX}qemu-system-i386${QEMU_BINARY_SUFFIX}" die "Please specify a valid CPU architecture."
fi fi
fi fi

View file

@ -7,7 +7,7 @@ print_help() {
NAME=$(basename "$ARG0") NAME=$(basename "$ARG0")
cat <<EOF cat <<EOF
Usage: $NAME COMMAND [TARGET] [TOOLCHAIN] [ARGS...] Usage: $NAME COMMAND [TARGET] [TOOLCHAIN] [ARGS...]
Supported TARGETs: aarch64, i686, x86_64, lagom. Defaults to SERENITY_ARCH, or x86_64 if not set. Supported TARGETs: aarch64, x86_64, lagom. Defaults to SERENITY_ARCH, or x86_64 if not set.
Supported TOOLCHAINs: GNU, Clang. Defaults to SERENITY_TOOLCHAIN, or GNU if not set. Supported TOOLCHAINs: GNU, Clang. Defaults to SERENITY_TOOLCHAIN, or GNU if not set.
Supported COMMANDs: Supported COMMANDs:
build: Compiles the target binaries, [ARGS...] are passed through to ninja build: Compiles the target binaries, [ARGS...] are passed through to ninja
@ -46,22 +46,22 @@ Usage: $NAME COMMAND [TARGET] [TOOLCHAIN] [ARGS...]
Examples: Examples:
$NAME run i686 GNU smp=on $NAME run x86_64 GNU smp=on
Runs the image in QEMU passing "smp=on" to the kernel command line Runs the image in QEMU passing "smp=on" to the kernel command line
$NAME run i686 GNU 'init=/bin/UserspaceEmulator init_args=/bin/SystemServer' $NAME run x86_64 GNU 'init=/bin/UserspaceEmulator init_args=/bin/SystemServer'
Runs the image in QEMU, and run the entire system through UserspaceEmulator (not fully supported yet) Runs the image in QEMU, and run the entire system through UserspaceEmulator (not fully supported yet)
$NAME run $NAME run
Runs the image for the default TARGET i686 in QEMU Runs the image for the default TARGET x86_64 in QEMU
$NAME run lagom js -A $NAME run lagom js -A
Runs the Lagom-built js(1) REPL Runs the Lagom-built js(1) REPL
$NAME test lagom $NAME test lagom
Runs the unit tests on the build host Runs the unit tests on the build host
$NAME kaddr2line i686 0x12345678 $NAME kaddr2line x86_64 0x12345678
Resolves the address 0x12345678 in the Kernel binary Resolves the address 0x12345678 in the Kernel binary
$NAME addr2line i686 WindowServer 0x12345678 $NAME addr2line x86_64 WindowServer 0x12345678
Resolves the address 0x12345678 in the WindowServer binary Resolves the address 0x12345678 in the WindowServer binary
$NAME gdb i686 smp=on -ex 'hb *init' $NAME gdb x86_64 smp=on -ex 'hb *init'
Runs the image for the TARGET i686 in qemu and attaches a gdb session Runs the image for the TARGET x86_64 in qemu and attaches a gdb session
setting a breakpoint at the init() function in the Kernel. setting a breakpoint at the init() function in the Kernel.
EOF EOF
} }
@ -120,10 +120,6 @@ is_valid_target() {
CMAKE_ARGS+=("-DSERENITY_ARCH=aarch64") CMAKE_ARGS+=("-DSERENITY_ARCH=aarch64")
return 0 return 0
fi fi
if [ "$TARGET" = "i686" ]; then
CMAKE_ARGS+=("-DSERENITY_ARCH=i686")
return 0
fi
if [ "$TARGET" = "x86_64" ]; then if [ "$TARGET" = "x86_64" ]; then
CMAKE_ARGS+=("-DSERENITY_ARCH=x86_64") CMAKE_ARGS+=("-DSERENITY_ARCH=x86_64")
return 0 return 0

View file

@ -1,6 +1,6 @@
# SerenityOS # SerenityOS
Graphical Unix-like operating system for x86 computers. Graphical Unix-like operating system for x86-64 computers.
[![GitHub Actions Status](https://github.com/SerenityOS/serenity/workflows/Build,%20lint,%20and%20test/badge.svg)](https://github.com/SerenityOS/serenity/actions?query=workflow%3A"Build%2C%20lint%2C%20and%20test") [![GitHub Actions Status](https://github.com/SerenityOS/serenity/workflows/Build,%20lint,%20and%20test/badge.svg)](https://github.com/SerenityOS/serenity/actions?query=workflow%3A"Build%2C%20lint%2C%20and%20test")
[![Azure DevOps Status](https://dev.azure.com/SerenityOS/SerenityOS/_apis/build/status/CI?branchName=master)](https://dev.azure.com/SerenityOS/SerenityOS/_build/latest?definitionId=1&branchName=master) [![Azure DevOps Status](https://dev.azure.com/SerenityOS/SerenityOS/_apis/build/status/CI?branchName=master)](https://dev.azure.com/SerenityOS/SerenityOS/_build/latest?definitionId=1&branchName=master)
@ -28,7 +28,7 @@ You can watch videos of the system being developed on YouTube:
## Features ## Features
* Modern x86 32-bit and 64-bit kernel with pre-emptive multi-threading * Modern x86 64-bit kernel with pre-emptive multi-threading
* [Browser](Userland/Applications/Browser/) with JavaScript, WebAssembly, and more (check the spec compliance for [JS](https://libjs.dev/test262/), [CSS](https://css.tobyase.de/), and [WASM](https://libjs.dev/wasm/)) * [Browser](Userland/Applications/Browser/) with JavaScript, WebAssembly, and more (check the spec compliance for [JS](https://libjs.dev/test262/), [CSS](https://css.tobyase.de/), and [WASM](https://libjs.dev/wasm/))
* Security features (hardware protections, limited userland capabilities, W^X memory, `pledge` & `unveil`, (K)ASLR, OOM-resistance, web-content isolation, state-of-the-art TLS algorithms, ...) * Security features (hardware protections, limited userland capabilities, W^X memory, `pledge` & `unveil`, (K)ASLR, OOM-resistance, web-content isolation, state-of-the-art TLS algorithms, ...)
* [System services](Userland/Services/) (WindowServer, LoginServer, AudioServer, WebServer, RequestServer, CrashServer, ...) and modern IPC * [System services](Userland/Services/) (WindowServer, LoginServer, AudioServer, WebServer, RequestServer, CrashServer, ...) and modern IPC

View file

@ -9,7 +9,7 @@ echo "$DIR"
PREFIX="$DIR/Local/clang/" PREFIX="$DIR/Local/clang/"
BUILD="$DIR/../Build/" BUILD="$DIR/../Build/"
USERLAND_ARCHS="i686 x86_64" USERLAND_ARCHS="x86_64"
ARCHS="$USERLAND_ARCHS aarch64" ARCHS="$USERLAND_ARCHS aarch64"
MD5SUM="md5sum" MD5SUM="md5sum"
@ -286,7 +286,6 @@ pushd "$DIR/Build/clang"
pushd llvm pushd llvm
buildstep "llvm/configure" cmake "$DIR/Tarballs/$LLVM_NAME/llvm" \ buildstep "llvm/configure" cmake "$DIR/Tarballs/$LLVM_NAME/llvm" \
-G Ninja \ -G Ninja \
-DSERENITY_i686-pc-serenity_SYSROOT="$BUILD/i686clang/Root" \
-DSERENITY_x86_64-pc-serenity_SYSROOT="$BUILD/x86_64clang/Root" \ -DSERENITY_x86_64-pc-serenity_SYSROOT="$BUILD/x86_64clang/Root" \
-DSERENITY_aarch64-pc-serenity_SYSROOT="$BUILD/aarch64clang/Root" \ -DSERENITY_aarch64-pc-serenity_SYSROOT="$BUILD/aarch64clang/Root" \
-DCMAKE_INSTALL_PREFIX="$PREFIX" \ -DCMAKE_INSTALL_PREFIX="$PREFIX" \

View file

@ -25,7 +25,7 @@ set(LLVM_INSTALL_BINUTILS_SYMLINKS OFF CACHE BOOL "")
set(CLANG_ENABLE_CLANGD OFF CACHE BOOL "") set(CLANG_ENABLE_CLANGD OFF CACHE BOOL "")
set(compiler_flags "-nostdlib -nostdlib++") set(compiler_flags "-nostdlib -nostdlib++")
foreach(target i686-pc-serenity;x86_64-pc-serenity;aarch64-pc-serenity) foreach(target x86_64-pc-serenity;aarch64-pc-serenity)
list(APPEND targets "${target}") list(APPEND targets "${target}")
set(RUNTIMES_${target}_CMAKE_BUILD_TYPE Release CACHE STRING "") set(RUNTIMES_${target}_CMAKE_BUILD_TYPE Release CACHE STRING "")

View file

@ -94,7 +94,7 @@ index 0000000000000000000000000000000000000000..17551aaa1a07e6c0b7365f9889937512
+#endif +#endif
+ +
+/* Default arguments you want when running your +/* Default arguments you want when running your
+ i686-serenity-gcc/x86_64-serenity-gcc toolchain */ + x86_64-serenity-gcc toolchain */
+#undef LIB_SPEC +#undef LIB_SPEC
+#define LIB_SPEC "-lc" /* link against C standard library */ +#define LIB_SPEC "-lc" /* link against C standard library */
+ +

View file

@ -13,7 +13,6 @@ protection and position-independent code by default.
clang/lib/Driver/CMakeLists.txt | 1 + clang/lib/Driver/CMakeLists.txt | 1 +
clang/lib/Driver/Driver.cpp | 4 + clang/lib/Driver/Driver.cpp | 4 +
clang/lib/Driver/ToolChain.cpp | 2 + clang/lib/Driver/ToolChain.cpp | 2 +
clang/lib/Driver/ToolChains/Arch/X86.cpp | 1 +
clang/lib/Driver/ToolChains/Serenity.cpp | 336 +++++++++++++++++++++++ clang/lib/Driver/ToolChains/Serenity.cpp | 336 +++++++++++++++++++++++
clang/lib/Driver/ToolChains/Serenity.h | 99 +++++++ clang/lib/Driver/ToolChains/Serenity.h | 99 +++++++
8 files changed, 467 insertions(+) 8 files changed, 467 insertions(+)
@ -127,18 +126,6 @@ index 7a4319ea680f97dde074b21afa2ee6f75c350091..8db07d9dd0754bffeddf00afe365fe7d
default: default:
return getOS(); return getOS();
} }
diff --git a/clang/lib/Driver/ToolChains/Arch/X86.cpp b/clang/lib/Driver/ToolChains/Arch/X86.cpp
index cd7c014faa5e0d503adc9f2c30b83b3efbb7e315..004185d28816b8e8bb903612aa053cb883524fc5 100644
--- a/clang/lib/Driver/ToolChains/Arch/X86.cpp
+++ b/clang/lib/Driver/ToolChains/Arch/X86.cpp
@@ -113,6 +113,7 @@ std::string x86::getX86TargetCPU(const Driver &D, const ArgList &Args,
case llvm::Triple::OpenBSD:
return "i586";
case llvm::Triple::FreeBSD:
+ case llvm::Triple::Serenity:
return "i686";
default:
// Fallback to p4.
diff --git a/clang/lib/Driver/ToolChains/Serenity.cpp b/clang/lib/Driver/ToolChains/Serenity.cpp diff --git a/clang/lib/Driver/ToolChains/Serenity.cpp b/clang/lib/Driver/ToolChains/Serenity.cpp
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..4fdf45a19eb2704d00a03e7b2f34f87f63a0a074 index 0000000000000000000000000000000000000000..4fdf45a19eb2704d00a03e7b2f34f87f63a0a074

View file

@ -33,10 +33,6 @@ stages:
dependsOn: Toolchain dependsOn: Toolchain
jobs: jobs:
- template: Meta/Azure/Serenity.yml
parameters:
arch: 'i686'
- template: Meta/Azure/Serenity.yml - template: Meta/Azure/Serenity.yml
parameters: parameters:
arch: 'x86_64' arch: 'x86_64'