diff --git a/LLVM.Imports.AggressiveInstCombine.pas b/LLVM.Imports.AggressiveInstCombine.pas index 7a7bf06..64082b6 100644 --- a/LLVM.Imports.AggressiveInstCombine.pas +++ b/LLVM.Imports.AggressiveInstCombine.pas @@ -1,5 +1,9 @@ unit LLVM.Imports.AggressiveInstCombine; +{$IFDEF FPC} + {$MODE Delphi} +{$ENDIF} + interface //based on AggressiveInstCombine.h diff --git a/LLVM.Imports.Analysis.pas b/LLVM.Imports.Analysis.pas index 4f2a7c4..94f5d72 100644 --- a/LLVM.Imports.Analysis.pas +++ b/LLVM.Imports.Analysis.pas @@ -1,5 +1,9 @@ unit LLVM.Imports.Analysis; +{$IFDEF FPC} + {$MODE Delphi} +{$ENDIF} + interface //based on Analysis.h diff --git a/LLVM.Imports.BitReader.pas b/LLVM.Imports.BitReader.pas index 47bcb73..aa54340 100644 --- a/LLVM.Imports.BitReader.pas +++ b/LLVM.Imports.BitReader.pas @@ -1,5 +1,9 @@ unit LLVM.Imports.BitReader; +{$IFDEF FPC} + {$MODE Delphi} +{$ENDIF} + interface //based on BitReader.h diff --git a/LLVM.Imports.BitWriter.pas b/LLVM.Imports.BitWriter.pas index a45be21..27aef50 100644 --- a/LLVM.Imports.BitWriter.pas +++ b/LLVM.Imports.BitWriter.pas @@ -1,5 +1,9 @@ unit LLVM.Imports.BitWriter; +{$IFDEF FPC} + {$MODE Delphi} +{$ENDIF} + interface //based on BitWriter.h diff --git a/LLVM.Imports.Comdat.pas b/LLVM.Imports.Comdat.pas index 21a5c31..d9d590e 100644 --- a/LLVM.Imports.Comdat.pas +++ b/LLVM.Imports.Comdat.pas @@ -1,5 +1,9 @@ unit LLVM.Imports.Comdat; +{$IFDEF FPC} + {$MODE Delphi} +{$ENDIF} + //based on Comdat.h {$MINENUMSIZE 4} diff --git a/LLVM.Imports.Core.pas b/LLVM.Imports.Core.pas index 12c6e4c..c087ce2 100644 --- a/LLVM.Imports.Core.pas +++ b/LLVM.Imports.Core.pas @@ -1,5 +1,9 @@ unit LLVM.Imports.Core; +{$IFDEF FPC} + {$MODE Delphi} +{$ENDIF} + interface //based on Core.h diff --git a/LLVM.Imports.Coroutines.pas b/LLVM.Imports.Coroutines.pas index 08aefa4..eeb301b 100644 --- a/LLVM.Imports.Coroutines.pas +++ b/LLVM.Imports.Coroutines.pas @@ -1,5 +1,9 @@ unit LLVM.Imports.Coroutines; +{$IFDEF FPC} + {$MODE Delphi} +{$ENDIF} + //based on Coroutines.h interface diff --git a/LLVM.Imports.Disassembler.pas b/LLVM.Imports.Disassembler.pas index fe7b455..36ff1b2 100644 --- a/LLVM.Imports.Disassembler.pas +++ b/LLVM.Imports.Disassembler.pas @@ -1,5 +1,9 @@ unit LLVM.Imports.Disassembler; +{$IFDEF FPC} + {$MODE Delphi} +{$ENDIF} + interface //based on Disassembler.h diff --git a/LLVM.Imports.DisassemblerTypes.pas b/LLVM.Imports.DisassemblerTypes.pas index 5ee6f1f..00a9985 100644 --- a/LLVM.Imports.DisassemblerTypes.pas +++ b/LLVM.Imports.DisassemblerTypes.pas @@ -1,5 +1,9 @@ unit LLVM.Imports.DisassemblerTypes; +{$IFDEF FPC} + {$MODE Delphi} +{$ENDIF} + interface //based on DisassemblerTypes.h diff --git a/LLVM.Imports.Error.pas b/LLVM.Imports.Error.pas index 5093a8b..51b51c4 100644 --- a/LLVM.Imports.Error.pas +++ b/LLVM.Imports.Error.pas @@ -1,5 +1,9 @@ unit LLVM.Imports.Error; +{$IFDEF FPC} + {$MODE Delphi} +{$ENDIF} + //based on Error.h interface diff --git a/LLVM.Imports.ErrorHandling.pas b/LLVM.Imports.ErrorHandling.pas index d1b20a5..05d7aee 100644 --- a/LLVM.Imports.ErrorHandling.pas +++ b/LLVM.Imports.ErrorHandling.pas @@ -1,5 +1,9 @@ unit LLVM.Imports.ErrorHandling; +{$IFDEF FPC} + {$MODE Delphi} +{$ENDIF} + interface //based on ErrorHandling.h diff --git a/LLVM.Imports.ExecutionEngine.pas b/LLVM.Imports.ExecutionEngine.pas index 178a1a4..b1e6c70 100644 --- a/LLVM.Imports.ExecutionEngine.pas +++ b/LLVM.Imports.ExecutionEngine.pas @@ -1,5 +1,9 @@ unit LLVM.Imports.ExecutionEngine; +{$IFDEF FPC} + {$MODE Delphi} +{$ENDIF} + interface //based on ExecutionEngine.h diff --git a/LLVM.Imports.IPO.pas b/LLVM.Imports.IPO.pas index a2f081e..6b23fb1 100644 --- a/LLVM.Imports.IPO.pas +++ b/LLVM.Imports.IPO.pas @@ -1,5 +1,9 @@ unit LLVM.Imports.IPO; +{$IFDEF FPC} + {$MODE Delphi} +{$ENDIF} + interface //based on IPO.h diff --git a/LLVM.Imports.IRReader.pas b/LLVM.Imports.IRReader.pas index 12c00de..7e8cd55 100644 --- a/LLVM.Imports.IRReader.pas +++ b/LLVM.Imports.IRReader.pas @@ -1,5 +1,9 @@ unit LLVM.Imports.IRReader; +{$IFDEF FPC} + {$MODE Delphi} +{$ENDIF} + interface //based on IRReader.h diff --git a/LLVM.Imports.InitFunctions.pas b/LLVM.Imports.InitFunctions.pas index afe9a5f..739f2ee 100644 --- a/LLVM.Imports.InitFunctions.pas +++ b/LLVM.Imports.InitFunctions.pas @@ -1,5 +1,9 @@ unit LLVM.Imports.InitFunctions; +{$IFDEF FPC} + {$MODE Delphi} +{$ENDIF} + interface //based on Initialization.h diff --git a/LLVM.Imports.InstCombine.pas b/LLVM.Imports.InstCombine.pas index 451b290..4eafb86 100644 --- a/LLVM.Imports.InstCombine.pas +++ b/LLVM.Imports.InstCombine.pas @@ -1,5 +1,9 @@ unit LLVM.Imports.InstCombine; +{$IFDEF FPC} + {$MODE Delphi} +{$ENDIF} + interface //based on InstCombine.h diff --git a/LLVM.Imports.Linker.pas b/LLVM.Imports.Linker.pas index 6581bf4..2e068b5 100644 --- a/LLVM.Imports.Linker.pas +++ b/LLVM.Imports.Linker.pas @@ -1,5 +1,9 @@ unit LLVM.Imports.Linker; +{$IFDEF FPC} + {$MODE Delphi} +{$ENDIF} + interface //based on Linker.h diff --git a/LLVM.Imports.ObjectFile.pas b/LLVM.Imports.ObjectFile.pas index 635ba5f..0a2cd47 100644 --- a/LLVM.Imports.ObjectFile.pas +++ b/LLVM.Imports.ObjectFile.pas @@ -1,5 +1,9 @@ unit LLVM.Imports.ObjectFile; +{$IFDEF FPC} + {$MODE Delphi} +{$ENDIF} + interface //based on Object.h diff --git a/LLVM.Imports.OrcBindings.pas b/LLVM.Imports.OrcBindings.pas index fec7138..f9679d8 100644 --- a/LLVM.Imports.OrcBindings.pas +++ b/LLVM.Imports.OrcBindings.pas @@ -1,5 +1,9 @@ unit LLVM.Imports.OrcBindings; +{$IFDEF FPC} + {$MODE Delphi} +{$ENDIF} + interface //based on OrcBindings.h diff --git a/LLVM.Imports.PassManagerBuilder.pas b/LLVM.Imports.PassManagerBuilder.pas index c341ba7..bf405ef 100644 --- a/LLVM.Imports.PassManagerBuilder.pas +++ b/LLVM.Imports.PassManagerBuilder.pas @@ -1,5 +1,9 @@ unit LLVM.Imports.PassManagerBuilder; +{$IFDEF FPC} + {$MODE Delphi} +{$ENDIF} + interface //based on PassManagerBuilder.h diff --git a/LLVM.Imports.Scalar.pas b/LLVM.Imports.Scalar.pas index d7f0c40..b225970 100644 --- a/LLVM.Imports.Scalar.pas +++ b/LLVM.Imports.Scalar.pas @@ -1,5 +1,9 @@ unit LLVM.Imports.Scalar; +{$IFDEF FPC} + {$MODE Delphi} +{$ENDIF} + interface //based on Scalar.h diff --git a/LLVM.Imports.Support.pas b/LLVM.Imports.Support.pas index bf6a379..31920e7 100644 --- a/LLVM.Imports.Support.pas +++ b/LLVM.Imports.Support.pas @@ -1,5 +1,9 @@ unit LLVM.Imports.Support; +{$IFDEF FPC} + {$MODE Delphi} +{$ENDIF} + interface //based on Support.h diff --git a/LLVM.Imports.Target.pas b/LLVM.Imports.Target.pas index d40a810..123de13 100644 --- a/LLVM.Imports.Target.pas +++ b/LLVM.Imports.Target.pas @@ -1,5 +1,9 @@ unit LLVM.Imports.Target; +{$IFDEF FPC} + {$MODE Delphi} +{$ENDIF} + interface //based on Target.h @@ -138,8 +142,13 @@ function LLVMOffsetOfElement(TD: TLLVMTargetDataRef; StructTy: TLLVMTypeRef; Ele implementation uses +{$IFDEF FPC} + Interfaces, LCLIntf, LCLType, LCLProc, + DynLibs, SysUtils; +{$ELSE} Windows, SysUtils; +{$ENDIF} const CTargetInfoProc = 'LLVMInitialize%sTargetInfo'; @@ -154,15 +163,27 @@ implementation function TryDynCallProc(const AName: string): Boolean; var +{$IFDEF FPC} + LLib: TLibHandle; +{$ELSE} LLib: THandle; +{$ENDIF} LDynProc: TInitProc; begin if AName = '' then Exit(False); +{$IFDEF FPC} + LLib := LoadLibrary(CLLVMLibrary); +{$ELSE} LLib := GetModuleHandle(CLLVMLibrary); +{$ENDIF} if LLib <> 0 then begin +{$IFDEF FPC} + LDynProc := TInitProc(GetProcedureAddress(LLib, PWideChar(AName))); +{$ELSE} @LDynProc := GetProcAddress(LLib, PWideChar(AName)); +{$ENDIF} if Assigned(LDynProc) then begin LDynProc(); diff --git a/LLVM.Imports.TargetMachine.pas b/LLVM.Imports.TargetMachine.pas index 9c00e3a..d7f66c1 100644 --- a/LLVM.Imports.TargetMachine.pas +++ b/LLVM.Imports.TargetMachine.pas @@ -1,5 +1,9 @@ unit LLVM.Imports.TargetMachine; +{$IFDEF FPC} + {$MODE Delphi} +{$ENDIF} + interface //based on TargetMachine.h diff --git a/LLVM.Imports.Types.pas b/LLVM.Imports.Types.pas index 0503cdd..ceadc8d 100644 --- a/LLVM.Imports.Types.pas +++ b/LLVM.Imports.Types.pas @@ -1,5 +1,9 @@ unit LLVM.Imports.Types; +{$IFDEF FPC} + {$MODE Delphi} +{$ENDIF} + interface //based on Types.h diff --git a/LLVM.Imports.Utils.pas b/LLVM.Imports.Utils.pas index 0e9ad1d..d91c357 100644 --- a/LLVM.Imports.Utils.pas +++ b/LLVM.Imports.Utils.pas @@ -1,5 +1,9 @@ unit LLVM.Imports.Utils; +{$IFDEF FPC} + {$MODE Delphi} +{$ENDIF} + Interface //based on Utils.h diff --git a/LLVM.Imports.Vectorize.pas b/LLVM.Imports.Vectorize.pas index fa5a3c2..711f892 100644 --- a/LLVM.Imports.Vectorize.pas +++ b/LLVM.Imports.Vectorize.pas @@ -1,5 +1,9 @@ unit LLVM.Imports.Vectorize; +{$IFDEF FPC} + {$MODE Delphi} +{$ENDIF} + interface uses diff --git a/LLVM.Imports.pas b/LLVM.Imports.pas index 6f08dcd..6dc3ac2 100644 --- a/LLVM.Imports.pas +++ b/LLVM.Imports.pas @@ -1,10 +1,22 @@ unit LLVM.Imports; +{$IFDEF FPC} + {$MODE Delphi} +{$ENDIF} + interface +{$IFDEF FPC} + uses SysUtils; +{$ELSE} uses System.SysUtils; +{$ENDIF} const +{$IFDEF FPC} + CLLVMLibrary = 'LLVM-10.so'; +{$ELSE} CLLVMLibrary = 'LLVM-C-10-0-0.dll'; +{$ENDIF} type TLLVMChar = AnsiChar;