mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-05 14:24:24 +02:00
* mark all external assemblers using an LLVM tool using af_llvm
+ added support for constructing target triplets * pass "-target triplet" when using an LLVM assembler o removed no longer needed $DARWINVERSION and $ARCH parameters * consistently use as_clang_gas when clang is used to assembler GAS-style assembly, and rename as_llcm_clang to as_clang_llvm (for consistency) * support pipe assembling when using clang on *nix in all cases git-svn-id: trunk@45807 -
This commit is contained in:
parent
6fe8d7bd14
commit
eb7ba1690e
18
.gitattributes
vendored
18
.gitattributes
vendored
@ -48,6 +48,7 @@ compiler/aarch64/racpu.pas svneol=native#text/plain
|
|||||||
compiler/aarch64/racpugas.pas svneol=native#text/plain
|
compiler/aarch64/racpugas.pas svneol=native#text/plain
|
||||||
compiler/aarch64/rgcpu.pas svneol=native#text/plain
|
compiler/aarch64/rgcpu.pas svneol=native#text/plain
|
||||||
compiler/aarch64/symcpu.pas svneol=native#text/plain
|
compiler/aarch64/symcpu.pas svneol=native#text/plain
|
||||||
|
compiler/aarch64/tripletcpu.pas svneol=native#text/plain
|
||||||
compiler/aasmbase.pas svneol=native#text/plain
|
compiler/aasmbase.pas svneol=native#text/plain
|
||||||
compiler/aasmcfi.pas svneol=native#text/plain
|
compiler/aasmcfi.pas svneol=native#text/plain
|
||||||
compiler/aasmcnst.pas svneol=native#text/plain
|
compiler/aasmcnst.pas svneol=native#text/plain
|
||||||
@ -107,6 +108,7 @@ compiler/arm/rarmstd.inc svneol=native#text/plain
|
|||||||
compiler/arm/rarmsup.inc svneol=native#text/plain
|
compiler/arm/rarmsup.inc svneol=native#text/plain
|
||||||
compiler/arm/rgcpu.pas svneol=native#text/plain
|
compiler/arm/rgcpu.pas svneol=native#text/plain
|
||||||
compiler/arm/symcpu.pas svneol=native#text/plain
|
compiler/arm/symcpu.pas svneol=native#text/plain
|
||||||
|
compiler/arm/tripletcpu.pas svneol=native#text/plain
|
||||||
compiler/armgen/aoptarm.pas svneol=native#text/pascal
|
compiler/armgen/aoptarm.pas svneol=native#text/pascal
|
||||||
compiler/armgen/armpara.pas svneol=native#text/plain
|
compiler/armgen/armpara.pas svneol=native#text/plain
|
||||||
compiler/assemble.pas svneol=native#text/plain
|
compiler/assemble.pas svneol=native#text/plain
|
||||||
@ -145,6 +147,7 @@ compiler/avr/ravrstd.inc svneol=native#text/plain
|
|||||||
compiler/avr/ravrsup.inc svneol=native#text/plain
|
compiler/avr/ravrsup.inc svneol=native#text/plain
|
||||||
compiler/avr/rgcpu.pas svneol=native#text/plain
|
compiler/avr/rgcpu.pas svneol=native#text/plain
|
||||||
compiler/avr/symcpu.pas svneol=native#text/plain
|
compiler/avr/symcpu.pas svneol=native#text/plain
|
||||||
|
compiler/avr/tripletcpu.pas svneol=native#text/plain
|
||||||
compiler/blockutl.pas svneol=native#text/plain
|
compiler/blockutl.pas svneol=native#text/plain
|
||||||
compiler/browcol.pas svneol=native#text/plain
|
compiler/browcol.pas svneol=native#text/plain
|
||||||
compiler/catch.pas svneol=native#text/plain
|
compiler/catch.pas svneol=native#text/plain
|
||||||
@ -248,6 +251,7 @@ compiler/i386/ra386att.pas svneol=native#text/plain
|
|||||||
compiler/i386/ra386int.pas svneol=native#text/plain
|
compiler/i386/ra386int.pas svneol=native#text/plain
|
||||||
compiler/i386/rgcpu.pas svneol=native#text/plain
|
compiler/i386/rgcpu.pas svneol=native#text/plain
|
||||||
compiler/i386/symcpu.pas svneol=native#text/plain
|
compiler/i386/symcpu.pas svneol=native#text/plain
|
||||||
|
compiler/i386/tripletcpu.pas svneol=native#text/plain
|
||||||
compiler/i8086/aoptcpu.pas svneol=native#text/plain
|
compiler/i8086/aoptcpu.pas svneol=native#text/plain
|
||||||
compiler/i8086/aoptcpub.pas svneol=native#text/plain
|
compiler/i8086/aoptcpub.pas svneol=native#text/plain
|
||||||
compiler/i8086/aoptcpud.pas svneol=native#text/plain
|
compiler/i8086/aoptcpud.pas svneol=native#text/plain
|
||||||
@ -296,6 +300,7 @@ compiler/i8086/ra8086int.pas svneol=native#text/plain
|
|||||||
compiler/i8086/rgcpu.pas svneol=native#text/plain
|
compiler/i8086/rgcpu.pas svneol=native#text/plain
|
||||||
compiler/i8086/symcpu.pas svneol=native#text/plain
|
compiler/i8086/symcpu.pas svneol=native#text/plain
|
||||||
compiler/i8086/tgcpu.pas svneol=native#text/plain
|
compiler/i8086/tgcpu.pas svneol=native#text/plain
|
||||||
|
compiler/i8086/tripletcpu.pas svneol=native#text/plain
|
||||||
compiler/impdef.pas svneol=native#text/plain
|
compiler/impdef.pas svneol=native#text/plain
|
||||||
compiler/import.pas svneol=native#text/plain
|
compiler/import.pas svneol=native#text/plain
|
||||||
compiler/jvm/aasmcpu.pas svneol=native#text/plain
|
compiler/jvm/aasmcpu.pas svneol=native#text/plain
|
||||||
@ -339,6 +344,7 @@ compiler/jvm/rjvmstd.inc svneol=native#text/plain
|
|||||||
compiler/jvm/rjvmsup.inc svneol=native#text/plain
|
compiler/jvm/rjvmsup.inc svneol=native#text/plain
|
||||||
compiler/jvm/symcpu.pas svneol=native#text/plain
|
compiler/jvm/symcpu.pas svneol=native#text/plain
|
||||||
compiler/jvm/tgcpu.pas svneol=native#text/plain
|
compiler/jvm/tgcpu.pas svneol=native#text/plain
|
||||||
|
compiler/jvm/tripletcpu.pas svneol=native#text/plain
|
||||||
compiler/ldscript.pas svneol=native#text/plain
|
compiler/ldscript.pas svneol=native#text/plain
|
||||||
compiler/link.pas svneol=native#text/plain
|
compiler/link.pas svneol=native#text/plain
|
||||||
compiler/llvm/aasmllvm.pas svneol=native#text/plain
|
compiler/llvm/aasmllvm.pas svneol=native#text/plain
|
||||||
@ -419,6 +425,7 @@ compiler/m68k/ra68k.pas svneol=native#text/plain
|
|||||||
compiler/m68k/ra68kmot.pas svneol=native#text/plain
|
compiler/m68k/ra68kmot.pas svneol=native#text/plain
|
||||||
compiler/m68k/rgcpu.pas svneol=native#text/plain
|
compiler/m68k/rgcpu.pas svneol=native#text/plain
|
||||||
compiler/m68k/symcpu.pas svneol=native#text/plain
|
compiler/m68k/symcpu.pas svneol=native#text/plain
|
||||||
|
compiler/m68k/tripletcpu.pas svneol=native#text/plain
|
||||||
compiler/macho.pas svneol=native#text/plain
|
compiler/macho.pas svneol=native#text/plain
|
||||||
compiler/machoutils.pas svneol=native#text/plain
|
compiler/machoutils.pas svneol=native#text/plain
|
||||||
compiler/mips/aasmcpu.pas svneol=native#text/plain
|
compiler/mips/aasmcpu.pas svneol=native#text/plain
|
||||||
@ -461,6 +468,7 @@ compiler/mips/rmipsstd.inc svneol=native#text/plain
|
|||||||
compiler/mips/rmipssup.inc svneol=native#text/plain
|
compiler/mips/rmipssup.inc svneol=native#text/plain
|
||||||
compiler/mips/strinst.inc svneol=native#text/plain
|
compiler/mips/strinst.inc svneol=native#text/plain
|
||||||
compiler/mips/symcpu.pas svneol=native#text/plain
|
compiler/mips/symcpu.pas svneol=native#text/plain
|
||||||
|
compiler/mips/tripletcpu.pas svneol=native#text/plain
|
||||||
compiler/msg/errorct.msg svneol=native#text/plain
|
compiler/msg/errorct.msg svneol=native#text/plain
|
||||||
compiler/msg/errord.msg svneol=native#text/plain
|
compiler/msg/errord.msg svneol=native#text/plain
|
||||||
compiler/msg/errorda.msg svneol=native#text/plain
|
compiler/msg/errorda.msg svneol=native#text/plain
|
||||||
@ -605,6 +613,7 @@ compiler/powerpc/rppcstab.inc svneol=native#text/plain
|
|||||||
compiler/powerpc/rppcstd.inc svneol=native#text/plain
|
compiler/powerpc/rppcstd.inc svneol=native#text/plain
|
||||||
compiler/powerpc/rppcsup.inc svneol=native#text/plain
|
compiler/powerpc/rppcsup.inc svneol=native#text/plain
|
||||||
compiler/powerpc/symcpu.pas svneol=native#text/plain
|
compiler/powerpc/symcpu.pas svneol=native#text/plain
|
||||||
|
compiler/powerpc/tripletcpu.pas svneol=native#text/plain
|
||||||
compiler/powerpc64/aoptcpu.pas svneol=native#text/plain
|
compiler/powerpc64/aoptcpu.pas svneol=native#text/plain
|
||||||
compiler/powerpc64/aoptcpub.pas svneol=native#text/plain
|
compiler/powerpc64/aoptcpub.pas svneol=native#text/plain
|
||||||
compiler/powerpc64/aoptcpud.pas svneol=native#text/plain
|
compiler/powerpc64/aoptcpud.pas svneol=native#text/plain
|
||||||
@ -641,6 +650,7 @@ compiler/powerpc64/rppcstab.inc svneol=native#text/plain
|
|||||||
compiler/powerpc64/rppcstd.inc svneol=native#text/plain
|
compiler/powerpc64/rppcstd.inc svneol=native#text/plain
|
||||||
compiler/powerpc64/rppcsup.inc svneol=native#text/plain
|
compiler/powerpc64/rppcsup.inc svneol=native#text/plain
|
||||||
compiler/powerpc64/symcpu.pas svneol=native#text/plain
|
compiler/powerpc64/symcpu.pas svneol=native#text/plain
|
||||||
|
compiler/powerpc64/tripletcpu.pas svneol=native#text/plain
|
||||||
compiler/pp.lpi svneol=native#text/plain
|
compiler/pp.lpi svneol=native#text/plain
|
||||||
compiler/pp.pas svneol=native#text/plain
|
compiler/pp.pas svneol=native#text/plain
|
||||||
compiler/pparautl.pas svneol=native#text/plain
|
compiler/pparautl.pas svneol=native#text/plain
|
||||||
@ -731,6 +741,7 @@ compiler/riscv32/rrv32std.inc svneol=native#text/plain
|
|||||||
compiler/riscv32/rrv32sup.inc svneol=native#text/plain
|
compiler/riscv32/rrv32sup.inc svneol=native#text/plain
|
||||||
compiler/riscv32/rv32reg.dat svneol=native#text/plain
|
compiler/riscv32/rv32reg.dat svneol=native#text/plain
|
||||||
compiler/riscv32/symcpu.pas svneol=native#text/plain
|
compiler/riscv32/symcpu.pas svneol=native#text/plain
|
||||||
|
compiler/riscv32/tripletcpu.pas svneol=native#text/plain
|
||||||
compiler/riscv64/aoptcpu.pas svneol=native#text/plain
|
compiler/riscv64/aoptcpu.pas svneol=native#text/plain
|
||||||
compiler/riscv64/aoptcpub.pas svneol=native#text/plain
|
compiler/riscv64/aoptcpub.pas svneol=native#text/plain
|
||||||
compiler/riscv64/aoptcpuc.pas svneol=native#text/plain
|
compiler/riscv64/aoptcpuc.pas svneol=native#text/plain
|
||||||
@ -762,6 +773,7 @@ compiler/riscv64/rrv32std.inc svneol=native#text/plain
|
|||||||
compiler/riscv64/rrv32sup.inc svneol=native#text/plain
|
compiler/riscv64/rrv32sup.inc svneol=native#text/plain
|
||||||
compiler/riscv64/rv32reg.dat svneol=native#text/plain
|
compiler/riscv64/rv32reg.dat svneol=native#text/plain
|
||||||
compiler/riscv64/symcpu.pas svneol=native#text/plain
|
compiler/riscv64/symcpu.pas svneol=native#text/plain
|
||||||
|
compiler/riscv64/tripletcpu.pas svneol=native#text/plain
|
||||||
compiler/scandir.pas svneol=native#text/plain
|
compiler/scandir.pas svneol=native#text/plain
|
||||||
compiler/scanner.pas svneol=native#text/plain
|
compiler/scanner.pas svneol=native#text/plain
|
||||||
compiler/sparc/aoptcpud.pas svneol=native#text/plain
|
compiler/sparc/aoptcpud.pas svneol=native#text/plain
|
||||||
@ -780,6 +792,7 @@ compiler/sparc/rspsri.inc svneol=native#text/plain
|
|||||||
compiler/sparc/rspstab.inc svneol=native#text/plain
|
compiler/sparc/rspstab.inc svneol=native#text/plain
|
||||||
compiler/sparc/rspstd.inc svneol=native#text/plain
|
compiler/sparc/rspstd.inc svneol=native#text/plain
|
||||||
compiler/sparc/rspsup.inc svneol=native#text/plain
|
compiler/sparc/rspsup.inc svneol=native#text/plain
|
||||||
|
compiler/sparc/tripletcpu.pas svneol=native#text/plain
|
||||||
compiler/sparc64/cgcpu.pas svneol=native#text/pascal
|
compiler/sparc64/cgcpu.pas svneol=native#text/pascal
|
||||||
compiler/sparc64/cpugas.pas svneol=native#text/pascal
|
compiler/sparc64/cpugas.pas svneol=native#text/pascal
|
||||||
compiler/sparc64/cpuinfo.pas svneol=native#text/plain
|
compiler/sparc64/cpuinfo.pas svneol=native#text/plain
|
||||||
@ -796,6 +809,7 @@ compiler/sparc64/rsp64stab.inc svneol=native#text/pascal
|
|||||||
compiler/sparc64/rsp64std.inc svneol=native#text/pascal
|
compiler/sparc64/rsp64std.inc svneol=native#text/pascal
|
||||||
compiler/sparc64/rsp64sup.inc svneol=native#text/pascal
|
compiler/sparc64/rsp64sup.inc svneol=native#text/pascal
|
||||||
compiler/sparc64/tgcpu.pas svneol=native#text/plain
|
compiler/sparc64/tgcpu.pas svneol=native#text/plain
|
||||||
|
compiler/sparc64/tripletcpu.pas svneol=native#text/plain
|
||||||
compiler/sparcgen/aasmcpu.pas svneol=native#text/plain
|
compiler/sparcgen/aasmcpu.pas svneol=native#text/plain
|
||||||
compiler/sparcgen/aoptcpu.pas svneol=native#text/plain
|
compiler/sparcgen/aoptcpu.pas svneol=native#text/plain
|
||||||
compiler/sparcgen/aoptcpub.pas svneol=native#text/plain
|
compiler/sparcgen/aoptcpub.pas svneol=native#text/plain
|
||||||
@ -902,6 +916,7 @@ compiler/systems/t_win16.pas svneol=native#text/plain
|
|||||||
compiler/systems/t_zxspectrum.pas svneol=native#text/plain
|
compiler/systems/t_zxspectrum.pas svneol=native#text/plain
|
||||||
compiler/tgobj.pas svneol=native#text/plain
|
compiler/tgobj.pas svneol=native#text/plain
|
||||||
compiler/tokens.pas svneol=native#text/plain
|
compiler/tokens.pas svneol=native#text/plain
|
||||||
|
compiler/triplet.pas svneol=native#text/plain
|
||||||
compiler/utils/Makefile svneol=native#text/plain
|
compiler/utils/Makefile svneol=native#text/plain
|
||||||
compiler/utils/Makefile.fpc svneol=native#text/plain
|
compiler/utils/Makefile.fpc svneol=native#text/plain
|
||||||
compiler/utils/README.txt svneol=native#text/plain
|
compiler/utils/README.txt svneol=native#text/plain
|
||||||
@ -1022,6 +1037,7 @@ compiler/x86_64/rax64att.pas svneol=native#text/plain
|
|||||||
compiler/x86_64/rax64int.pas svneol=native#text/plain
|
compiler/x86_64/rax64int.pas svneol=native#text/plain
|
||||||
compiler/x86_64/rgcpu.pas svneol=native#text/plain
|
compiler/x86_64/rgcpu.pas svneol=native#text/plain
|
||||||
compiler/x86_64/symcpu.pas svneol=native#text/plain
|
compiler/x86_64/symcpu.pas svneol=native#text/plain
|
||||||
|
compiler/x86_64/tripletcpu.pas svneol=native#text/plain
|
||||||
compiler/x86_64/win64unw.pas svneol=native#text/plain
|
compiler/x86_64/win64unw.pas svneol=native#text/plain
|
||||||
compiler/x86_64/x8664ats.inc svneol=native#text/plain
|
compiler/x86_64/x8664ats.inc svneol=native#text/plain
|
||||||
compiler/x86_64/x8664att.inc svneol=native#text/plain
|
compiler/x86_64/x8664att.inc svneol=native#text/plain
|
||||||
@ -1062,6 +1078,7 @@ compiler/xtensa/rxtensasta.inc svneol=native#text/plain
|
|||||||
compiler/xtensa/rxtensastd.inc svneol=native#text/plain
|
compiler/xtensa/rxtensastd.inc svneol=native#text/plain
|
||||||
compiler/xtensa/rxtensasup.inc svneol=native#text/plain
|
compiler/xtensa/rxtensasup.inc svneol=native#text/plain
|
||||||
compiler/xtensa/symcpu.pas svneol=native#text/pascal
|
compiler/xtensa/symcpu.pas svneol=native#text/pascal
|
||||||
|
compiler/xtensa/tripletcpu.pas svneol=native#text/plain
|
||||||
compiler/xtensa/xtensaatt.inc svneol=native#text/plain
|
compiler/xtensa/xtensaatt.inc svneol=native#text/plain
|
||||||
compiler/xtensa/xtensaop.inc svneol=native#text/plain
|
compiler/xtensa/xtensaop.inc svneol=native#text/plain
|
||||||
compiler/xtensa/xtensareg.dat svneol=native#text/plain
|
compiler/xtensa/xtensareg.dat svneol=native#text/plain
|
||||||
@ -1100,6 +1117,7 @@ compiler/z80/rz80std.inc svneol=native#text/plain
|
|||||||
compiler/z80/rz80sup.inc svneol=native#text/plain
|
compiler/z80/rz80sup.inc svneol=native#text/plain
|
||||||
compiler/z80/symcpu.pas svneol=native#text/plain
|
compiler/z80/symcpu.pas svneol=native#text/plain
|
||||||
compiler/z80/tgcpu.pas svneol=native#text/plain
|
compiler/z80/tgcpu.pas svneol=native#text/plain
|
||||||
|
compiler/z80/tripletcpu.pas svneol=native#text/plain
|
||||||
compiler/z80/z80ins.dat svneol=native#text/plain
|
compiler/z80/z80ins.dat svneol=native#text/plain
|
||||||
compiler/z80/z80nop.inc svneol=native#text/plain
|
compiler/z80/z80nop.inc svneol=native#text/plain
|
||||||
compiler/z80/z80op.inc svneol=native#text/plain
|
compiler/z80/z80op.inc svneol=native#text/plain
|
||||||
|
@ -799,12 +799,12 @@ unit agcpugas;
|
|||||||
|
|
||||||
as_aarch64_clang_darwin_info : tasminfo =
|
as_aarch64_clang_darwin_info : tasminfo =
|
||||||
(
|
(
|
||||||
id : as_clang;
|
id : as_clang_asdarwin;
|
||||||
idtxt : 'CLANG';
|
idtxt : 'CLANG';
|
||||||
asmbin : 'clang';
|
asmbin : 'clang';
|
||||||
asmcmd : '-c -o $OBJ $EXTRAOPT -arch arm64 $DARWINVERSION -x assembler $ASM';
|
asmcmd : '-x assembler -c -target $TRIPLET -o $OBJ $EXTRAOPT -x assembler $ASM';
|
||||||
supported_targets : [system_aarch64_ios,system_aarch64_darwin];
|
supported_targets : [system_aarch64_ios,system_aarch64_darwin];
|
||||||
flags : [af_needar,af_smartlink_sections,af_supports_dwarf];
|
flags : [af_needar,af_smartlink_sections,af_supports_dwarf,af_llvm];
|
||||||
labelprefix : 'L';
|
labelprefix : 'L';
|
||||||
labelmaxlen : -1;
|
labelmaxlen : -1;
|
||||||
comment : '# ';
|
comment : '# ';
|
||||||
@ -816,9 +816,9 @@ unit agcpugas;
|
|||||||
id : as_clang_gas;
|
id : as_clang_gas;
|
||||||
idtxt : 'CLANG';
|
idtxt : 'CLANG';
|
||||||
asmbin : 'clang';
|
asmbin : 'clang';
|
||||||
asmcmd : '-c -o $OBJ $EXTRAOPT -target $TARGET -x assembler $ASM';
|
asmcmd : '-x assembler -c -target $TRIPLET -o $OBJ $EXTRAOPT -x assembler $ASM';
|
||||||
supported_targets : [system_aarch64_win64];
|
supported_targets : [system_aarch64_win64];
|
||||||
flags : [af_needar,af_smartlink_sections,af_supports_dwarf];
|
flags : [af_needar,af_smartlink_sections,af_supports_dwarf,af_llvm];
|
||||||
labelprefix : '.L';
|
labelprefix : '.L';
|
||||||
labelmaxlen : -1;
|
labelmaxlen : -1;
|
||||||
comment : '// ';
|
comment : '// ';
|
||||||
|
48
compiler/aarch64/tripletcpu.pas
Normal file
48
compiler/aarch64/tripletcpu.pas
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
Copyright (c) 2020 by Jonas Maebe
|
||||||
|
|
||||||
|
Construct the cpu part of the triplet
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
}
|
||||||
|
unit tripletcpu;
|
||||||
|
|
||||||
|
{$i fpcdefs.inc}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
globtype;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
globals, systems, cpuinfo;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
begin
|
||||||
|
if target_info.system in systems_darwin then
|
||||||
|
result:='arm64'
|
||||||
|
else
|
||||||
|
result:='aarch64'
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
@ -171,7 +171,7 @@ unit agarmgas;
|
|||||||
function TArmAppleGNUAssembler.MakeCmdLine: TCmdStr;
|
function TArmAppleGNUAssembler.MakeCmdLine: TCmdStr;
|
||||||
begin
|
begin
|
||||||
result:=inherited MakeCmdLine;
|
result:=inherited MakeCmdLine;
|
||||||
if (asminfo^.id = as_clang) then
|
if (asminfo^.id in [as_clang_gas,as_clang_asdarwin]) then
|
||||||
begin
|
begin
|
||||||
if fputypestrllvm[current_settings.fputype] <> '' then
|
if fputypestrllvm[current_settings.fputype] <> '' then
|
||||||
result:='-m'+fputypestrllvm[current_settings.fputype]+' '+result;
|
result:='-m'+fputypestrllvm[current_settings.fputype]+' '+result;
|
||||||
@ -473,12 +473,12 @@ unit agarmgas;
|
|||||||
|
|
||||||
as_arm_clang_darwin_info : tasminfo =
|
as_arm_clang_darwin_info : tasminfo =
|
||||||
(
|
(
|
||||||
id : as_clang;
|
id : as_clang_asdarwin;
|
||||||
idtxt : 'CLANG';
|
idtxt : 'CLANG';
|
||||||
asmbin : 'clang';
|
asmbin : 'clang';
|
||||||
asmcmd : '-c -o $OBJ $EXTRAOPT -arch $ARCH $DARWINVERSION -x assembler $ASM';
|
asmcmd : '-x assembler -c -target $TRIPLET -o $OBJ $EXTRAOPT -x assembler $ASM';
|
||||||
supported_targets : [system_arm_ios];
|
supported_targets : [system_arm_ios];
|
||||||
flags : [af_needar,af_smartlink_sections,af_supports_dwarf];
|
flags : [af_needar,af_smartlink_sections,af_supports_dwarf,af_llvm];
|
||||||
labelprefix : 'L';
|
labelprefix : 'L';
|
||||||
labelmaxlen : -1;
|
labelmaxlen : -1;
|
||||||
comment : '# ';
|
comment : '# ';
|
||||||
|
51
compiler/arm/tripletcpu.pas
Normal file
51
compiler/arm/tripletcpu.pas
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
Copyright (c) 2020 by Jonas Maebe
|
||||||
|
|
||||||
|
Construct the cpu part of the triplet
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
}
|
||||||
|
unit tripletcpu;
|
||||||
|
|
||||||
|
{$i fpcdefs.inc}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
globtype;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
globals, cutils, systems, cpuinfo;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
begin
|
||||||
|
result:=lower(cputypestr[current_settings.cputype]);
|
||||||
|
{ llvm replaces the cpu name with thumb for when generating thumb code}
|
||||||
|
if (tripletstyle=triplet_llvm) and
|
||||||
|
(current_settings.instructionset=is_thumb) then
|
||||||
|
result:='thumb'+copy(result,4,255);
|
||||||
|
if target_info.endian=endian_big then
|
||||||
|
result:=result+'be';
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
@ -264,7 +264,7 @@ Implementation
|
|||||||
{$endif FPC_SOFT_FPUX80}
|
{$endif FPC_SOFT_FPUX80}
|
||||||
{$endif}
|
{$endif}
|
||||||
cscript,fmodule,verbose,
|
cscript,fmodule,verbose,
|
||||||
cpuinfo,
|
cpuinfo,triplet,
|
||||||
aasmcpu;
|
aasmcpu;
|
||||||
|
|
||||||
var
|
var
|
||||||
@ -745,7 +745,7 @@ Implementation
|
|||||||
{$ifdef hasunix}
|
{$ifdef hasunix}
|
||||||
DoPipe:=(cs_asm_pipe in current_settings.globalswitches) and
|
DoPipe:=(cs_asm_pipe in current_settings.globalswitches) and
|
||||||
(([cs_asm_extern,cs_asm_leave,cs_link_on_target] * current_settings.globalswitches) = []) and
|
(([cs_asm_extern,cs_asm_leave,cs_link_on_target] * current_settings.globalswitches) = []) and
|
||||||
((asminfo^.id in [as_gas,as_ggas,as_darwin,as_powerpc_xcoff,as_clang,as_solaris_as]));
|
((asminfo^.id in [as_gas,as_ggas,as_darwin,as_powerpc_xcoff,as_clang_gas,as_clang_llvm,as_solaris_as]));
|
||||||
{$else hasunix}
|
{$else hasunix}
|
||||||
DoPipe:=false;
|
DoPipe:=false;
|
||||||
{$endif}
|
{$endif}
|
||||||
@ -929,17 +929,13 @@ Implementation
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
result:=asminfo^.asmcmd;
|
result:=asminfo^.asmcmd;
|
||||||
{ for Xcode 7.x and later }
|
if af_llvm in target_asm.flags then
|
||||||
if MacOSXVersionMin<>'' then
|
Replace(result,'$TRIPLET',targettriplet(triplet_llvm))
|
||||||
Replace(result,'$DARWINVERSION','-mmacosx-version-min='+MacOSXVersionMin)
|
|
||||||
else if iPhoneOSVersionMin<>'' then
|
|
||||||
Replace(result,'$DARWINVERSION','-miphoneos-version-min='+iPhoneOSVersionMin)
|
|
||||||
else
|
|
||||||
Replace(result,'$DARWINVERSION','');
|
|
||||||
{$ifdef arm}
|
{$ifdef arm}
|
||||||
if (target_info.system=system_arm_ios) then
|
else if (target_info.system=system_arm_ios) then
|
||||||
Replace(result,'$ARCH',lower(cputypestr[current_settings.cputype]));
|
Replace(result,'$ARCH',lower(cputypestr[current_settings.cputype]))
|
||||||
{$endif arm}
|
{$endif arm}
|
||||||
|
;
|
||||||
if (cs_link_on_target in current_settings.globalswitches) then
|
if (cs_link_on_target in current_settings.globalswitches) then
|
||||||
begin
|
begin
|
||||||
Replace(result,'$ASM',maybequoted(ScriptFixFileName(AsmFileName)));
|
Replace(result,'$ASM',maybequoted(ScriptFixFileName(AsmFileName)));
|
||||||
@ -949,7 +945,7 @@ Implementation
|
|||||||
begin
|
begin
|
||||||
{$ifdef hasunix}
|
{$ifdef hasunix}
|
||||||
if DoPipe then
|
if DoPipe then
|
||||||
if asminfo^.id<>as_clang then
|
if not(asminfo^.id in [as_clang_gas,as_clang_asdarwin,as_clang_llvm]) then
|
||||||
Replace(result,'$ASM','')
|
Replace(result,'$ASM','')
|
||||||
else
|
else
|
||||||
Replace(result,'$ASM','-')
|
Replace(result,'$ASM','-')
|
||||||
@ -2536,7 +2532,7 @@ Implementation
|
|||||||
var
|
var
|
||||||
asmkind: tasm;
|
asmkind: tasm;
|
||||||
begin
|
begin
|
||||||
for asmkind in [as_gas,as_ggas,as_darwin] do
|
for asmkind in [as_gas,as_ggas,as_darwin,as_clang_gas,as_clang_asdarwin] do
|
||||||
if assigned(asminfos[asmkind]) and
|
if assigned(asminfos[asmkind]) and
|
||||||
(target_info.system in asminfos[asmkind]^.supported_targets) then
|
(target_info.system in asminfos[asmkind]^.supported_targets) then
|
||||||
begin
|
begin
|
||||||
|
45
compiler/avr/tripletcpu.pas
Normal file
45
compiler/avr/tripletcpu.pas
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
{
|
||||||
|
Copyright (c) 2020 by Jonas Maebe
|
||||||
|
|
||||||
|
Construct the cpu part of the triplet
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
}
|
||||||
|
unit tripletcpu;
|
||||||
|
|
||||||
|
{$i fpcdefs.inc}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
globtype;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
globals, cpuinfo;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
begin
|
||||||
|
result:='avr';
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
@ -354,6 +354,12 @@ interface
|
|||||||
);
|
);
|
||||||
twpoptimizerswitches = set of twpoptimizerswitch;
|
twpoptimizerswitches = set of twpoptimizerswitch;
|
||||||
|
|
||||||
|
{ platform triplet style }
|
||||||
|
ttripletstyle = (
|
||||||
|
triplet_llvm
|
||||||
|
{ , triple_gnu }
|
||||||
|
);
|
||||||
|
|
||||||
{ module flags (extra unit flags not in ppu header) }
|
{ module flags (extra unit flags not in ppu header) }
|
||||||
tmoduleflag = (
|
tmoduleflag = (
|
||||||
mf_init, { unit has initialization section }
|
mf_init, { unit has initialization section }
|
||||||
|
49
compiler/i386/tripletcpu.pas
Normal file
49
compiler/i386/tripletcpu.pas
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
{
|
||||||
|
Copyright (c) 2020 by Jonas Maebe
|
||||||
|
|
||||||
|
Construct the cpu part of the triplet
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
}
|
||||||
|
unit tripletcpu;
|
||||||
|
|
||||||
|
{$i fpcdefs.inc}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
globtype;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
globals, systems, cpuinfo;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
begin
|
||||||
|
if (target_info.system in systems_darwin) or
|
||||||
|
(current_settings.cputype<cpu_Pentium2) then
|
||||||
|
result:='i386'
|
||||||
|
else
|
||||||
|
result:='i686'
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
45
compiler/i8086/tripletcpu.pas
Normal file
45
compiler/i8086/tripletcpu.pas
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
{
|
||||||
|
Copyright (c) 2020 by Jonas Maebe
|
||||||
|
|
||||||
|
Construct the cpu part of the triplet
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
}
|
||||||
|
unit tripletcpu;
|
||||||
|
|
||||||
|
{$i fpcdefs.inc}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
globtype;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
globals, cpuinfo;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
begin
|
||||||
|
result:='i8086';
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
45
compiler/jvm/tripletcpu.pas
Normal file
45
compiler/jvm/tripletcpu.pas
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
{
|
||||||
|
Copyright (c) 2020 by Jonas Maebe
|
||||||
|
|
||||||
|
Construct the cpu part of the triplet
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
}
|
||||||
|
unit tripletcpu;
|
||||||
|
|
||||||
|
{$i fpcdefs.inc}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
globtype;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
globals, cpuinfo;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
begin
|
||||||
|
result:='jvm';
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
@ -72,11 +72,6 @@ interface
|
|||||||
InstrWriter: TLLVMInstrWriter;
|
InstrWriter: TLLVMInstrWriter;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
TLLVMLLCAssember=class(TLLVMAssember)
|
|
||||||
public
|
|
||||||
function MakeCmdLine: TCmdStr; override;
|
|
||||||
end;
|
|
||||||
|
|
||||||
TLLVMClangAssember=class(TLLVMAssember)
|
TLLVMClangAssember=class(TLLVMAssember)
|
||||||
public
|
public
|
||||||
function MakeCmdLine: TCmdStr; override;
|
function MakeCmdLine: TCmdStr; override;
|
||||||
@ -118,7 +113,7 @@ implementation
|
|||||||
objcasm,
|
objcasm,
|
||||||
aasmcnst,symconst,symdef,symtable,
|
aasmcnst,symconst,symdef,symtable,
|
||||||
llvmbase,itllvm,llvmdef,
|
llvmbase,itllvm,llvmdef,
|
||||||
cgbase,cgutils,cpubase,cpuinfo,llvminfo;
|
cgbase,cgutils,cpubase,cpuinfo,triplet,llvminfo;
|
||||||
|
|
||||||
const
|
const
|
||||||
line_length = 70;
|
line_length = 70;
|
||||||
@ -849,7 +844,7 @@ implementation
|
|||||||
writer.AsmWrite(target_info.llvmdatalayout);
|
writer.AsmWrite(target_info.llvmdatalayout);
|
||||||
writer.AsmWriteln('"');
|
writer.AsmWriteln('"');
|
||||||
writer.AsmWrite('target triple = "');
|
writer.AsmWrite('target triple = "');
|
||||||
writer.AsmWrite(llvm_target_name);
|
writer.AsmWrite(targettriplet(triplet_llvm));
|
||||||
writer.AsmWriteln('"');
|
writer.AsmWriteln('"');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1593,49 +1588,6 @@ implementation
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
{****************************************************************************}
|
|
||||||
{ llc Assember }
|
|
||||||
{****************************************************************************}
|
|
||||||
|
|
||||||
function TLLVMLLCAssember.MakeCmdLine: TCmdStr;
|
|
||||||
var
|
|
||||||
optstr: TCmdStr;
|
|
||||||
begin
|
|
||||||
result:=inherited;
|
|
||||||
{ standard optimization flags for llc -- todo: this needs to be split
|
|
||||||
into a call to opt and one to llc }
|
|
||||||
if cs_opt_level3 in current_settings.optimizerswitches then
|
|
||||||
optstr:='-O3'
|
|
||||||
else if cs_opt_level2 in current_settings.optimizerswitches then
|
|
||||||
optstr:='-O2'
|
|
||||||
else if cs_opt_level1 in current_settings.optimizerswitches then
|
|
||||||
optstr:='-O1'
|
|
||||||
else
|
|
||||||
optstr:='-O0';
|
|
||||||
{ stack frame elimination }
|
|
||||||
if not(cs_opt_stackframe in current_settings.optimizerswitches) then
|
|
||||||
optstr:=optstr+' -disable-fp-elim';
|
|
||||||
{ fast math }
|
|
||||||
if cs_opt_fastmath in current_settings.optimizerswitches then
|
|
||||||
optstr:=optstr+' -enable-unsafe-fp-math -fp-contract=fast'; { -enable-fp-mad support depends on version }
|
|
||||||
{ smart linking }
|
|
||||||
if cs_create_smart in current_settings.moduleswitches then
|
|
||||||
optstr:=optstr+' -data-sections -function-sections';
|
|
||||||
{ pic }
|
|
||||||
if cs_create_pic in current_settings.moduleswitches then
|
|
||||||
optstr:=optstr+' -relocation-model=pic'
|
|
||||||
else if not(target_info.system in systems_darwin) then
|
|
||||||
optstr:=optstr+' -relocation-model=static'
|
|
||||||
else
|
|
||||||
optstr:=optstr+' -relocation-model=dynamic-no-pic';
|
|
||||||
{ force object output instead of textual assembler code }
|
|
||||||
optstr:=optstr+' -filetype=obj';
|
|
||||||
if fputypestrllvm[current_settings.fputype]<>'' then
|
|
||||||
optstr:=optstr+' -mattr=+'+fputypestrllvm[current_settings.fputype];
|
|
||||||
replace(result,'$OPT',optstr);
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
{****************************************************************************}
|
{****************************************************************************}
|
||||||
{ clang Assember }
|
{ clang Assember }
|
||||||
{****************************************************************************}
|
{****************************************************************************}
|
||||||
@ -1661,8 +1613,6 @@ implementation
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
result:=inherited;
|
result:=inherited;
|
||||||
{ standard optimization flags for llc -- todo: this needs to be split
|
|
||||||
into a call to opt and one to llc }
|
|
||||||
if cs_opt_level3 in current_settings.optimizerswitches then
|
if cs_opt_level3 in current_settings.optimizerswitches then
|
||||||
optstr:='-O3'
|
optstr:='-O3'
|
||||||
else if cs_opt_level2 in current_settings.optimizerswitches then
|
else if cs_opt_level2 in current_settings.optimizerswitches then
|
||||||
@ -1690,10 +1640,6 @@ implementation
|
|||||||
optstr:=optstr+' -static'
|
optstr:=optstr+' -static'
|
||||||
else
|
else
|
||||||
optstr:=optstr+' -mdynamic-no-pic';
|
optstr:=optstr+' -mdynamic-no-pic';
|
||||||
if not(target_info.system in systems_darwin) then
|
|
||||||
begin
|
|
||||||
optstr:=optstr+' --target='+llvm_target_name;
|
|
||||||
end;
|
|
||||||
|
|
||||||
if fputypestrllvm[current_settings.fputype]<>'' then
|
if fputypestrllvm[current_settings.fputype]<>'' then
|
||||||
optstr:=optstr+' -m'+fputypestrllvm[current_settings.fputype];
|
optstr:=optstr+' -m'+fputypestrllvm[current_settings.fputype];
|
||||||
@ -1727,29 +1673,13 @@ implementation
|
|||||||
|
|
||||||
|
|
||||||
const
|
const
|
||||||
as_llvm_llc_info : tasminfo =
|
as_clang_llvm_info : tasminfo =
|
||||||
(
|
(
|
||||||
id : as_llvm_llc;
|
id : as_clang_llvm;
|
||||||
|
idtxt : 'CLANG-LLVM';
|
||||||
idtxt : 'LLVM-LLC';
|
|
||||||
asmbin : 'llc';
|
|
||||||
asmcmd: '$OPT -o $OBJ $ASM';
|
|
||||||
supported_targets : [system_x86_64_linux,system_x86_64_darwin,system_aarch64_linux,system_arm_linux];
|
|
||||||
flags : [af_smartlink_sections,af_llvm];
|
|
||||||
labelprefix : 'L';
|
|
||||||
labelmaxlen : -1;
|
|
||||||
comment : '; ';
|
|
||||||
dollarsign: '$';
|
|
||||||
);
|
|
||||||
|
|
||||||
as_llvm_clang_info : tasminfo =
|
|
||||||
(
|
|
||||||
id : as_llvm_clang;
|
|
||||||
|
|
||||||
idtxt : 'LLVM-CLANG';
|
|
||||||
asmbin : 'clang';
|
asmbin : 'clang';
|
||||||
asmcmd: '$OPT $DARWINVERSION -c -o $OBJ $ASM';
|
asmcmd: '-x ir -target $TARGET $OPT -target $TRIPLET -c -o $OBJ $ASM $EXTRAOPT';
|
||||||
supported_targets : [system_x86_64_linux,system_x86_64_darwin,system_aarch64_linux,system_arm_linux];
|
supported_targets : [system_x86_64_linux,system_x86_64_darwin,system_aarch64_darwin,system_aarch64_linux,system_arm_linux];
|
||||||
flags : [af_smartlink_sections,af_llvm];
|
flags : [af_smartlink_sections,af_llvm];
|
||||||
labelprefix : 'L';
|
labelprefix : 'L';
|
||||||
labelmaxlen : -1;
|
labelmaxlen : -1;
|
||||||
@ -1758,6 +1688,5 @@ implementation
|
|||||||
);
|
);
|
||||||
|
|
||||||
begin
|
begin
|
||||||
RegisterAssembler(as_llvm_llc_info,TLLVMLLCAssember);
|
RegisterAssembler(as_clang_llvm_info,TLLVMClangAssember);
|
||||||
RegisterAssembler(as_llvm_clang_info,TLLVMClangAssember);
|
|
||||||
end.
|
end.
|
||||||
|
@ -102,8 +102,6 @@ interface
|
|||||||
{ = max(cpubase.max_operands,8) }
|
{ = max(cpubase.max_operands,8) }
|
||||||
max_operands = ((-ord(cpubase.max_operands<=8)) and 15) or ((-ord(cpubase.max_operands>8)) and cpubase.max_operands);
|
max_operands = ((-ord(cpubase.max_operands<=8)) and 15) or ((-ord(cpubase.max_operands>8)) and cpubase.max_operands);
|
||||||
|
|
||||||
function llvm_target_name: ansistring;
|
|
||||||
|
|
||||||
function llvm_callingconvention_name(c: tproccalloption): ansistring;
|
function llvm_callingconvention_name(c: tproccalloption): ansistring;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
@ -112,98 +110,6 @@ implementation
|
|||||||
globals,
|
globals,
|
||||||
systems;
|
systems;
|
||||||
|
|
||||||
{$j-}
|
|
||||||
{$ifndef arm}
|
|
||||||
const
|
|
||||||
llvmsystemcpu: array[tsystemcpu] of ansistring =
|
|
||||||
('unknown',
|
|
||||||
'i386',
|
|
||||||
'm68k',
|
|
||||||
'alpha',
|
|
||||||
'powerpc',
|
|
||||||
'sparc',
|
|
||||||
'unknown',
|
|
||||||
'ia64',
|
|
||||||
'x86_64',
|
|
||||||
'mips',
|
|
||||||
'arm',
|
|
||||||
'powerpc64',
|
|
||||||
'avr',
|
|
||||||
'mipsel',
|
|
||||||
'unknown',
|
|
||||||
'unknown',
|
|
||||||
'aarch64',
|
|
||||||
'wasm32',
|
|
||||||
'sparc64',
|
|
||||||
'riscv32',
|
|
||||||
'riscv64',
|
|
||||||
'xtensa',
|
|
||||||
'z80'
|
|
||||||
);
|
|
||||||
{$endif}
|
|
||||||
|
|
||||||
function llvm_target_name: ansistring;
|
|
||||||
begin
|
|
||||||
{ architecture }
|
|
||||||
{$ifdef arm}
|
|
||||||
llvm_target_name:=lower(cputypestr[current_settings.cputype]);
|
|
||||||
{$else arm}
|
|
||||||
llvm_target_name:=llvmsystemcpu[target_info.cpu];
|
|
||||||
{$endif}
|
|
||||||
{ vendor and/or OS }
|
|
||||||
if target_info.system in systems_darwin then
|
|
||||||
begin
|
|
||||||
llvm_target_name:=llvm_target_name+'-apple';
|
|
||||||
if not(target_info.system in [system_arm_ios,system_i386_iphonesim]) then
|
|
||||||
llvm_target_name:=llvm_target_name+'-macosx'+MacOSXVersionMin
|
|
||||||
else
|
|
||||||
llvm_target_name:=llvm_target_name+'-ios'+iPhoneOSVersionMin;
|
|
||||||
end
|
|
||||||
else if target_info.system in (systems_linux+systems_android) then
|
|
||||||
llvm_target_name:=llvm_target_name+'-unknown-linux'
|
|
||||||
else if target_info.system in systems_all_windows then
|
|
||||||
begin
|
|
||||||
{ WinCE isn't supported (yet) by llvm, but if/when added this is
|
|
||||||
presumably how they will differentiate it }
|
|
||||||
if target_info.system in systems_windows then
|
|
||||||
llvm_target_name:=llvm_target_name+'-pc';
|
|
||||||
llvm_target_name:=llvm_target_name+'-windows-msvc19'
|
|
||||||
end
|
|
||||||
else if target_info.system in systems_freebsd then
|
|
||||||
llvm_target_name:=llvm_target_name+'-freebsd'
|
|
||||||
else if target_info.system in systems_openbsd then
|
|
||||||
llvm_target_name:=llvm_target_name+'-openbsd'
|
|
||||||
else if target_info.system in systems_netbsd then
|
|
||||||
llvm_target_name:=llvm_target_name+'-netbsd'
|
|
||||||
else if target_info.system in systems_aix then
|
|
||||||
llvm_target_name:=llvm_target_name+'-ibm-aix'
|
|
||||||
else if target_info.system in [system_i386_haiku] then
|
|
||||||
llvm_target_name:=llvm_target_name+'-haiku'
|
|
||||||
else if target_info.system in systems_embedded then
|
|
||||||
llvm_target_name:=llvm_target_name+'-none'
|
|
||||||
else
|
|
||||||
llvm_target_name:=llvm_target_name+'-unknown';
|
|
||||||
|
|
||||||
{ environment/ABI }
|
|
||||||
if target_info.system in systems_android then
|
|
||||||
llvm_target_name:=llvm_target_name+'-android';
|
|
||||||
{$if defined(FPC_ARMHF)}
|
|
||||||
llvm_target_name:=llvm_target_name+'-gnueabihf';
|
|
||||||
{$elseif defined(FPC_ARMEL)}
|
|
||||||
if target_info.system in systems_embedded then
|
|
||||||
llvm_target_name:=llvm_target_name+'-eabi'
|
|
||||||
else if target_info.system=system_arm_android then
|
|
||||||
{ handled above already
|
|
||||||
llvm_target_name:=llvm_target_name+'-android' }
|
|
||||||
else
|
|
||||||
llvm_target_name:=llvm_target_name+'-gnueabi';
|
|
||||||
{$else}
|
|
||||||
if target_info.system in systems_linux then
|
|
||||||
llvm_target_name:=llvm_target_name+'-gnu';
|
|
||||||
{$endif}
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
function llvm_callingconvention_name(c: tproccalloption): ansistring;
|
function llvm_callingconvention_name(c: tproccalloption): ansistring;
|
||||||
begin
|
begin
|
||||||
// TODO (unsupported by LLVM at this time):
|
// TODO (unsupported by LLVM at this time):
|
||||||
|
45
compiler/m68k/tripletcpu.pas
Normal file
45
compiler/m68k/tripletcpu.pas
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
{
|
||||||
|
Copyright (c) 2020 by Jonas Maebe
|
||||||
|
|
||||||
|
Construct the cpu part of the triplet
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
}
|
||||||
|
unit tripletcpu;
|
||||||
|
|
||||||
|
{$i fpcdefs.inc}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
globtype;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
globals, cpuinfo;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
begin
|
||||||
|
result:='m68k';
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
48
compiler/mips/tripletcpu.pas
Normal file
48
compiler/mips/tripletcpu.pas
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
Copyright (c) 2020 by Jonas Maebe
|
||||||
|
|
||||||
|
Construct the cpu part of the triplet
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
}
|
||||||
|
unit tripletcpu;
|
||||||
|
|
||||||
|
{$i fpcdefs.inc}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
globtype;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
globals, systems, cpuinfo;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
begin
|
||||||
|
if target_info.endian=endian_big then
|
||||||
|
result:='mips'
|
||||||
|
else
|
||||||
|
result:='mipsel'
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
@ -4171,7 +4171,7 @@ begin
|
|||||||
{ default to clang }
|
{ default to clang }
|
||||||
if (option.paratargetasm=as_none) then
|
if (option.paratargetasm=as_none) then
|
||||||
begin
|
begin
|
||||||
option.paratargetasm:=as_llvm_clang;
|
option.paratargetasm:=as_clang_llvm;
|
||||||
end;
|
end;
|
||||||
{$endif llvm}
|
{$endif llvm}
|
||||||
{ maybe override assembler }
|
{ maybe override assembler }
|
||||||
@ -4219,7 +4219,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
Message(option_switch_bin_to_src_assembler);
|
Message(option_switch_bin_to_src_assembler);
|
||||||
{$ifdef llvm}
|
{$ifdef llvm}
|
||||||
set_target_asm(as_llvm_clang);
|
set_target_asm(as_clang_llvm);
|
||||||
{$else}
|
{$else}
|
||||||
set_target_asm(target_info.assemextern);
|
set_target_asm(target_info.assemextern);
|
||||||
{$endif}
|
{$endif}
|
||||||
|
45
compiler/powerpc/tripletcpu.pas
Normal file
45
compiler/powerpc/tripletcpu.pas
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
{
|
||||||
|
Copyright (c) 2020 by Jonas Maebe
|
||||||
|
|
||||||
|
Construct the cpu part of the triplet
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
}
|
||||||
|
unit tripletcpu;
|
||||||
|
|
||||||
|
{$i fpcdefs.inc}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
globtype;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
globals, cpuinfo;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
begin
|
||||||
|
result:='ppc32';
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
48
compiler/powerpc64/tripletcpu.pas
Normal file
48
compiler/powerpc64/tripletcpu.pas
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
Copyright (c) 2020 by Jonas Maebe
|
||||||
|
|
||||||
|
Construct the cpu part of the triplet
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
}
|
||||||
|
unit tripletcpu;
|
||||||
|
|
||||||
|
{$i fpcdefs.inc}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
globtype;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
globals, systems, cpuinfo;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
begin
|
||||||
|
if target_info.endian=endian_little then
|
||||||
|
result:='ppc64le'
|
||||||
|
else
|
||||||
|
result:='ppc64'
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
@ -734,12 +734,12 @@ unit agppcgas;
|
|||||||
|
|
||||||
as_ppc_clang_darwin_info : tasminfo =
|
as_ppc_clang_darwin_info : tasminfo =
|
||||||
(
|
(
|
||||||
id : as_clang;
|
id : as_clang_asdarwin;
|
||||||
idtxt : 'CLANG';
|
idtxt : 'CLANG';
|
||||||
asmbin : 'clang';
|
asmbin : 'clang';
|
||||||
asmcmd : '-c -o $OBJ $EXTRAOPT -arch $ARCH $DARWINVERSION -x assembler $ASM';
|
asmcmd : '-x assembler -c -target $TRIPLET -o $OBJ $EXTRAOPT -x assembler $ASM';
|
||||||
supported_targets : [system_powerpc_macosclassic, system_powerpc_darwin, system_powerpc64_darwin];
|
supported_targets : [system_powerpc_macosclassic, system_powerpc_darwin, system_powerpc64_darwin];
|
||||||
flags : [af_needar,af_smartlink_sections,af_supports_dwarf];
|
flags : [af_needar,af_smartlink_sections,af_supports_dwarf,af_llvm];
|
||||||
labelprefix : 'L';
|
labelprefix : 'L';
|
||||||
labelmaxlen : -1;
|
labelmaxlen : -1;
|
||||||
comment : '# ';
|
comment : '# ';
|
||||||
|
@ -339,7 +339,7 @@ implementation
|
|||||||
{ clang does not recognize fcmpo instruction,
|
{ clang does not recognize fcmpo instruction,
|
||||||
so we need to fall back to fcmpu, which does not
|
so we need to fall back to fcmpu, which does not
|
||||||
generate the same exeception information }
|
generate the same exeception information }
|
||||||
if target_asm.id = as_clang then
|
if target_asm.id in [as_clang_gas,as_clang_asdarwin] then
|
||||||
op:=A_FCMPU
|
op:=A_FCMPU
|
||||||
else
|
else
|
||||||
op:=A_FCMPO;
|
op:=A_FCMPO;
|
||||||
|
45
compiler/riscv32/tripletcpu.pas
Normal file
45
compiler/riscv32/tripletcpu.pas
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
{
|
||||||
|
Copyright (c) 2020 by Jonas Maebe
|
||||||
|
|
||||||
|
Construct the cpu part of the triplet
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
}
|
||||||
|
unit tripletcpu;
|
||||||
|
|
||||||
|
{$i fpcdefs.inc}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
globtype;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
globals, cpuinfo;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
begin
|
||||||
|
result:='riscv32';
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
48
compiler/riscv64/tripletcpu.pas
Normal file
48
compiler/riscv64/tripletcpu.pas
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
Copyright (c) 2020 by Jonas Maebe
|
||||||
|
|
||||||
|
Construct the cpu part of the triplet
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
}
|
||||||
|
unit tripletcpu;
|
||||||
|
|
||||||
|
{$i fpcdefs.inc}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
globtype;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
globals, cpuinfo;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
begin
|
||||||
|
if tripletstyle=triplet_llvm then
|
||||||
|
result:='sparcv9'
|
||||||
|
else
|
||||||
|
result:='sparc64'
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
48
compiler/sparc/tripletcpu.pas
Normal file
48
compiler/sparc/tripletcpu.pas
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
Copyright (c) 2020 by Jonas Maebe
|
||||||
|
|
||||||
|
Construct the cpu part of the triplet
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
}
|
||||||
|
unit tripletcpu;
|
||||||
|
|
||||||
|
{$i fpcdefs.inc}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
globtype;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
globals, systems, cpuinfo;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
begin
|
||||||
|
if target_info.endian=endian_big then
|
||||||
|
result:='sparc'
|
||||||
|
else
|
||||||
|
result:='sparcle'
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
45
compiler/sparc64/tripletcpu.pas
Normal file
45
compiler/sparc64/tripletcpu.pas
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
{
|
||||||
|
Copyright (c) 2020 by Jonas Maebe
|
||||||
|
|
||||||
|
Construct the cpu part of the triplet
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
}
|
||||||
|
unit tripletcpu;
|
||||||
|
|
||||||
|
{$i fpcdefs.inc}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
globtype;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
globals, cpuinfo;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
begin
|
||||||
|
result:='sparc64';
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
@ -248,15 +248,14 @@
|
|||||||
,as_gas_powerpc_xcoff
|
,as_gas_powerpc_xcoff
|
||||||
,as_arm_elf32
|
,as_arm_elf32
|
||||||
,as_i8086_omf
|
,as_i8086_omf
|
||||||
,as_llvm_llc
|
,as_clang_asdarwin { machine code assembler in Darwin as style assembled by clang }
|
||||||
,as_clang
|
|
||||||
,as_solaris_as
|
,as_solaris_as
|
||||||
,as_m68k_vasm
|
,as_m68k_vasm
|
||||||
,as_m68k_as_aout
|
,as_m68k_as_aout
|
||||||
,as_wasm_binaryen
|
,as_wasm_binaryen
|
||||||
,as_powerpc_gas_legacy { for systems with very old GAS versions only, which don't support eg. named sections }
|
,as_powerpc_gas_legacy { for systems with very old GAS versions only, which don't support eg. named sections }
|
||||||
,as_llvm_clang
|
,as_clang_llvm
|
||||||
,as_clang_gas
|
,as_clang_gas { machine code assembler in gas style assembled by clang }
|
||||||
,as_z80asm
|
,as_z80asm
|
||||||
,as_sdcc_sdasz80
|
,as_sdcc_sdasz80
|
||||||
,as_z80_vasm
|
,as_z80_vasm
|
||||||
|
@ -76,6 +76,7 @@ interface
|
|||||||
,af_no_debug
|
,af_no_debug
|
||||||
,af_stabs_use_function_absolute_addresses
|
,af_stabs_use_function_absolute_addresses
|
||||||
,af_no_stabs
|
,af_no_stabs
|
||||||
|
{ assembler is part of the LLVM toolchain }
|
||||||
,af_llvm
|
,af_llvm
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -285,11 +286,12 @@ interface
|
|||||||
system_i8086_win16];
|
system_i8086_win16];
|
||||||
|
|
||||||
{ all darwin systems }
|
{ all darwin systems }
|
||||||
systems_darwin = [system_powerpc_darwin,system_i386_darwin,
|
systems_ios = [system_arm_ios,system_aarch64_ios];
|
||||||
|
systems_iphonesym = [system_i386_iphonesim,system_x86_64_iphonesim];
|
||||||
|
systems_macosx = [system_powerpc_darwin,system_i386_darwin,
|
||||||
system_powerpc64_darwin,system_x86_64_darwin,
|
system_powerpc64_darwin,system_x86_64_darwin,
|
||||||
system_arm_ios,system_i386_iphonesim,
|
|
||||||
system_aarch64_ios,system_x86_64_iphonesim,
|
|
||||||
system_aarch64_darwin];
|
system_aarch64_darwin];
|
||||||
|
systems_darwin = systems_ios + systems_iphonesym + systems_macosx;
|
||||||
|
|
||||||
{all solaris systems }
|
{all solaris systems }
|
||||||
systems_solaris = [system_sparc_solaris, system_i386_solaris,
|
systems_solaris = [system_sparc_solaris, system_i386_solaris,
|
||||||
|
@ -152,8 +152,8 @@ const
|
|||||||
Cprefix : '_';
|
Cprefix : '_';
|
||||||
newline : #10;
|
newline : #10;
|
||||||
dirsep : '/';
|
dirsep : '/';
|
||||||
assem : as_clang;
|
assem : as_clang_asdarwin;
|
||||||
assemextern : as_clang;
|
assemextern : as_clang_asdarwin;
|
||||||
link : ld_none;
|
link : ld_none;
|
||||||
linkextern : ld_darwin;
|
linkextern : ld_darwin;
|
||||||
ar : ar_gnu_ar;
|
ar : ar_gnu_ar;
|
||||||
@ -221,8 +221,8 @@ const
|
|||||||
Cprefix : '_';
|
Cprefix : '_';
|
||||||
newline : #10;
|
newline : #10;
|
||||||
dirsep : '/';
|
dirsep : '/';
|
||||||
assem : as_clang;
|
assem : as_clang_asdarwin;
|
||||||
assemextern : as_clang;
|
assemextern : as_clang_asdarwin;
|
||||||
link : ld_none;
|
link : ld_none;
|
||||||
linkextern : ld_darwin;
|
linkextern : ld_darwin;
|
||||||
ar : ar_gnu_ar;
|
ar : ar_gnu_ar;
|
||||||
@ -359,8 +359,8 @@ const
|
|||||||
Cprefix : '_';
|
Cprefix : '_';
|
||||||
newline : #10;
|
newline : #10;
|
||||||
dirsep : '/';
|
dirsep : '/';
|
||||||
assem : as_clang;
|
assem : as_clang_asdarwin;
|
||||||
assemextern : as_clang;
|
assemextern : as_clang_asdarwin;
|
||||||
link : ld_none;
|
link : ld_none;
|
||||||
linkextern : ld_darwin;
|
linkextern : ld_darwin;
|
||||||
ar : ar_gnu_ar;
|
ar : ar_gnu_ar;
|
||||||
@ -427,8 +427,8 @@ const
|
|||||||
Cprefix : '_';
|
Cprefix : '_';
|
||||||
newline : #10;
|
newline : #10;
|
||||||
dirsep : '/';
|
dirsep : '/';
|
||||||
assem : as_clang;
|
assem : as_clang_asdarwin;
|
||||||
assemextern : as_clang;
|
assemextern : as_clang_asdarwin;
|
||||||
link : ld_none;
|
link : ld_none;
|
||||||
linkextern : ld_darwin;
|
linkextern : ld_darwin;
|
||||||
ar : ar_gnu_ar;
|
ar : ar_gnu_ar;
|
||||||
@ -495,8 +495,8 @@ const
|
|||||||
Cprefix : '_';
|
Cprefix : '_';
|
||||||
newline : #10;
|
newline : #10;
|
||||||
dirsep : '/';
|
dirsep : '/';
|
||||||
assem : as_clang;
|
assem : as_clang_asdarwin;
|
||||||
assemextern : as_clang;
|
assemextern : as_clang_asdarwin;
|
||||||
link : ld_none;
|
link : ld_none;
|
||||||
linkextern : ld_darwin;
|
linkextern : ld_darwin;
|
||||||
ar : ar_gnu_ar;
|
ar : ar_gnu_ar;
|
||||||
@ -564,8 +564,8 @@ const
|
|||||||
Cprefix : '_';
|
Cprefix : '_';
|
||||||
newline : #10;
|
newline : #10;
|
||||||
dirsep : '/';
|
dirsep : '/';
|
||||||
assem : as_clang;
|
assem : as_clang_asdarwin;
|
||||||
assemextern : as_clang;
|
assemextern : as_clang_asdarwin;
|
||||||
link : ld_none;
|
link : ld_none;
|
||||||
linkextern : ld_darwin;
|
linkextern : ld_darwin;
|
||||||
ar : ar_gnu_ar;
|
ar : ar_gnu_ar;
|
||||||
@ -604,7 +604,8 @@ const
|
|||||||
name : 'Darwin for AArch64';
|
name : 'Darwin for AArch64';
|
||||||
shortname : 'Darwin';
|
shortname : 'Darwin';
|
||||||
flags : [tf_p_ext_support,tf_requires_proper_alignment,tf_files_case_sensitive,tf_smartlink_sections,tf_dwarf_relative_addresses,
|
flags : [tf_p_ext_support,tf_requires_proper_alignment,tf_files_case_sensitive,tf_smartlink_sections,tf_dwarf_relative_addresses,
|
||||||
tf_dwarf_only_local_labels,tf_pic_default,tf_has_winlike_resources,tf_supports_symbolorderfile,tf_supports_hidden_symbols];
|
tf_dwarf_only_local_labels,tf_pic_default,tf_has_winlike_resources,tf_supports_symbolorderfile,tf_supports_hidden_symbols
|
||||||
|
{$ifdef llvm},tf_use_psabieh{$endif}];
|
||||||
cpu : cpu_aarch64;
|
cpu : cpu_aarch64;
|
||||||
unit_env : 'BSDUNITS';
|
unit_env : 'BSDUNITS';
|
||||||
extradefines : 'UNIX;BSD;HASUNIX';
|
extradefines : 'UNIX;BSD;HASUNIX';
|
||||||
@ -631,8 +632,8 @@ const
|
|||||||
Cprefix : '_';
|
Cprefix : '_';
|
||||||
newline : #10;
|
newline : #10;
|
||||||
dirsep : '/';
|
dirsep : '/';
|
||||||
assem : as_clang;
|
assem : as_clang_asdarwin;
|
||||||
assemextern : as_clang;
|
assemextern : as_clang_asdarwin;
|
||||||
link : ld_none;
|
link : ld_none;
|
||||||
linkextern : ld_darwin;
|
linkextern : ld_darwin;
|
||||||
ar : ar_gnu_ar;
|
ar : ar_gnu_ar;
|
||||||
|
101
compiler/triplet.pas
Normal file
101
compiler/triplet.pas
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
{
|
||||||
|
Copyright (c) 2007-2008, 2013, 2019-2020 by Jonas Maebe
|
||||||
|
|
||||||
|
This unit handles constructing target triples
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
}
|
||||||
|
unit triplet;
|
||||||
|
|
||||||
|
{$i fpcdefs.inc}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
globtype;
|
||||||
|
|
||||||
|
function targettriplet(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
globals,systems,
|
||||||
|
cpuinfo,tripletcpu;
|
||||||
|
|
||||||
|
function targettriplet(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
begin
|
||||||
|
{ architecture }
|
||||||
|
result:=tripletcpustr(tripletstyle);
|
||||||
|
{ vendor and/or OS }
|
||||||
|
if target_info.system in systems_darwin then
|
||||||
|
begin
|
||||||
|
result:=result+'-apple';
|
||||||
|
if target_info.system in systems_macosx then
|
||||||
|
result:=result+'-macosx'+MacOSXVersionMin
|
||||||
|
else
|
||||||
|
result:=result+'-ios'+iPhoneOSVersionMin;
|
||||||
|
end
|
||||||
|
else if target_info.system in (systems_linux+systems_android) then
|
||||||
|
result:=result+'-unknown-linux'
|
||||||
|
else if target_info.system in systems_all_windows then
|
||||||
|
begin
|
||||||
|
{ WinCE isn't supported (yet) by llvm, but if/when added this is
|
||||||
|
presumably how they will differentiate it }
|
||||||
|
if target_info.system in systems_windows then
|
||||||
|
result:=result+'-pc';
|
||||||
|
result:=result+'-windows-msvc19'
|
||||||
|
end
|
||||||
|
else if target_info.system in systems_freebsd then
|
||||||
|
result:=result+'-unknown-freebsd'
|
||||||
|
else if target_info.system in systems_openbsd then
|
||||||
|
result:=result+'-unknown-openbsd'
|
||||||
|
else if target_info.system in systems_netbsd then
|
||||||
|
result:=result+'-unknown-netbsd'
|
||||||
|
else if target_info.system in systems_solaris then
|
||||||
|
result:=result+'-sun-solaris2'
|
||||||
|
else if target_info.system in systems_aix then
|
||||||
|
result:=result+'-ibm-aix53'
|
||||||
|
else if target_info.system in [system_i386_haiku] then
|
||||||
|
result:=result+'-unknown-haiku'
|
||||||
|
else if target_info.system in systems_embedded then
|
||||||
|
result:=result+'-none'
|
||||||
|
else
|
||||||
|
result:=result+'-unknown';
|
||||||
|
|
||||||
|
{ environment/ABI }
|
||||||
|
if target_info.system in systems_android then
|
||||||
|
result:=result+'-android'
|
||||||
|
else
|
||||||
|
{$ifdef arm}
|
||||||
|
if target_info.abi=abi_eabihf then
|
||||||
|
result:=result+'-gnueabihf'
|
||||||
|
else if target_info.system in systems_embedded then
|
||||||
|
result:=result+'-eabi'
|
||||||
|
else if target_info.abi=abi_eabi then
|
||||||
|
result:=result+'-gnueabi'
|
||||||
|
else
|
||||||
|
{$endif}
|
||||||
|
if target_info.system in systems_embedded then
|
||||||
|
result:=result+'-elf'
|
||||||
|
else if target_info.system in systems_linux then
|
||||||
|
result:=result+'-gnu';
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
@ -507,12 +507,12 @@ interface
|
|||||||
|
|
||||||
as_x86_64_clang_darwin_info : tasminfo =
|
as_x86_64_clang_darwin_info : tasminfo =
|
||||||
(
|
(
|
||||||
id : as_clang;
|
id : as_clang_asdarwin;
|
||||||
idtxt : 'CLANG';
|
idtxt : 'CLANG';
|
||||||
asmbin : 'clang';
|
asmbin : 'clang';
|
||||||
asmcmd : '-c -o $OBJ $EXTRAOPT -arch x86_64 $DARWINVERSION -x assembler $ASM';
|
asmcmd : '-x assembler -c -target $TRIPLET -o $OBJ $EXTRAOPT -x assembler $ASM';
|
||||||
supported_targets : [system_x86_64_darwin,system_x86_64_iphonesim];
|
supported_targets : [system_x86_64_darwin,system_x86_64_iphonesim];
|
||||||
flags : [af_needar,af_smartlink_sections,af_supports_dwarf,af_no_stabs];
|
flags : [af_needar,af_smartlink_sections,af_supports_dwarf,af_no_stabs,af_llvm];
|
||||||
labelprefix : 'L';
|
labelprefix : 'L';
|
||||||
labelmaxlen : -1;
|
labelmaxlen : -1;
|
||||||
comment : '# ';
|
comment : '# ';
|
||||||
@ -586,12 +586,12 @@ interface
|
|||||||
|
|
||||||
as_i386_clang_darwin_info : tasminfo =
|
as_i386_clang_darwin_info : tasminfo =
|
||||||
(
|
(
|
||||||
id : as_clang;
|
id : as_clang_asdarwin;
|
||||||
idtxt : 'CLANG';
|
idtxt : 'CLANG';
|
||||||
asmbin : 'clang';
|
asmbin : 'clang';
|
||||||
asmcmd : '-c -o $OBJ $EXTRAOPT -arch i386 $DARWINVERSION -x assembler $ASM';
|
asmcmd : '-x assembler -c -target $TRIPLET -o $OBJ $EXTRAOPT -x assembler $ASM';
|
||||||
supported_targets : [system_i386_darwin,system_i386_iphonesim];
|
supported_targets : [system_i386_darwin,system_i386_iphonesim];
|
||||||
flags : [af_needar,af_smartlink_sections,af_supports_dwarf,af_no_stabs];
|
flags : [af_needar,af_smartlink_sections,af_supports_dwarf,af_no_stabs,af_llvm];
|
||||||
labelprefix : 'L';
|
labelprefix : 'L';
|
||||||
labelmaxlen : -1;
|
labelmaxlen : -1;
|
||||||
comment : '# ';
|
comment : '# ';
|
||||||
|
45
compiler/x86_64/tripletcpu.pas
Normal file
45
compiler/x86_64/tripletcpu.pas
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
{
|
||||||
|
Copyright (c) 2020 by Jonas Maebe
|
||||||
|
|
||||||
|
Construct the cpu part of the triplet
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
}
|
||||||
|
unit tripletcpu;
|
||||||
|
|
||||||
|
{$i fpcdefs.inc}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
globtype;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
globals, cpuinfo;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
begin
|
||||||
|
result:='x86_64';
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
45
compiler/xtensa/tripletcpu.pas
Normal file
45
compiler/xtensa/tripletcpu.pas
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
{
|
||||||
|
Copyright (c) 2020 by Jonas Maebe
|
||||||
|
|
||||||
|
Construct the cpu part of the triplet
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
}
|
||||||
|
unit tripletcpu;
|
||||||
|
|
||||||
|
{$i fpcdefs.inc}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
globtype;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
globals, cpuinfo;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
begin
|
||||||
|
result:='xtensa';
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
45
compiler/z80/tripletcpu.pas
Normal file
45
compiler/z80/tripletcpu.pas
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
{
|
||||||
|
Copyright (c) 2020 by Jonas Maebe
|
||||||
|
|
||||||
|
Construct the cpu part of the triplet
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
}
|
||||||
|
unit tripletcpu;
|
||||||
|
|
||||||
|
{$i fpcdefs.inc}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
globtype;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
globals, cpuinfo;
|
||||||
|
|
||||||
|
function tripletcpustr(tripletstyle: ttripletstyle): ansistring;
|
||||||
|
begin
|
||||||
|
result:='z80';
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user