Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
/windows/src/**/*.identcache
/windows/src/**/*.vcxproj.user
/windows/src/**/version.res
/windows/src/**/version*.res
/windows/src/**/*.pch
/windows/src/**/*.wixobj
/windows/src/**/*.sbr
Expand Down Expand Up @@ -186,3 +187,6 @@ lcov.info

# flag file for build script
.configured

# Meson wrap dependency lock files
**/subprojects/.wraplock
4 changes: 4 additions & 0 deletions common/windows/delphi/components/FixedTrackbar.pas
Original file line number Diff line number Diff line change
Expand Up @@ -70,10 +70,14 @@ procedure TTntFixedDrawGrid.WMEraseBkgnd(var Message: TMessage);
{$MESSAGE WARN 'Not yet checked against Delphi 10.4'}
{$IFNDEF VER330}
{$IFNDEF VER320}
{$IFNDEF VER350}
{$IFNDEF VER360}
{$MESSAGE ERROR 'Check that this fix is still applicable for a new version of Delphi. Checked against Delphi 10.2, 10.3' }
{$ENDIF}
{$ENDIF}
{$ENDIF}
{$ENDIF}
{$ENDIF}

procedure TTntFixedDrawGrid.MouseDown(Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
Expand Down
4 changes: 2 additions & 2 deletions common/windows/delphi/general/CleartypeDrawCharacter.pas
Original file line number Diff line number Diff line change
Expand Up @@ -591,11 +591,11 @@ function TestFont(FFontName: string): Boolean;
StrPCopy(lf.lfFaceName, FFontName); //'Code2000');
hdc := GetDC(0);
//FPlane0FontName := 'Code2000';
{$IFDEF VER340}
{$IF Defined(VER340) or Defined(VER350) or Defined(VER360)}
if EnumFontFamiliesEx(hdc, lf, @EnumFallbackFonts, 0, 0) <> 0 then
{$ELSE}
if EnumFontFamiliesEx(hdc, lf, @EnumFallbackFonts, 0, 0) then
{$ENDIF}
{$IFEND}
begin
FPlane0FontName := FFontName;
Result := True;
Expand Down
4 changes: 4 additions & 0 deletions common/windows/delphi/general/JsonUtil.pas
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,11 @@ function JSONToString(obj: TJSONAncestor; ReplaceSlashes: Boolean = False): stri
begin
builder := TStringBuilder.Create;
try
{$IF Defined(VER350) or Defined(VER360)}
obj.ToChars(builder, []);
{$ELSE}
obj.ToChars(builder);
{$IFEND}
Result := builder.ToString;
finally
builder.Free;
Expand Down
8 changes: 8 additions & 0 deletions common/windows/delphi/tools/devtools/SourceRootPath.pas
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,19 @@ interface
{$IFDEF VER340}
const DelphiMajorVersion = '21.0';
{$ELSE}
{$IFDEF VER350}
const DelphiMajorVersion = '22.0';
{$ELSE}
{$IFDEF VER360}
const DelphiMajorVersion = '23.0';
{$ELSE}
ERROR: must define Delphi version
{$ENDIF}
{$ENDIF}
{$ENDIF}
{$ENDIF}
{$ENDIF}
{$ENDIF}

const DelphiBasePath = 'C:\Program Files (x86)\Embarcadero\Studio\' + DelphiMajorVersion + '\';

Expand Down
6 changes: 6 additions & 0 deletions common/windows/delphi/web/Keyman.System.HttpServer.Base.pas
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,13 @@ function CrackUTF8ZeroExtendedString(CommandType: THTTPCommandType; const p: str
// Indy's UTF8 handling of URLs is *completely* broken.
// We may need to check this with updated versions of Delphi
{$IFNDEF VER330}
{$IFNDEF VER340}
{$IFNDEF VER350}
{$IFNDEF VER360}
ERROR! Check if this is still needed with Delphi update
{$ENDIF}
{$ENDIF}
{$ENDIF}
{$ENDIF}

SetLength(s, p.Length);
Expand Down
18 changes: 11 additions & 7 deletions developer/src/ext/jedi/jcl/jcl/source/common/JclSynch.pas
Original file line number Diff line number Diff line change
Expand Up @@ -937,11 +937,15 @@ function TJclCriticalSectionEx.TryEnter: Boolean;

//== { TJclEvent } ===========================================================

// Keyman local patch: Delphi 11/12 compat (vendored JCL). Explicit BOOL() casts
// added below to satisfy Delphi 12's stricter implicit-Boolean->BOOL conversion.
// Backwards-compatible with Delphi 10.3 (BOOL is an ordinal-preserving typecast).
// On JCL refresh from upstream: re-apply if upstream hasn't picked up the cast.
Comment on lines +940 to +943
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Looking at this more deeply. This seems to be total nonsense!

I even took the time to try building with an unmodified JclSynch.pas to verify this -- it is completely unnecessary.

constructor TJclEvent.Create(SecAttr: PSecurityAttributes; Manual, Signaled: Boolean; const Name: string);
begin
inherited Create;
FName := Name;
FHandle := {$IFDEF HAS_UNITSCOPE}Winapi.{$ENDIF}Windows.CreateEvent(SecAttr, Manual, Signaled, PChar(FName));
FHandle := {$IFDEF HAS_UNITSCOPE}Winapi.{$ENDIF}Windows.CreateEvent(SecAttr, BOOL(Manual), BOOL(Signaled), PChar(FName));
if FHandle = 0 then
raise EJclEventError.CreateRes(@RsSynchCreateEvent);
FExisted := GetLastError = ERROR_ALREADY_EXISTS;
Expand All @@ -952,7 +956,7 @@ constructor TJclEvent.Open(Access: Cardinal; Inheritable: Boolean;
begin
FName := Name;
FExisted := True;
FHandle := {$IFDEF HAS_UNITSCOPE}Winapi.{$ENDIF}Windows.OpenEvent(Access, Inheritable, PChar(Name));
FHandle := {$IFDEF HAS_UNITSCOPE}Winapi.{$ENDIF}Windows.OpenEvent(Access, BOOL(Inheritable), PChar(Name));
if FHandle = 0 then
raise EJclEventError.CreateRes(@RsSynchOpenEvent);
end;
Expand Down Expand Up @@ -980,7 +984,7 @@ constructor TJclWaitableTimer.Create(SecAttr: PSecurityAttributes;
begin
FName := Name;
FResume := False;
FHandle := CreateWaitableTimer(SecAttr, Manual, PChar(Name));
FHandle := CreateWaitableTimer(SecAttr, BOOL(Manual), PChar(Name));
if FHandle = 0 then
raise EJclWaitableTimerError.CreateRes(@RsSynchCreateWaitableTimer);
FExisted := GetLastError = ERROR_ALREADY_EXISTS;
Expand All @@ -1000,7 +1004,7 @@ constructor TJclWaitableTimer.Open(Access: Cardinal; Inheritable: Boolean;
FExisted := True;
FName := Name;
FResume := False;
FHandle := OpenWaitableTimer(Access, Inheritable, PChar(Name));
FHandle := OpenWaitableTimer(Access, BOOL(Inheritable), PChar(Name));
if FHandle = 0 then
raise EJclWaitableTimerError.CreateRes(@RsSynchOpenWaitableTimer);
end;
Expand Down Expand Up @@ -1048,7 +1052,7 @@ constructor TJclSemaphore.Open(Access: Cardinal; Inheritable: Boolean;
begin
FName := Name;
FExisted := True;
FHandle := {$IFDEF HAS_UNITSCOPE}Winapi.{$ENDIF}Windows.OpenSemaphore(Access, Inheritable, PChar(Name));
FHandle := {$IFDEF HAS_UNITSCOPE}Winapi.{$ENDIF}Windows.OpenSemaphore(Access, BOOL(Inheritable), PChar(Name));
if FHandle = 0 then
raise EJclSemaphoreError.CreateRes(@RsSynchOpenSemaphore);
end;
Expand All @@ -1075,7 +1079,7 @@ constructor TJclMutex.Create(SecAttr: PSecurityAttributes; InitialOwner: Boolean
begin
inherited Create;
FName := Name;
FHandle := JclWin32.CreateMutex(SecAttr, InitialOwner, PChar(Name));
FHandle := {$IFDEF HAS_UNITSCOPE}Winapi.{$ENDIF}Windows.CreateMutex(SecAttr, BOOL(InitialOwner), PChar(Name));
if FHandle = 0 then
raise EJclMutexError.CreateRes(@RsSynchCreateMutex);
FExisted := GetLastError = ERROR_ALREADY_EXISTS;
Expand All @@ -1086,7 +1090,7 @@ constructor TJclMutex.Open(Access: Cardinal; Inheritable: Boolean; const Name: s
inherited Create;
FName := Name;
FExisted := True;
FHandle := {$IFDEF HAS_UNITSCOPE}Winapi.{$ENDIF}Windows.OpenMutex(Access, Inheritable, PChar(Name));
FHandle := {$IFDEF HAS_UNITSCOPE}Winapi.{$ENDIF}Windows.OpenMutex(Access, BOOL(Inheritable), PChar(Name));
if FHandle = 0 then
raise EJclMutexError.CreateRes(@RsSynchOpenMutex);
end;
Expand Down
8 changes: 8 additions & 0 deletions developer/src/ext/jedi/jvcl/jvcl/run/JvComponent.pas
Original file line number Diff line number Diff line change
Expand Up @@ -123,8 +123,16 @@ constructor TJvForm.Create(AOwner: TComponent);
finally
Exclude(FFormState, fsCreating);
end;
// Keyman local patch: Delphi 11/12 compat (vendored JVCL). The
// OldCreateOrder property was removed in Delphi 11; the modern semantics
// are equivalent to OldCreateOrder=True, so always call DoCreate on
// VER350+. On JVCL refresh from upstream: re-apply if not yet upstreamed.
Comment on lines +126 to +129
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This seems wrong according to the documentation for OldCreateOrder.

{$IF Defined(VER350) or Defined(VER360)}
DoCreate;
{$ELSE}
if OldCreateOrder then
DoCreate;
{$IFEND}
end;
finally
GlobalNameSpace.EndWrite;
Expand Down
22 changes: 22 additions & 0 deletions developer/src/ext/mbcolor/mxs.inc
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,28 @@
{$define DELPHI_10_UP}
{$endif}

// Keyman local patch: Delphi 11/12 compat (vendored mbcolor). Without
// these blocks DELPHI_*_UP flags are never defined on VER350/VER360,
// which causes HTMLColors.pas to drop "uses Variants" and fail to
// resolve the Null constant. On mbcolor refresh: re-apply if needed.
{$ifdef VER350}
{$define DELPHI_5_UP}
{$define DELPHI_6_UP}
{$define DELPHI_7_UP}
{$define DELPHI_8_UP}
{$define DELPHI_9_UP}
{$define DELPHI_10_UP}
{$endif}

{$ifdef VER360}
{$define DELPHI_5_UP}
{$define DELPHI_6_UP}
{$define DELPHI_7_UP}
{$define DELPHI_8_UP}
{$define DELPHI_9_UP}
{$define DELPHI_10_UP}
{$endif}

{$ifdef VER330}
{$define DELPHI_5_UP}
{$define DELPHI_6_UP}
Expand Down
6 changes: 4 additions & 2 deletions resources/build/win/configure_environment.inc.sh
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,11 @@ _build_vs_environment() {

_locate_rsvars() {
#
# Delphi Compiler Configuration - Delphi 10.3.2
# Delphi Compiler Configuration - defaults to Delphi 10.3 (BDS 20.0).
# Override via the KEYMAN_DELPHI_VERSION environment variable to build with
# a newer Delphi installation (e.g., KEYMAN_DELPHI_VERSION=23.0 for Delphi 12).
#
DELPHI_VERSION=20.0
DELPHI_VERSION="${KEYMAN_DELPHI_VERSION:-20.0}"
DCC32PATH="$(cygpath -u "$ProgramFilesx86\\Embarcadero\\Studio\\$DELPHI_VERSION\\bin")"
RSVars_path="$DCC32PATH/rsvars.bat"
}
Expand Down
5 changes: 4 additions & 1 deletion resources/build/win/delphi_environment.inc.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,10 @@
DELPHIWARNINGS=(-W-MESSAGE_DIRECTIVE -W-IMPLICIT_STRING_CAST -W-IMPLICIT_STRING_CAST_LOSS -W-EXPLICIT_STRING_CAST -W-EXPLICIT_STRING_CAST_LOSS -W-CVT_WCHAR_TO_ACHAR -W-CVT_NARROWING_STRING_LOST -W-CVT_ACHAR_TO_WCHAR -W-CVT_WIDENING_STRING_LOST -W-UNICODE_TO_LOCALE -W-LOCALE_TO_UNICODE -W-IMPLICIT_VARIANTS -W-IMPLICIT_INTEGER_CAST_LOSS -W-IMPLICIT_CONVERSION_LOSS -W-COMBINING_SIGNED_UNSIGNED64 -W-COMBINING_SIGNED_UNSIGNED64)
# !ENDIF

DELPHI_VERSION=20.0
# DELPHI_VERSION defaults to Delphi 10.3 (BDS 20.0). Override via the
# KEYMAN_DELPHI_VERSION environment variable to build with a newer Delphi
# installation (e.g., KEYMAN_DELPHI_VERSION=23.0 for Delphi 12).
DELPHI_VERSION="${KEYMAN_DELPHI_VERSION:-20.0}"
DCC32PATH="$(cygpath -u "$ProgramFilesx86\\Embarcadero\\Studio\\$DELPHI_VERSION\\bin")"

source "$KEYMAN_ROOT/resources/build/win/delphi_environment_generated.inc.sh"
Expand Down
3 changes: 2 additions & 1 deletion resources/builder.inc.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2323,7 +2323,8 @@ builder_describe_platform() {
# Detect delphi compiler (see also delphi_environment.inc.sh)
if builder_is_windows; then
local ProgramFilesx86="$(cygpath -w -F 42)"
if [[ -x "$(cygpath -u "$ProgramFilesx86\\Embarcadero\\Studio\\20.0\\bin\\dcc32.exe")" ]]; then
local _delphi_version="${KEYMAN_DELPHI_VERSION:-20.0}"
if [[ -x "$(cygpath -u "$ProgramFilesx86\\Embarcadero\\Studio\\$_delphi_version\\bin\\dcc32.exe")" ]]; then
builder_installed_tools+=(delphi)
fi
fi
Expand Down
Loading