Compare commits

..
Author SHA1 Message Date
t3hn3rd aac376fa22 progress: ImGui Port - Desktop UI + ImGui rendering performance overhaul
Full ImGui desktop environment (desktop.pas):
- Gradient wallpaper, taskbar with clock, start menu
- Desktop icons with click-to-open
- Windowed apps: System Info, Terminal, File Browser, Task Manager
- Terminal dispatches to registered kernel commands with output capture

Performance: Software rasterizer rewrite (imgui.pas, imgbridge.c)
- Quad detection: merge consecutive triangle pairs into fast rect fills
- 3 new fast-path rect fillers (solid/gradient/textured) using REP STOSD
  and 16.16 fixed-point integer inner loops
- Triangle rasterizer rewritten with fixed-point edge functions
- Back-buffer clear: DrawPixel loop -> REP STOSD (~200x faster)
- Render stat debug counters added

ISR-safe input buffering (imgbridge.c)
- Keyboard/mouse events buffered in lock-free ring buffers from ISR context
- Drained once per frame from main loop to prevent data races

Other changes:
- imguitypes.pas: InputTextFlags renumbered for cimgui 1.91+
- video.pas: backBufferLocation getter added
- kernel.pas: VFS init moved earlier, main loop uses desktop_frame,
  mouse hook uses ISR-safe buffering
- lmemorymanager.pas: kalloc/kfree exported with public aliases for C linkage
- scheduler.pas: Root_Task moved to interface for desktop task manager
- terminal.pas: freeParams exposed in interface
2026-02-25 23:28:12 +00:00
t3hn3rd 51a29244ed Imgui initial changes & shim (Claude Opus 4.6)
Can now draw ImGui demo.
2026-02-22 21:06:59 +00:00
t3hn3rd 8be364c990 Merge pull request 'feature/ci-cd-drone-migration' (#3) from feature/ci-cd-drone-migration into develop
continuous-integration/drone/push Build is passing
Reviewed-on: #3
2025-03-10 20:08:38 +00:00
t3hn3rd 0e2c6b2936 Final commit to merge through develop & master
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is failing
- CI/CD Pipeline now working & tested.
- Commits to all branches will trigger the pipeline in DroneCI.
- Commits to master will trigger the resulting ISO artefact to be uploaded to Gitea as a Package.

# Conflicts:
#	.drone.yml
2025-03-10 12:48:21 +00:00
t3hn3rd 632c3fa66b DevOps Workflow Improvements
- `VirtualBox-Wrapper.ps1` now takes 'up' or 'down' as opposed to a machine name. This allows start/stop of a virtualmachine.
- `VirtualBox-Wrapper.ps1` now relies on a gitignored `localenv.json` to work.
- `VirtualBox-Wrapper.ps1` can also optionally monitor the log file generated from the serial adapter in VirtualBox.
- `readme.md` updated to provide instructions on how to populate the `localenv.json` file.
- `tasks.json` updated to have a "Clean" task to --remove-orphans, the Build task depends on this.
- `tasks.json` updated to have a "Close VirtualBox" task, this runs the `virtualbox-wrapper.ps1` in 'down' mode. The Build task depends on this.
- `launch.json` updated to run the `VirtualBox-Wrapper.ps1` with the "-Command up" argument, instead of machine name.
- .gitignore updated to ignore any instances of `localenv.json`.
2025-03-09 13:05:39 +00:00
t3hn3rd 875e3e4765 VirtualBox 7 Compatability Changes
- Created a PowerShell script `virtualbox-wrapper.ps1` to wrap calls to vboxmanage and only exit once the virtual machine has been terminated.
- Updated launch.json to use the PowerShell launch type to launch `virtualbox-wrapper.ps1` with the machine name supplied as an argument.
- Updated `readme.md` to reflect these changes.
2025-03-08 19:29:46 +00:00
t3hn3rd e28d68128d Merge branch 'feature/video-refactor' of https://gitlab.spexeah.com/spexeah/asuro into feature/video-refactor 2022-02-07 19:48:15 +00:00
t3hn3rd a9969d58f8 Draw texture function added to Video driver. 2022-02-07 19:48:01 +00:00
t3hn3rd d7a54d858d TARGA & Texture Units
Added TARGA and Texture units to represent & parse TARGA into and provide a standard texture format for use when drawing.
2022-02-07 19:48:00 +00:00
t3hn3rd 4e991c3e6f Double Buffer with SSE 128 copy working 2022-02-07 19:48:00 +00:00
t3hn3rd a3217de71a SSE MOVUPS/128bit Memcpy + Fixed Doublebuffer 2022-02-07 19:48:00 +00:00
t3hn3rd 19b433a19f Vesa32 additions + util functions to support 2022-02-07 19:48:00 +00:00
t3hn3rd 69d1d22a18 Fixed files being weird with case/unit searches 2022-02-07 19:48:00 +00:00
t3hn3rd 5c15343ed0 Delete files to recommit with lowercase names. 2022-02-07 19:48:00 +00:00
t3hn3rd 3ae349fbc8 New modular driver set for video
Started outlining how the modular driver set will look for video drawing routines. Currently supports Drawing pixels to the screen & Flushing backbuffer -> frontbuffer.
Still very much test code, tracer is used everywhere for debugging, NOT DEVELOP READY.
Many more draw routines need implementing - such as, but not limited to; drawRect, drawBitmap, drawLine, drawCurve, drawCircle.

TODO: Implement the aforementioned routines in all VESA modes + WindowManager.
2022-02-07 19:48:00 +00:00
t3hn3rd 78c060c114 Abstracted video driver somewhat
Split out video driver into abstract/standard/implementation.
2022-02-07 19:48:00 +00:00
t3hn3rd cd925e96c2 Enabled AVX + Changed flush to flush 2 pixels per iteration. 2022-02-07 19:48:00 +00:00
t3hn3rd 142dd486dd Double buffering implemented
Double buffering is now enabled with the use of the new large alloc (klalloc).
2022-02-07 19:48:00 +00:00
t3hn3rd beeeabd441 Expaneded Video.pas and addec color.pas
Backbuffer will need modification to lmemorymanager to remove the limits to allocation size.
2022-02-07 19:48:00 +00:00
t3hn3rd b73c66f6d6 Started work on refactored video. 2022-02-07 19:48:00 +00:00
Aaron 189526cab8 Merge branch 'feature/kernel-size-awareness' into 'develop'
Kernel Size Awareness

See merge request spexeah/asuro!32
2022-02-07 19:43:45 +00:00
Aaron 595dd4fbac Merge branch 'feature/compile-script-improvements' into 'develop'
Compile Script Improvements

See merge request spexeah/asuro!31
2022-02-07 19:42:59 +00:00
t3hn3rd ba6d8037d2 Compile Script Improvements
Improved the compile script (compile_sources.sh) to show line numbers on error and generally compile faster.
2022-02-06 13:32:57 +00:00
t3hn3rd 208bda92c8 Kernel Size Awareness
Modified the linker script + Added an init function to System.pas to be called at system boot, this allows tracking of the Kernel start & end addresses, and thus, allows us to calculate the kernel size.
2022-02-06 13:29:29 +00:00
t3hn3rd a7111d3cac Draw texture function added to Video driver. 2022-02-06 13:26:12 +00:00
t3hn3rd d182fd7f46 TARGA & Texture Units
Added TARGA and Texture units to represent & parse TARGA into and provide a standard texture format for use when drawing.
2022-02-06 13:25:04 +00:00
t3hn3rd 4c5038b001 Merge branch 'cherry-pick-24c371ca' into 'develop'
Added new String functions

See merge request spexeah/asuro!30
2022-01-31 11:26:25 +00:00
Aaron 98481ea1ce Added new String functions
(cherry picked from commit 24c371cab1)
2022-01-31 00:36:22 +00:00
t3hn3rd b5582b1284 Double Buffer with SSE 128 copy working 2022-01-30 00:17:50 +00:00
Aaron 346dc4e4c9 Merge branch 'feature/readme-update-1' into 'develop'
Update readme.md

See merge request spexeah/asuro!29
2022-01-29 12:47:56 +00:00
t3hn3rd b2eee58df4 Update readme.md 2022-01-29 12:46:35 +00:00
t3hn3rd 161cea4920 SSE MOVUPS/128bit Memcpy + Fixed Doublebuffer 2022-01-29 01:39:45 +00:00
t3hn3rd 6b81c4ece0 Vesa32 additions + util functions to support 2022-01-23 16:58:46 +00:00
t3hn3rd ee17f69115 Fixed files being weird with case/unit searches 2021-07-07 17:49:04 +01:00
t3hn3rd 81c19bff16 Delete files to recommit with lowercase names. 2021-07-07 17:49:04 +01:00
t3hn3rd e7cda58113 New modular driver set for video
Started outlining how the modular driver set will look for video drawing routines. Currently supports Drawing pixels to the screen & Flushing backbuffer -> frontbuffer.
Still very much test code, tracer is used everywhere for debugging, NOT DEVELOP READY.
Many more draw routines need implementing - such as, but not limited to; drawRect, drawBitmap, drawLine, drawCurve, drawCircle.

TODO: Implement the aforementioned routines in all VESA modes + WindowManager.
2021-07-07 17:49:04 +01:00
t3hn3rd 44f18554e1 Abstracted video driver somewhat
Split out video driver into abstract/standard/implementation.
2021-07-07 17:49:04 +01:00
t3hn3rd 52b42ec975 Enabled AVX + Changed flush to flush 2 pixels per iteration. 2021-07-07 17:49:04 +01:00
t3hn3rd 2815dd9e4d Double buffering implemented
Double buffering is now enabled with the use of the new large alloc (klalloc).
2021-07-07 17:49:04 +01:00
t3hn3rd d057bfc3ff Expaneded Video.pas and addec color.pas
Backbuffer will need modification to lmemorymanager to remove the limits to allocation size.
2021-07-07 17:49:04 +01:00
t3hn3rd e4621c8aaa Started work on refactored video. 2021-07-07 17:49:04 +01:00
t3hn3rd 170b93dd69 Merge branch 'feature/pipeline-docs-fix' into 'develop'
Docgen changes

See merge request spexeah/asuro!27
2021-07-06 19:42:57 +00:00
t3hn3rd 34d6873a6a Docgen changes
Changed docgen job to create doc folder, not public for now.
2021-07-06 20:35:26 +01:00
t3hn3rd e69d06ea4f Merge branch 'joe/ci-suggestions' into 'develop'
3 time the charm

See merge request spexeah/asuro!26
2021-07-06 19:18:24 +00:00
Jinux 2939afa729 3 time the charm 2021-07-06 19:18:23 +00:00
t3hn3rd ad8e80913a Merge branch 'feature/documentation' into 'develop'
Changed comments in Asuro.pas when generated

Changed the Asuro.pas comment to be the standard format in terms of Directory->File (no .pas) for PasDoc gen.

See merge request spexeah/asuro!23
2021-07-05 18:23:11 +00:00
t3hn3rd 4d25ceef77 Merge branch 'feature/documentation' into 'develop'
Tidied up comments for docgen.

Added some documentation to Asuro.pas, ProgManager, AHCI, asfs & ATA_ISR to fix some of the pasdoc/docgen issues.

See merge request spexeah/asuro!22
2021-07-05 18:09:51 +00:00
53 changed files with 6782 additions and 354 deletions
+52
View File
@@ -0,0 +1,52 @@
kind: pipeline
type: docker
name: build
steps:
- name: build-image
image: plugins/docker
settings:
repo: t3hn3rd/asuro-build
tags: latest
dockerfile: Dockerfile
registry: docker.io
username:
from_secret: docker_username
password:
from_secret: docker_password
- name: compile
image: t3hn3rd/asuro-build:latest
depends_on:
- build-image
commands:
- git fetch --tags
- find . -type f -print0 | xargs -0 dos2unix
- chmod +x /drone/src/*.sh
- /drone/src/compile.sh
- name: upload-iso-artifact
image: alpine/git
depends_on:
- compile
when:
branch:
- master
environment:
GITEA_TOKEN:
from_secret: gitea_token
commands:
- apk add --no-cache curl
- chmod +w Asuro.iso
- cp Asuro.iso "Asuro-$(git rev-parse --short HEAD).iso"
- echo "Uploading Asuro-$(git rev-parse --short HEAD).iso to Gitea Packages..."
- |
curl -X PUT "https://gitea.spexeah.com/api/packages/Spexeah/generic/asuro-iso/$(git rev-parse --short HEAD)/Asuro.iso" \
-H "Authorization: token $GITEA_TOKEN" --upload-file "Asuro-$(git rev-parse --short HEAD).iso"
- echo "Updating latest ISO reference..."
- |
curl -X DELETE https://gitea.spexeah.com/api/packages/Spexeah/generic/asuro-iso/latest/Asuro.iso \
-H "Authorization: token $GITEA_TOKEN" || echo "No previous latest version found."
- |
curl -X PUT https://gitea.spexeah.com/api/packages/Spexeah/generic/asuro-iso/latest/Asuro.iso \
-H "Authorization: token $GITEA_TOKEN" --upload-file "Asuro-$(git rev-parse --short HEAD).iso"
+1 -2
View File
@@ -10,5 +10,4 @@
/*.sh~
/*.img
src/include/asuro.pas
.vscode/launch.json
.vscode
localenv.json
-99
View File
@@ -1,99 +0,0 @@
stages:
- Generate Stub and Versions
- Generate Version Files
- Compile Sources
- Link
- Generate ISO
- Generate Sources List
- Generate Documentation
compile_stub:
stage: Generate Stub and Versions
script:
- chmod +x ./compile_stub.sh
- ./compile_stub.sh
artifacts:
paths:
- lib/stub.o
vergen:
stage: Generate Stub and Versions
script:
- chmod +x ./compile_vergen.sh
- ./compile_vergen.sh
artifacts:
paths:
- release/*.svg
- src/include/asuro.pas
compile_sources:
stage: Compile Sources
script:
- chmod +x ./compile_sources.sh
- ./compile_sources.sh
artifacts:
paths:
- lib/*.o
dependencies:
- compile_stub
- vergen
needs:
- vergen
- compile_stub
link:
stage: Link
script:
- chmod +x ./compile_link.sh
- ./compile_link.sh
artifacts:
paths:
- bin/kernel.bin
dependencies:
- compile_sources
needs:
- compile_sources
isogen:
stage: Generate ISO
script:
- chmod +x ./compile_isogen.sh
- ./compile_isogen.sh
- chmod +x ./compile_sumgen.sh
- ./compile_sumgen.sh
artifacts:
paths:
- ./Asuro.iso
- ./release/checksum.svg
dependencies:
- link
needs:
- link
sourcelist:
stage: Generate Sources List
script:
- chmod +x ./compile_sourcelist.sh
- ./compile_sourcelist.sh
artifacts:
paths:
- ./sources.list
dependencies:
- vergen
needs:
- vergen
docgen:
stage: Generate Documentation
script:
- chmod +x ./compile_docs.sh
- ./compile_docs.sh
artifacts:
paths:
- ./doc/*
dependencies:
- vergen
- sourcelist
needs:
- vergen
- sourcelist
+3 -10
View File
@@ -3,18 +3,11 @@
{
"name":"Run",
"request": "launch",
"type": "coreclr",
"type": "PowerShell",
"preLaunchTask": "Build",
"program": "VBoxSDL",
"args": [
"--comment",
"Asuro",
"--startvm",
"7d395c96-891c-4139-b77d-9b6b144b0b93"
],
"script": "${workspaceFolder}/virtualbox-wrapper.ps1",
"args": ["-Command", "up"],
"cwd": "${workspaceFolder}",
"console": "internalConsole",
"internalConsoleOptions": "neverOpen"
}
]
}
+24 -2
View File
@@ -9,14 +9,18 @@
"command": "docker-compose",
"args": [
"run",
"builder"
"builder",
],
"type": "shell",
"problemMatcher": [],
"group": {
"kind": "build",
"isDefault": true
}
},
"dependsOn": [
"Close VirtualBox",
"Clean"
]
},
{
"label": "Build (Builder)",
@@ -26,6 +30,24 @@
"builder"
],
"type": "shell"
},
{
"label": "Clean",
"command": "docker-compose",
"args": [
"down",
"--remove-orphans"
],
"type": "shell"
},
{
"label": "Close VirtualBox",
"command": "./virtualbox-wrapper.ps1",
"args": [
"-Command",
"down"
],
"type": "shell"
}
]
}
+16 -9
View File
@@ -2,18 +2,25 @@ FROM ubuntu:latest
VOLUME ["/code"]
ENV DEBIAN_FRONTEND=noninteractive
RUN dpkg --add-architecture i386
RUN apt-get update
RUN apt-get install nasm curl make:i386 binutils:i386 xorriso grub-pc-bin dos2unix -y
RUN apt-get clean
RUN curl https://sourceforge.net/projects/freepascal/files/Linux/2.6.4/fpc-2.6.4.i386-linux.tar/download --output fpc.tar -L && \
tar -xf fpc.tar
RUN apt-get update && apt-get install -y \
curl dos2unix wget git make nasm binutils xorriso grub-pc-bin \
gcc-multilib g++-multilib && \
apt-get clean my room
WORKDIR ./fpc-2.6.4.i386-linux
RUN ./install.sh
RUN git clone --depth=1 --recurse-submodules https://github.com/cimgui/cimgui.git /cimgui
SHELL ["/bin/bash", "-c"]
ARG FPC_VERSION=2.6.4
RUN curl -sL https://sourceforge.net/projects/freepascal/files/Linux/$FPC_VERSION/fpc-$FPC_VERSION.i386-linux.tar/download | tar -xf - && \
pushd fpc-$FPC_VERSION.i386-linux && ./install.sh && popd && \
rm -rf fpc-$FPC_VERSION.i386-linux
COPY compile.sh /compile.sh
RUN mkdir /code
ADD https://raw.githubusercontent.com/fsaintjacques/semver-tool/master/src/semver /usr/bin/semver
RUN chmod +x /usr/bin/semver
WORKDIR /code
RUN find . -type f -print0 | xargs -0 dos2unix
ENTRYPOINT ["/bin/bash", "/compile.sh"]
ENTRYPOINT ["/bin/bash", "-c"]
CMD ["/compile.sh"]
+32 -44
View File
@@ -1,4 +1,4 @@
#!/bin/sh
#!/usr/bin/env bash
ERRCOUNT=0
echo " "
echo "======================="
@@ -7,56 +7,44 @@ echo "Asuro Compilation"
echo " "
#Compile Stub.asm
./compile_stub.sh
if [ $? -ne 0 ]
then
echo "Failed to compile stub!"
ERRCOUNT=$((ERRCOUNT+1))
else
echo "Success."
fi
rm lib/*
#Generate .pas with versioning headers.
./compile_vergen.sh
runOrFail() {
local binary=$1
local errorText=$2
if $binary; then
echo "Success."
else
echo "$errorText"
ERRCOUNT=$((ERRCOUNT+1))
fi
}
#Compile all .pas sources
./compile_sources.sh
if [ $? -ne 0 ]
then
echo " "
echo "Failed to compile FPC Sources!"
ERRCOUNT=$((ERRCOUNT+1))
else
echo " "
echo "Success."
fi
declare -a run_steps=(
"compile_stub.sh" "Failed to compile stub!"
"compile_vergen.sh" "Versions failed to compile"
"compile_imgui.sh" "Failed to compile ImGui!"
"compile_sources.sh" "Failed to compile FPC Sources!"
"compile_link.sh" "Failed linking!"
"compile_isogen.sh" "Failed to create ISO!"
)
#Link into a binary.
./compile_link.sh
if [ $? -ne 0 ]
then
echo "Failed linking!"
ERRCOUNT=$((ERRCOUNT+1))
else
echo "Success."
fi
#Generate an ISO with GRUB as the Bootloader.
./compile_isogen.sh
if [ $? -ne 0 ]
then
echo "Failed to create ISO!"
ERRCOUNT=$((ERRCOUNT+1))
else
echo "Success."
fi
for ((i=0; i<${#run_steps[@]}; i+=2))
do
if [ "$ERRCOUNT" -eq "0" ]
then
script=$(pwd)/"${run_steps[$i]}"
message="${run_steps[$i+1]}"
runOrFail "$script" "$message"
fi
done
#Call generate final artifacts based on failure or success of the above.
if [ "$ERRCOUNT" -ne "0" ]
then
./compile_finish.sh "failed"
. ./compile_finish.sh "failed"
else
./compile_finish.sh "success"
. ./compile_finish.sh "success"
fi
cd ..
cd ..
+1 -1
View File
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
echo > checksums.md5
for directory in $(find src/ -maxdepth 10 -type d); do
for filename in $directory/*.pas; do
+2 -3
View File
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
echo " "
echo "======================="
echo " "
@@ -14,5 +14,4 @@ echo "Removing old docs"
rm -rf ./doc/*
echo "Generating Docs..."
./pasdoc/bin/pasdoc -N "Asuro" -T "Asuro OS Documentation" -O "html" -E ./doc/ -S sources.list --use-tipue-search
echo "Docgen finished."
exit 0
echo "Docgen finished."
+2 -2
View File
@@ -1,8 +1,8 @@
#/bin/sh
#!/usr/bin/env bash
echo " "
echo "======================="
echo " "
if [ "$1" == "failed" ]
if [[ "$1" == "failed" ]]
then
echo "Errors Occurred, please review."
wget -q https://img.shields.io/badge/build-failed-red.svg -O release/build.svg 2>/dev/null
+90
View File
@@ -0,0 +1,90 @@
#!/usr/bin/env bash
echo " "
echo "======================="
echo " "
echo "Compiling ImGui (cimgui)..."
echo " "
IMGUI_DIR=/cimgui
IMGUI_SRC=$IMGUI_DIR/imgui
BRIDGE_SRC=src/driver/video/imgui
# Flags shared by all C/C++ compilation units:
# -m32 -> i386 target
# -ffreestanding -> no implicit stdlib inclusion
# -fno-builtin -> don't inline memcpy/memset/etc. so our stubs are used
# -O2 -> optimise for speed
# -ffunction-sections -fdata-sections -> allow --gc-sections in linker
C_FLAGS="-m32 -ffreestanding -fno-builtin -O2 -ffunction-sections -fdata-sections"
# Extra flags for C++ translation units (cimgui/imgui sources):
# -fno-exceptions -> no stack-unwinding machinery
# -fno-rtti -> no typeinfo / dynamic_cast
# -fno-use-cxa-atexit -> don't emit __cxa_atexit calls for static dtors
# -fno-threadsafe-statics -> no guard-variable emission for local statics
# NOTE: *not* -ffreestanding / -fno-builtin here — imgui includes <cmath> and
# other hosted headers that refuse to compile in freestanding mode.
# The object files are archived into a static lib and linked freestanding;
# any hosted-stdlib calls (malloc/free/sin/cos/…) resolve to crtshim.c.
CPP_FLAGS="-m32 -O2 -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti -fno-use-cxa-atexit -fno-threadsafe-statics -fno-stack-protector -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0 -DNDEBUG -DIMGUI_ENABLE_STB_TRUETYPE"
INCLUDE="-I$IMGUI_DIR -I$IMGUI_SRC"
echo "Compiling C runtime shim..."
gcc $C_FLAGS $INCLUDE \
-c $BRIDGE_SRC/crtshim.c \
-o lib/imgui_crtshim.o || { echo "Failed: crtshim.c"; exit 1; }
echo "Compiling render bridge..."
# imgbridge is compiled as C++ so it sees cimgui.h function declarations
# (C++ mode is required; the .c extension is overridden with -x c++)
g++ $CPP_FLAGS $INCLUDE \
-x c++ \
-DCIMGUI_DEFINE_ENUMS_AND_STRUCTS \
-c $BRIDGE_SRC/imgbridge.c \
-o lib/imgui_bridge.o || { echo "Failed: imgbridge.c"; exit 1; }
echo "Compiling cimgui wrapper..."
g++ $CPP_FLAGS $INCLUDE \
-c $IMGUI_DIR/cimgui.cpp \
-o lib/imgui_cimgui.o || { echo "Failed: cimgui.cpp"; exit 1; }
echo "Compiling imgui core..."
g++ $CPP_FLAGS $INCLUDE \
-c $IMGUI_SRC/imgui.cpp \
-o lib/imgui_core.o || { echo "Failed: imgui.cpp"; exit 1; }
echo "Compiling imgui draw..."
g++ $CPP_FLAGS $INCLUDE \
-c $IMGUI_SRC/imgui_draw.cpp \
-o lib/imgui_draw.o || { echo "Failed: imgui_draw.cpp"; exit 1; }
echo "Compiling imgui tables..."
g++ $CPP_FLAGS $INCLUDE \
-c $IMGUI_SRC/imgui_tables.cpp \
-o lib/imgui_tables.o || { echo "Failed: imgui_tables.cpp"; exit 1; }
echo "Compiling imgui widgets..."
g++ $CPP_FLAGS $INCLUDE \
-c $IMGUI_SRC/imgui_widgets.cpp \
-o lib/imgui_widgets.o || { echo "Failed: imgui_widgets.cpp"; exit 1; }
echo "Compiling imgui demo..."
g++ $CPP_FLAGS $INCLUDE \
-c $IMGUI_SRC/imgui_demo.cpp \
-o lib/imgui_demo.o || { echo "Failed: imgui_demo.cpp"; exit 1; }
echo "Archiving cimgui.a..."
# NOTE: imgui_bridge.o and imgui_crtshim.o are NOT in the archive because
# compile_link.sh already picks them up individually via find lib/ -name "*.o".
# Including them here would cause duplicate symbol errors.
ar rcs lib/cimgui.a \
lib/imgui_cimgui.o \
lib/imgui_core.o \
lib/imgui_draw.o \
lib/imgui_tables.o \
lib/imgui_widgets.o \
lib/imgui_demo.o || { echo "Failed: ar"; exit 1; }
echo "ImGui compiled successfully."
exit 0
+1 -1
View File
@@ -1,4 +1,4 @@
#!/bin/sh
#!/usr/bin/env bash
echo " "
echo "======================="
echo " "
+4 -2
View File
@@ -1,4 +1,4 @@
#!/bin/sh
#!/usr/bin/env bash
echo " "
echo "======================="
echo " "
@@ -14,4 +14,6 @@ done;
objstring=lib/stub.o" "$objstring
echo "Object Files: "$objstring
echo " "
ld -m elf_i386 -s --gc-sections -Tlinker.script -o bin/kernel.bin $objstring
LIBGCC=$(gcc -m32 -print-libgcc-file-name)
ld -m elf_i386 -s --gc-sections -Tlinker.script -o bin/kernel.bin $objstring \
--start-group lib/cimgui.a $LIBGCC --end-group
+1 -1
View File
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
echo " "
echo "======================="
echo " "
+2 -2
View File
@@ -1,7 +1,7 @@
#!/bin/sh
#!/usr/bin/env bash
echo " "
echo "======================="
echo " "
echo "Compiling FPC Sources..."
echo " "
fpc -Aelf -gw -n -va -O3 -Op3 -Si -Sc -Sg -Xd -CX -XXs -CfSSE -CfSSE2 -Rintel -Pi386 -Tlinux -FElib/ -Fusrc/* -Fusrc/driver/* -Fusrc/driver/net/* src/kernel.pas
fpc -Aelf -gw -g -gl -n -vlewn -O3 -Op3 -Si -Sc -Sg -Xd -CX -XXs -CfSSE -CfSSE2 -Rintel -Pi386 -Tlinux -FElib/ -Fusrc/* -Fusrc/driver/* -Fusrc/driver/net/* -Fusrc/driver/video/* -Fusrc/driver/video/imgui/* src/kernel.pas
+1 -2
View File
@@ -1,8 +1,7 @@
#!/bin/sh
#!/usr/bin/env bash
echo " "
echo "======================="
echo " "
echo "Compiling Stub..."
echo " "
rm lib/*
nasm -f elf src/stub/stub.asm -o lib/stub.o
+1 -1
View File
@@ -1,4 +1,4 @@
#/bin/sh
#!/usr/bin/env bash
echo " "
echo "======================="
echo " "
+55 -47
View File
@@ -1,4 +1,5 @@
#!/bin/bash
#!/usr/bin/env bash
set -e
echo " "
echo "======================="
echo " "
@@ -8,60 +9,67 @@ chmod +x ./compile_checksum.sh
./compile_checksum.sh
outfile="src/include/asuro.pas"
file="version"
while IFS=: read -r line;do
major=$(echo $line | awk '{print $1}')
minor=$(echo $line | awk '{print $2}')
sub=$(echo $line | awk '{print $3}')
release=$(echo $line | awk '{print $4}')
done <"$file"
{
# this script requires semver tool
wget -q https://raw.githubusercontent.com/fsaintjacques/semver-tool/master/src/semver -O bin/semver && chmod +x bin/semver
export PATH="$(pwd)/bin:$PATH"
}
tagref=$(git describe --tags)
revision=$(git rev-parse --short=8 HEAD)
major=$(semver get major $tagref)
minor=$(semver get minor $tagref)
sub=$(semver get patch $tagref)
version=$(semver get release $tagref)
release=$(semver get prerel $tagref)
build=$(semver get build $tagref)
linecount=$(./loc.sh | awk '{print $1}')
sourcecount=$(find src -type f | wc -l)
drivercount=$(find src/driver -type f | wc -l)
revision=$(git rev-list --all --count)
fpcversion=$(fpc -h | grep -m 1 version | awk '{print $5}')
makeversion=$(make -v | grep GNU | awk '{print $3}' | grep -v GNU)
nasmversion=$(nasm -v | awk '{print $3'})
compiledate=$(date +"%d/%m/%y")
compiletime=$(date +"%T")
checksum=$(md5sum checksums.md5 | awk '{print $1}')
echo "{" > $outfile
echo " Include->Asuro - Constants generated during pipeline/compilation for use at runtime." >> $outfile
echo " @author(Autogenerated)" >> $outfile
echo "}" >> $outfile
echo "unit asuro;" >> $outfile
echo " " >> $outfile
echo "interface" >> $outfile
echo " " >> $outfile
echo "const" >> $outfile
echo " VERSION = '$major.$minor.$sub-$revision$release'; //The current full version as a string." >> $outfile
echo " VERSION_MAJOR = '$major'; // Current major version as a string." >> $outfile
echo " VERSION_MINOR = '$minor'; // Current minor version as a string." >> $outfile
echo " VERSION_SUB = '$sub'; // Current sub version as a string." >> $outfile
echo " REVISION = '$revision'; // Current revision as a string." >> $outfile
echo " RELEASE = '$release'; // Current release as a string." >> $outfile
echo " LINE_COUNT = $linecount; // Project line count as compiled as a string." >> $outfile
echo " FILE_COUNT = $sourcecount; // Project line count as compiled as a string." >> $outfile
echo " DRIVER_COUNT = $drivercount; // Number of baked drivers in the current binary." >> $outfile
echo " FPC_VERSION = '$fpcversion'; // Version of the FreePascal Compiler used to compile the current binary." >> $outfile
echo " NASM_VERSION = '$nasmversion'; // Version of the Netwide Assembler used to compile the multiboot stub." >> $outfile
echo " MAKE_VERSION = '$makeversion'; // Version of MAKE used to link the current binary." >> $outfile
echo " COMPILE_DATE = '$compiledate'; // Date in which the current binary was compiled." >> $outfile
echo " COMPILE_TIME = '$compiletime'; // Time in which the current binary was compiled." >> $outfile
echo " CHECKSUM = '$checksum'; // MD5 pseduo-checksum of all of the sourcefiles together." >> $outfile
echo " " >> $outfile
echo "implementation" >> $outfile
echo " " >> $outfile
echo "end." >> $outfile
[[ -n "$release" ]] && version="$version-$release"
cat > $outfile <<EOF
unit asuro;
interface
const
VERSION = '$version';
VERSION_MAJOR = '$major';
VERSION_MINOR = '$minor';
VERSION_SUB = '$sub';
REVISION = '$revision';
RELEASE = '$release';
LINE_COUNT = $linecount;
FILE_COUNT = $sourcecount;
DRIVER_COUNT = $drivercount;
FPC_VERSION = '$fpcversion';
NASM_VERSION = '$nasmversion';
MAKE_VERSION = '$makeversion';
COMPILE_DATE = '$compiledate';
COMPILE_TIME = '$compiletime';
CHECKSUM = '$checksum';
implementation
end.
EOF
echo "Generating release info..."
wget -q https://img.shields.io/badge/version-$major.$minor.$sub--$revision$release-blue.svg -O release/version.svg 2>/dev/null
wget -q https://img.shields.io/badge/revision-$revision-blue.svg -O release/revision.svg 2>/dev/null
wget -q https://img.shields.io/badge/release-$release-blue.svg -O release/release.svg 2>/dev/null
wget -q https://img.shields.io/badge/lines-$linecount-blueviolet.svg -O release/lines.svg 2>/dev/null
wget -q https://img.shields.io/badge/files-$sourcecount-blueviolet.svg -O release/files.svg 2>/dev/null
wget -q https://img.shields.io/badge/drivers-$drivercount-blueviolet.svg -O release/drivers.svg 2>/dev/null
wget -q https://img.shields.io/badge/FPC_version-$fpcversion-lightgrey.svg -O release/fpcversion.svg 2>/dev/null
wget -q https://img.shields.io/badge/NASM_version-$nasmversion-lightgrey.svg -O release/nasmversion.svg 2>/dev/null
wget -q https://img.shields.io/badge/MAKE_version-$makeversion-lightgrey.svg -O release/makeversion.svg 2>/dev/null
wget -q https://img.shields.io/badge/release_date-$compiledate-lightgrey.svg -O release/date.svg 2>/dev/null
wget -q https://img.shields.io/badge/fingerprint-$checksum-important.svg -O release/fingerprint.svg 2>/dev/null
set +e # These can fail on branches and such, for now
wget -q https://img.shields.io/badge/version-$major.$minor.$sub--$revision$release-blue.svg -O release/version.svg
wget -q https://img.shields.io/badge/revision-$revision-blue.svg -O release/revision.svg
wget -q https://img.shields.io/badge/release-$release-blue.svg -O release/release.svg
wget -q https://img.shields.io/badge/lines-$linecount-blueviolet.svg -O release/lines.svg
wget -q https://img.shields.io/badge/files-$sourcecount-blueviolet.svg -O release/files.svg
wget -q https://img.shields.io/badge/drivers-$drivercount-blueviolet.svg -O release/drivers.svg
wget -q https://img.shields.io/badge/FPC_version-$fpcversion-lightgrey.svg -O release/fpcversion.svg
wget -q https://img.shields.io/badge/NASM_version-$nasmversion-lightgrey.svg -O release/nasmversion.svg
wget -q https://img.shields.io/badge/MAKE_version-$makeversion-lightgrey.svg -O release/makeversion.svg
wget -q https://img.shields.io/badge/release_date-$compiledate-lightgrey.svg -O release/date.svg
wget -q https://img.shields.io/badge/fingerprint-$checksum-important.svg -O release/fingerprint.svg
echo "Done versioning."
-1
View File
@@ -1,4 +1,3 @@
version: "3.9"
services:
builder:
build: .
+20
View File
@@ -0,0 +1,20 @@
4023:CIMGUI_API float igGetWindowDpiScale(void);
4081:CIMGUI_API const ImVec4_c* igGetStyleColorVec4(ImGuiCol idx);
4082:CIMGUI_API ImVec2_c igGetCursorScreenPos(void);
4084:CIMGUI_API ImVec2_c igGetContentRegionAvail(void);
4085:CIMGUI_API ImVec2_c igGetCursorPos(void);
4086:CIMGUI_API float igGetCursorPosX(void);
4087:CIMGUI_API float igGetCursorPosY(void);
4091:CIMGUI_API ImVec2_c igGetCursorStartPos(void);
4350:CIMGUI_API void igBeginDisabled(bool disabled);
4372:CIMGUI_API ImVec2_c igGetItemRectMin(void);
4373:CIMGUI_API ImVec2_c igGetItemRectMax(void);
4374:CIMGUI_API ImVec2_c igGetItemRectSize(void);
4377:CIMGUI_API ImDrawList* igGetBackgroundDrawList(ImGuiViewport* viewport);
4378:CIMGUI_API ImDrawList* igGetForegroundDrawList_ViewportPtr(ImGuiViewport* viewport);
4387:CIMGUI_API ImVec2_c igCalcTextSize(const char* text,const char* text_end,bool hide_text_after_double_hash,float wrap_width);
4388:CIMGUI_API ImVec4_c igColorConvertU32ToFloat4(ImU32 in);
4405:CIMGUI_API bool igIsMouseDoubleClicked_Nil(ImGuiMouseButton button);
5092:CIMGUI_API ImDrawList* igGetForegroundDrawList_WindowPtr(ImGuiWindow* window);
5161:CIMGUI_API void igBeginDisabledOverrideReenable(void);
5244:CIMGUI_API bool igIsMouseDoubleClicked_ID(ImGuiMouseButton button,ImGuiID owner_id);

Some files were not shown because too many files have changed in this diff Show More