Skip to content

Commit ae7df52

Browse files
committed
dev
1 parent c3abf60 commit ae7df52

File tree

7 files changed

+193
-227
lines changed

7 files changed

+193
-227
lines changed

.github/workflows/build.yml

Lines changed: 77 additions & 96 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,98 @@ 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+
# - runs-on: macos-15
30+
# name: Mac Arm
31+
# build-mode: Mac
32+
# laz-url: https://sourceforge.net/projects/lazarus/files/Lazarus%20macOS%20aarch64/Lazarus%203.8/lazarus-darwin-aarch64-3.8.zip
33+
# fpc-url: |
34+
# https://sourceforge.net/projects/lazarus/files/Lazarus%20macOS%20aarch64/Lazarus%203.8/fpc-3.2.2.intelarm64-macosx.dmg
4235

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

48-
- name: Mac Arm
49-
runs-on: macos-14
50-
binary: Simba-Mac-Arm.dmg
51-
#test: Simba MatchTemplateMask test fails, investigate later
42+
- name: Mac arm64
43+
runs-on: macos-15
44+
build-mode: Mac Arm
45+
binary: Simba-Mac-Arm.dmg
46+
url: https://github.com/LongDirtyAnimAlf/Reiniero-fpcup/releases/download/v2.4.0g/fpclazup-aarch64-darwin
5247

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-
6148
steps:
6249
- uses: actions/[email protected]
6350
with:
6451
submodules: true
6552

66-
- name: Install Lazarus (Mac Arm)
67-
if: matrix.config.name == 'Mac Arm'
68-
uses: ollydev/[email protected]
53+
- name: Restore
54+
id: restore-cache
55+
uses: actions/cache/restore@v4
6956
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
57+
path: ${{ runner.temp }}/fpclazup
58+
key: ${{ matrix.config.name }}
7359

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]
86-
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
60+
- name: Install Lazarus
61+
working-directory: ${{ runner.temp }}
62+
if: steps.restore-cache.outputs.cache-hit != 'true'
63+
run: |
64+
curl --retry 5 -L -o installer ${{ matrix.config.url }}
65+
chmod +x installer
66+
#./installer --lazOPT="-g -gl -gw2 -O1" --fpcOPT="-g -gl -gw2 -O1" --only=docker --lazVersion="stable.gitlab" --fpcVersion="trunk.gitlab" --installdir=fpclazup --noconfirm --verbose
9167
92-
- name: Install Lazarus (Win32)
93-
if: startsWith(matrix.config.name, 'Win32') == true
94-
uses: ollydev/[email protected]
95-
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
68+
git clone https://gitlab.com/freepascal.org/fpc/source fpclazup/fpc
69+
# Use a known working trunk commit
70+
git -C fpclazup/fpc checkout de30ac10d4f228c5d4915c49d48715063ea55787
71+
./installer --lazOPT="-g -gl -gw2 -O1" --fpcOPT="-g -gl -gw2 -O1" --only=FPCBuildOnly,LazarusGetOnly,LazBuild,LazarusConfigOnly --fpcVersion="trunk.gitlab" --lazVersion="stable.gitlab" --installdir=fpclazup --noconfirm --verbose
72+
73+
- name: Add custom to path
74+
run: |
75+
echo "${{ runner.temp }}/fpclazup/lazarus/" >> $GITHUB_PATH
9776
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
77+
# - name: Save Lazarus
78+
# if: steps.restore-cache.outputs.cache-hit != 'true'
79+
# uses: actions/cache/save@v4
80+
# with:
81+
# path: ${{ runner.temp }}/fpclazup
82+
# key: ${{ matrix.config.name }}2
83+
84+
# - name: Install Lazarus
85+
# uses: ollydev/[email protected]
86+
# with:
87+
# laz-url: ${{ matrix.config.laz-url }}
88+
# fpc-url: ${{ matrix.config.fpc-url }}
10389

10490
- name: Build Simba
10591
run: |
92+
echo "${{ matrix.config.build-mode }}"
10693
export GITHUB_SHORT_SHA=$(git rev-parse --short HEAD)
107-
lazbuild --build-mode="${{ matrix.config.name }}" "Source/Simba.lpi"
94+
lazbuild --build-mode="${{ matrix.config.build-mode }}" "Source/Simba.lpi"
10895
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
96+
# - name: Debug
97+
# if: always()
98+
# uses: actions/upload-artifact@v4
99+
# with:
100+
# name: debug
101+
# path: build/Mac Arm
118102

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 }}
103+
# - name: Create Mac Image
104+
# run: |
105+
# brew install create-dmg
106+
# for i in {1..10};
107+
# do
108+
# 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;
109+
# done
110+
111+
# - name: Upload Simba Binary
112+
# uses: actions/[email protected]
113+
# with:
114+
# name: ${{ matrix.config.name }}
115+
# 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)