Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
e59d129
Initial plan
Copilot Apr 26, 2026
6077f18
Add source/gpprof.dll: profiling instrumentation DLL and unit-test DLL
Copilot Apr 26, 2026
6d567f2
Move test project to source/gpprof.dll.tests as a DUnit test project
Copilot Apr 26, 2026
433622f
Add GpProf implementation tests: TTestGpProfCommon and expanded TTest…
Copilot Apr 26, 2026
00b8fc1
+ fixed project
ase379 Apr 26, 2026
4274172
Merge branch 'copilot/bundle-profiling-units-dll' of https://github.c…
ase379 Apr 26, 2026
563149e
Fix tests blocked by MessageBox: add GpProfDllTests.GPI stub and outp…
Copilot Apr 26, 2026
d4ed3c9
+ fixed project
ase379 Apr 26, 2026
b039303
Merge branch 'copilot/bundle-profiling-units-dll' of https://github.c…
ase379 Apr 26, 2026
985062a
Move /tests→source/GpProfDllTestApp; add DUnitX_GUI build config to t…
Copilot Apr 26, 2026
84ac6fe
Move UI app to source/GpProf.UI; create include/GpProfDllClient.pas
Copilot Apr 26, 2026
35c0f87
Add GitHub Actions CI workflow: build GpProfDll + run DUnit tests
Copilot Apr 26, 2026
2053b78
Platform-named DLL (32/64), copy to test app, use GpProfDllClient in …
Copilot Apr 27, 2026
ff55440
Merge branch 'master' into copilot/bundle-profiling-units-dll
ase379 Apr 28, 2026
8f0090b
Merge branch 'master' of https://github.com/ase379/gpprofile2017 into…
ase379 Apr 28, 2026
56b8676
Update scripts/build.ps1 for new project layout and DLL build
Copilot Apr 28, 2026
50245eb
Delete source/build.bat; add DUnitX search path to DUnitX_GUI config
Copilot Apr 28, 2026
188cdc1
Add $(BDS)\source\DUnitX to Base-level search path in GpProfDllTests.…
Copilot Apr 28, 2026
4b44c68
+ putting all to bin and compiling the ui as 64 bit
ase379 Apr 28, 2026
f5eee99
Merge branch 'copilot/bundle-profiling-units-dll' of https://github.c…
ase379 Apr 28, 2026
0a3441a
+ fixed unused and invalid attributes
ase379 Apr 28, 2026
e33ff0f
Add IGpProfContext interface and DllAcquireSession/DllReleaseSession …
Copilot Apr 30, 2026
2f2f755
Remove global functions from GpProfDllClient — context-only API
Copilot Apr 30, 2026
c0d7138
+ deploy to bin
ase379 May 5, 2026
defc002
Merge branch 'copilot/bundle-profiling-units-dll' of https://github.c…
ase379 May 5, 2026
1426c0c
Merge branch 'master' of https://github.com/ase379/gpprofile2017 into…
ase379 Jul 12, 2026
e843645
+ fixed project search pathes
ase379 Jul 12, 2026
2082082
+ fixed project search pathes
ase379 Jul 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
97 changes: 97 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
name: CI

# Run on every push and on pull requests targeting any branch.
on:
push:
pull_request:

jobs:
test:
name: Build GpProfDll + run DUnit tests (Win32)
runs-on: windows-latest

env:
# Set the BDS repository variable to the RAD Studio installation root,
# e.g. C:\Program Files (x86)\Embarcadero\Studio\23.0 (Delphi 12 Athens)
# C:\Program Files (x86)\Embarcadero\Studio\22.0 (Delphi 11 Alexandria)
# On a self-hosted runner the variable is usually already set in the system
# environment; override it here as needed via Settings → Variables → Actions.
BDS: ${{ vars.BDS }}

steps:
- name: Checkout repository
uses: actions/checkout@v4

# -----------------------------------------------------------------------
# Locate the Delphi compiler. We try the BDS repository variable first,
# then fall back to the most common installation paths for Delphi 12/11.
# -----------------------------------------------------------------------
- name: Locate Delphi installation
id: delphi
shell: pwsh
run: |
$bds = $env:BDS
if (-not $bds) {
$candidates = @(
'C:\Program Files (x86)\Embarcadero\Studio\23.0',
'C:\Program Files (x86)\Embarcadero\Studio\22.0',
'C:\Program Files (x86)\Embarcadero\Studio\21.0',
'C:\Program Files (x86)\Embarcadero\Studio\20.0'
)
foreach ($p in $candidates) {
if (Test-Path "$p\bin\DCC32.exe") { $bds = $p; break }
}
}
if (-not $bds -or -not (Test-Path "$bds\bin\DCC32.exe")) {
Write-Error @"
Delphi DCC32.exe not found.
Set the BDS Actions repository variable to your RAD Studio installation directory,
e.g. C:\Program Files (x86)\Embarcadero\Studio\23.0
or use a self-hosted runner that already has Delphi on PATH.
"@
exit 1
}
Write-Host "Delphi found at: $bds"
# Export for subsequent steps
"BDS=$bds" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append

- name: Add MSBuild to PATH
uses: microsoft/setup-msbuild@v2

# -----------------------------------------------------------------------
# Build the profiling instrumentation DLL (Win32, Release).
# -----------------------------------------------------------------------
- name: Build GpProfDll (Win32 · Release)
shell: pwsh
run: |
msbuild source\gpprof.dll\GpProfDll.dproj `
/t:Build `
/p:Config=Release /p:Platform=Win32 `
/v:minimal /nologo

# -----------------------------------------------------------------------
# Build the DUnit test console application (Win32, Release).
# DCC_ExeOutput is set to "." in the project, so the exe lands in
# source\gpprof.dll.tests\ alongside the stub GpProfDllTests.GPI file.
# -----------------------------------------------------------------------
- name: Build GpProfDllTests (Win32 · Release)
shell: pwsh
run: |
msbuild source\gpprof.dll.tests\GpProfDllTests.dproj `
/t:Build `
/p:Config=Release /p:Platform=Win32 `
/v:minimal /nologo

# -----------------------------------------------------------------------
# Run the DUnit tests.
# TextTestRunner.RunRegisteredTests sets ExitCode to
# FailureCount + ErrorCount; exit 0 means all tests passed.
# -----------------------------------------------------------------------
- name: Run DUnit tests
shell: pwsh
run: |
& .\source\gpprof.dll.tests\GpProfDllTests.exe
if ($LASTEXITCODE -ne 0) {
Write-Error "DUnit tests failed (exit code $LASTEXITCODE)"
exit $LASTEXITCODE
}
20 changes: 14 additions & 6 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ BIN/gpprof.drc
BIN/gpprof.exe
BIN/gpprof.map
*.~dsk
tests/Win32/Debug/*.*

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Move the main UI application to
source/GpProf.UI
Leave the .bat where they are. Update the script to point to the proper location.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in 84ac6fe. All UI application files (gpprof.dpr/dproj, HISTORY/OPTIONS/baggage/help.inc, gpprof_Icon.ico, gpParser.MeasurePoint.pas, icons/, model/, ui/) have been moved to source/GpProf.UI/. source/build.bat stays in place and has been updated to reference GpProf.UI\gpprof.dpr, GpProf.UI\baggage.rc, and GpProf.UI\gpprof.rc. All relative paths in gpprof.dproj have been updated from ..\ to ..\..\.

source/GpProfDllTestApp/Win32/Debug/*.*

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add a Action for the ci Build calling the Tests

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in 35c0f87. .github/workflows/ci.yml added with a single test job on windows-latest that:

  1. Locates Delphi via the BDS Actions repository variable (falls back to common Delphi 12/11 installation paths)
  2. Builds GpProfDll.dproj (Win32, Release)
  3. Builds GpProfDllTests.dproj (Win32, Release) — exe lands next to the stub .GPI so all tests are safe no-ops
  4. Runs GpProfDllTests.exe and fails the job if the DUnit exit code ≠ 0

To enable the workflow on the GitHub-hosted runner, set a repository variable BDS → the RAD Studio installation root (e.g. C:\Program Files (x86)\Embarcadero\Studio\23.0). On a self-hosted Windows runner with Delphi already installed the BDS environment variable is typically set system-wide and no extra configuration is needed.

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add a Action for the ci Build calling the Tests

*.identcache
*.rsmres
*.res
Expand All @@ -19,11 +19,19 @@ bin64/*.map
BIN/*.map
*.dproj.local
**/__history
/source/__recovery/__recovery.ini
/source/__recovery/gppMain.dfm
/source/__recovery/gppMain.pas
/source/VirtualTree.Tools/__recovery/__recovery.ini
/source/VirtualTree.Tools/__recovery/virtualTree.tools.statistics.pas
/source/GpProf.UI/__recovery/__recovery.ini
/source/GpProf.UI/__recovery/gppMain.dfm
/source/GpProf.UI/__recovery/gppMain.pas
/source/GpProf.UI/ui/VirtualTree.Tools/__recovery/__recovery.ini
/source/GpProf.UI/ui/VirtualTree.Tools/__recovery/virtualTree.tools.statistics.pas
*.dsk
*.bk2
/gpprof_2017*
source/gpprof.dll.tests/*.exe
source/gpprof.dll.tests/*.map
source/gpprof.dll.tests/Win32/
source/gpprof.dll.tests/Win64/
source/GpProfDllTestApp/Win32/
source/GpProfDllTestApp/Win64/
/source/gpprof.dll/Win32/**
/source/gpprof.dll/Win64/**
Binary file removed bin64/GPPROF.chm
Binary file not shown.
Loading