Skip to content

Commit 30ffbc9

Browse files
committed
dev
1 parent c3abf60 commit 30ffbc9

File tree

7 files changed

+176
-228
lines changed

7 files changed

+176
-228
lines changed

.github/workflows/build.yml

Lines changed: 60 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: build
1+
name: build
22

33
on:
44
push:
@@ -18,117 +18,80 @@ jobs:
1818
strategy:
1919
fail-fast: false
2020
matrix:
21-
config:
22-
# note: names must equal Simba build modes
23-
- name: Win64
24-
runs-on: windows-latest
25-
binary: Simba-Win64.exe
26-
test: Simba-Win64.exe
27-
28-
- name: Win64 DebugInfo
29-
runs-on: windows-latest
30-
binary: Simba-Win64-Debug.exe
31-
test: Simba-Win64-Debug.exe
32-
33-
- name: Win32
34-
runs-on: windows-latest
35-
binary: Simba-Win32.exe
36-
test: Simba-Win32.exe
21+
config:
22+
# - runs-on: macos-15-intel
23+
# name: Mac
24+
# build-mode: Mac
25+
# laz-url: https://sourceforge.net/projects/lazarus/files/Lazarus%20macOS%20x86-64/Lazarus%203.8/lazarus-darwin-x86_64-3.8.zip
26+
# fpc-url: |
27+
# https://sourceforge.net/projects/lazarus/files/Lazarus%20macOS%20x86-64/Lazarus%203.8/fpc-3.2.2.intelarm64-macosx.dmg
3728

38-
- name: Linux
39-
runs-on: ubuntu-22.04
40-
binary: Simba-Linux64
41-
test: Simba-Linux64
29+
- name: Test
30+
runs-on: macos-15
31+
laz-url: https://sourceforge.net/projects/lazarus/files/Lazarus%20Linux%20amd64%20DEB/Lazarus%204.4/lazarus-project_4.4.0-0_amd64.deb
32+
fpc-url: [
33+
"https://sourceforge.net/projects/lazarus/files/Lazarus%20Linux%20amd64%20DEB/Lazarus%204.4/fpc-laz_3.2.2-210709_amd64.deb",
34+
"https://sourceforge.net/projects/lazarus/files/Lazarus%20Linux%20amd64%20DEB/Lazarus%204.4/fpc-src_3.2.2-210709_amd64.deb"
35+
]
4236

43-
- name: Linux Arm
44-
runs-on: ubuntu-22.04-arm
45-
binary: Simba-Linux
46-
#test: Simba-Linux MatchTemplateMask test fails, investigate later
37+
- name: Mac arm64
38+
runs-on: macos-26
39+
build-mode: Mac Arm
40+
binary: Simba-Mac-Arm.dmg
41+
fpclazup: https://github.com/LongDirtyAnimAlf/Reiniero-fpcup/releases/download/v2.4.0g/fpclazup-aarch64-darwin
4742

48-
- name: Mac Arm
49-
runs-on: macos-14
50-
binary: Simba-Mac-Arm.dmg
51-
#test: Simba MatchTemplateMask test fails, investigate later
52-
53-
# GitHub removing macos 13 causes this problem on newer runners:
54-
# "non-private labels cannot appear between .cfi_startproc / .cfi_endproc pairs"
55-
# Fixed in new FPC but that will never release... (sort of like this project xD)
56-
# Just comment out since x86 macos is quickly not existent in the year of 2025.
57-
# - name: Mac
58-
# runs-on: macos-13
59-
# binary: Simba-Mac.dmg
60-
6143
steps:
6244
- uses: actions/[email protected]
6345
with:
6446
submodules: true
6547

66-
- name: Install Lazarus (Mac Arm)
67-
if: matrix.config.name == 'Mac Arm'
68-
uses: ollydev/[email protected]
69-
with:
70-
laz-url: https://sourceforge.net/projects/lazarus/files/Lazarus%20macOS%20aarch64/Lazarus%204.4/lazarus-darwin-aarch64-4.4.zip
71-
fpc-url: |
72-
https://sourceforge.net/projects/lazarus/files/Lazarus%20macOS%20aarch64/Lazarus%204.4/fpc-3.2.2.intelarm64-macosx.dmg
73-
74-
- name: Install Lazarus (Linux)
75-
if: matrix.config.name == 'Linux'
76-
uses: ollydev/[email protected]
77-
with:
78-
laz-url: https://sourceforge.net/projects/lazarus/files/Lazarus%20Linux%20amd64%20DEB/Lazarus%204.4/lazarus-project_4.4.0-0_amd64.deb
79-
fpc-url: |
80-
https://sourceforge.net/projects/lazarus/files/Lazarus%20Linux%20amd64%20DEB/Lazarus%204.4/fpc-laz_3.2.2-210709_amd64.deb
81-
https://sourceforge.net/projects/lazarus/files/Lazarus%20Linux%20amd64%20DEB/Lazarus%204.4/fpc-src_3.2.2-210709_amd64.deb
82-
83-
- name: Install Lazarus (Linux Arm)
84-
if: matrix.config.name == 'Linux Arm'
85-
uses: ollydev/[email protected]
48+
- name: Restore fpclazup
49+
if: matrix.config.fpclazup != ''
50+
id: restore-fpclazup
51+
uses: actions/cache/restore@v4
8652
with:
87-
laz-url: https://sourceforge.net/projects/lazarus/files/Lazarus%20Linux%20arm64%20DEB/Lazarus%204.4/lazarus-project_4.4.0-0_arm64.deb
88-
fpc-url: |
89-
https://sourceforge.net/projects/lazarus/files/Lazarus%20Linux%20arm64%20DEB/Lazarus%204.4/fpc-laz_3.2.3-240813_arm64.deb
90-
https://sourceforge.net/projects/lazarus/files/Lazarus%20Linux%20arm64%20DEB/Lazarus%204.4/fpc-src_3.2.3-240813_arm64.deb
53+
path: ${{ runner.temp }}/fpclazup
54+
key: ${{ matrix.config.name }}-${{ matrix.config.runs-on }}
9155

92-
- name: Install Lazarus (Win32)
93-
if: startsWith(matrix.config.name, 'Win32') == true
94-
uses: ollydev/[email protected]
56+
- name: Install fpclazup
57+
working-directory: ${{ runner.temp }}
58+
if: matrix.config.fpclazup != '' && steps.restore-fpclazup.outputs.cache-hit != 'true'
59+
run: |
60+
curl --retry 5 -L -o installer ${{ matrix.config.fpclazup }}
61+
chmod +x installer
62+
git clone https://gitlab.com/freepascal.org/fpc/source fpclazup/fpc
63+
# Use a known working trunk commit
64+
git -C fpclazup/fpc checkout de30ac10d4f228c5d4915c49d48715063ea55787
65+
./installer --only=FPCBuildOnly,LazarusGetOnly,LazBuild,LazarusConfigOnly --lazVersion="stable.gitlab" --installdir=fpclazup --noconfirm --verbose
66+
67+
- name: Save fpclazup
68+
if: matrix.config.fpclazup != '' && steps.restore-fpclazup.outputs.cache-hit != 'true'
69+
uses: actions/cache/save@v4
9570
with:
96-
laz-url: https://sourceforge.net/projects/lazarus/files/Lazarus%20Windows%2032%20bits/Lazarus%204.4/lazarus-4.4-fpc-3.2.2-win32.exe
71+
path: ${{ runner.temp }}/fpclazup
72+
key: ${{ matrix.config.name }}-${{ matrix.config.runs-on }}
9773

98-
- name: Install Lazarus (Win64)
99-
if: startsWith(matrix.config.name, 'Win64') == true
100-
uses: ollydev/[email protected]
101-
with:
102-
laz-url: https://sourceforge.net/projects/lazarus/files/Lazarus%20Windows%2064%20bits/Lazarus%204.4/lazarus-4.4-fpc-3.2.2-win64.exe
74+
- name: Add fpclazup to path
75+
if: matrix.config.fpclazup != ''
76+
run: |
77+
echo "${{ runner.temp }}/fpclazup/lazarus/" >> $GITHUB_PATH
10378
10479
- name: Build Simba
10580
run: |
81+
echo "${{ matrix.config.build-mode }}"
10682
export GITHUB_SHORT_SHA=$(git rev-parse --short HEAD)
107-
lazbuild --build-mode="${{ matrix.config.name }}" "Source/Simba.lpi"
83+
lazbuild --build-mode="${{ matrix.config.build-mode }}" "Source/Simba.lpi"
10884
109-
- name: Create Mac Image
110-
if: startsWith(matrix.config.name, 'Mac') == true
111-
run: |
112-
brew install create-dmg
113-
114-
for i in {1..10};
115-
do
116-
create-dmg --window-size 500 330 --icon-size 48 --icon "Simba.app" 130 135 --app-drop-link 380 135 --background "Source/macosbundle/installer.tff" "${{ matrix.config.binary }}" "Simba.app" && break || sleep 15;
117-
done
85+
# - name: Create Mac Image
86+
# run: |
87+
# brew install create-dmg
88+
# for i in {1..10};
89+
# do
90+
# create-dmg --window-size 500 330 --icon-size 48 --icon "Simba.app" 130 135 --app-drop-link 380 135 --background "Source/macosbundle/installer.tff" "${{ matrix.config.binary }}" "Simba.app" && break || sleep 15;
91+
# done
11892

119-
- name: Test Simba
120-
if: matrix.config.test != ''
121-
run: |
122-
if [[ "${{ matrix.config.runs-on }}" == ubuntu* ]]; then
123-
export DISPLAY=:1
124-
Xvfb :1 & sleep 2
125-
fi
126-
127-
chmod +x ${{ matrix.config.test }}
128-
./${{ matrix.config.test }} --run "Tests/RunTests/tester.simba"
129-
130-
- name: Upload Simba Binary
131-
uses: actions/[email protected]
132-
with:
133-
name: ${{ matrix.config.name }}
134-
path: ${{ matrix.config.binary }}
93+
# - name: Upload Simba Binary
94+
# uses: actions/[email protected]
95+
# with:
96+
# name: ${{ matrix.config.name }}
97+
# path: ${{ matrix.config.binary }}

Source/Simba.lpi

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,11 @@
2727
<Resource_6 FileName="..\Examples\image_drawtext.simba" Type="RCDATA" ResourceName="EXAMPLE_IMAGE_DRAW_TEXT"/>
2828
<Resource_7 FileName="..\Examples\cluster_points.simba" Type="RCDATA" ResourceName="EXAMPLE_CLUSTER_POINTS"/>
2929
<Resource_8 FileName="..\Examples\form.simba" Type="RCDATA" ResourceName="EXAMPLE_FORM"/>
30-
<Resource_9 FileName="..\Examples\form_dragablepanel.simba" Type="RCDATA" ResourceName="EXAMPLE_FORM_DRAGABLE_PANEL"/>
31-
<Resource_10 FileName="..\Examples\form_imagebox.simba" Type="RCDATA" ResourceName="EXAMPLE_FORM_IMAGEBOX"/>
30+
<Resource_9 FileName="..\Examples\form_dragablepanel.simba" Type="RCDATA" ResourceName="EXAMPLE_FORM_DRAGABLE_PANEL"/>
31+
<Resource_10 FileName="..\Examples\form_imagebox.simba" Type="RCDATA" ResourceName="EXAMPLE_FORM_IMAGEBOX"/>
3232
<Resource_11 FileName="..\Examples\irc.simba" Type="RCDATA" ResourceName="EXAMPLE_IRC"/>
3333
<Resource_12 FileName="..\Examples\asyncmouse.simba" Type="RCDATA" ResourceName="EXAMPLE_ASYNCMOUSE"/>
34-
<Resource_13 FileName="..\Examples\mouse_path.simba" Type="RCDATA" ResourceName="MOUSE_PATH"/>
34+
<Resource_13 FileName="..\Examples\mouse_path.simba" Type="RCDATA" ResourceName="MOUSE_PATH"/>
3535
<Resource_14 FileName="..\Examples\randomleft.simba" Type="RCDATA" ResourceName="EXAMPLE_RANDOM_LEFT"/>
3636
<Resource_15 FileName="..\Examples\method-property.simba" Type="RCDATA" ResourceName="EXAMPLE_METHOD_PROPERTY"/>
3737
<Resource_16 FileName="..\Examples\method-property-index.simba" Type="RCDATA" ResourceName="EXAMPLE_METHOD_PROPERTY_INDEX"/>
@@ -352,20 +352,10 @@
352352
</SyntaxOptions>
353353
</Parsing>
354354
<CodeGeneration>
355-
<SmartLinkUnit Value="True"/>
356355
<TargetCPU Value="x86_64"/>
357356
<TargetOS Value="darwin"/>
358-
<Optimizations>
359-
<OptimizationLevel Value="3"/>
360-
</Optimizations>
361357
</CodeGeneration>
362358
<Linking>
363-
<Debugging>
364-
<GenerateDebugInfo Value="False"/>
365-
<DebugInfoType Value="dsDwarf2Set"/>
366-
<StripSymbols Value="True"/>
367-
</Debugging>
368-
<LinkSmart Value="True"/>
369359
<Options>
370360
<Win32>
371361
<GraphicApplication Value="True"/>
@@ -405,20 +395,10 @@
405395
</SyntaxOptions>
406396
</Parsing>
407397
<CodeGeneration>
408-
<SmartLinkUnit Value="True"/>
409398
<TargetCPU Value="aarch64"/>
410399
<TargetOS Value="darwin"/>
411-
<Optimizations>
412-
<OptimizationLevel Value="3"/>
413-
</Optimizations>
414400
</CodeGeneration>
415401
<Linking>
416-
<Debugging>
417-
<GenerateDebugInfo Value="False"/>
418-
<DebugInfoType Value="dsDwarf2Set"/>
419-
<StripSymbols Value="True"/>
420-
</Debugging>
421-
<LinkSmart Value="True"/>
422402
<Options>
423403
<Win32>
424404
<GraphicApplication Value="True"/>

Source/ide/codetools/simba.ide_codetools_base.pas

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@
1010
interface
1111

1212
uses
13-
Classes, SysUtils,
14-
simba.base;
13+
Classes, SysUtils;
1514

1615
type
1716
// "Perfect Hashing"
1817
// A hashtable with no collisions.
1918
generic TKeywordDictionary<_T> = class(TObject)
20-
type
21-
TBucketArray = array of record Key: String; Value: _T; end;
19+
public type
20+
TBucket = record Key: String; Value: _T; end;
21+
TBucketArray = array of TBucket;
2222
protected
2323
FBuckets: TBucketArray;
2424
FSeed: UInt32;

0 commit comments

Comments
 (0)