summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornickysn <nickysn@3ad0048d-3df7-0310-abae-a5850022a9f2>2021-03-13 21:47:24 +0000
committernickysn <nickysn@3ad0048d-3df7-0310-abae-a5850022a9f2>2021-03-13 21:47:24 +0000
commitaed7424e21332198b9d11fa3ce1071a796a9e187 (patch)
treeefd91efb76959c74f5f9a55b36118a17cb8a0213
parent62c237e276fb82d4b6f2ea98b9c0014279cda9b7 (diff)
parentf4b984d2356cc47030adc7378858c428a399a589 (diff)
downloadfpc-aed7424e21332198b9d11fa3ce1071a796a9e187.tar.gz
* synchronized with trunk
git-svn-id: https://svn.freepascal.org/svn/fpc/branches/wasm@48949 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r--Makefile10
-rw-r--r--compiler/Makefile12
-rw-r--r--compiler/cfidwarf.pas7
-rw-r--r--compiler/cgbase.pas4
-rw-r--r--compiler/options.pas127
-rw-r--r--compiler/riscv/aasmcpu.pas9
-rw-r--r--compiler/riscv/agrvgas.pas11
-rw-r--r--compiler/riscv/cgrv.pas64
-rw-r--r--compiler/riscv64/cpubase.pas2
-rw-r--r--compiler/riscv64/itcpugas.pas2
-rw-r--r--compiler/systems/i_linux.pas8
-rw-r--r--compiler/systems/t_linux.pas16
-rw-r--r--compiler/utils/Makefile8
-rw-r--r--installer/Makefile8
-rw-r--r--packages/Makefile8
-rw-r--r--packages/a52/Makefile8
-rw-r--r--packages/ami-extra/Makefile8
-rw-r--r--packages/amunits/Makefile8
-rw-r--r--packages/amunits/src/otherlibs/ahi_sub.pas5
-rw-r--r--packages/amunits/src/otherlibs/amarquee.pas4
-rw-r--r--packages/amunits/src/otherlibs/cybergraphics.pas8
-rw-r--r--packages/amunits/src/useamigasmartlink.inc40
-rw-r--r--packages/amunits/src/useautoopenlib.inc87
-rw-r--r--packages/amunits/src/utilunits/amigautils.pas5
-rw-r--r--packages/amunits/src/utilunits/consoleio.pas5
-rw-r--r--packages/amunits/src/utilunits/doublebuffer.pas5
-rw-r--r--packages/amunits/src/utilunits/easyasl.pas5
-rw-r--r--packages/amunits/src/utilunits/hisoft.pas5
-rw-r--r--packages/amunits/src/utilunits/linklist.pas4
-rw-r--r--packages/amunits/src/utilunits/pastoc.pas9
-rw-r--r--packages/amunits/src/utilunits/timerutils.pas5
-rw-r--r--packages/amunits/src/utilunits/vartags.pas4
-rw-r--r--packages/amunits/src/utilunits/wbargs.pas5
-rw-r--r--packages/arosunits/Makefile8
-rw-r--r--packages/arosunits/src/agraphics.pas22
-rw-r--r--packages/arosunits/src/layers.pas163
-rw-r--r--packages/aspell/Makefile8
-rw-r--r--packages/bfd/Makefile8
-rw-r--r--packages/bzip2/Makefile8
-rw-r--r--packages/cairo/Makefile8
-rw-r--r--packages/cdrom/Makefile8
-rw-r--r--packages/chm/Makefile8
-rw-r--r--packages/cocoaint/Makefile8
-rw-r--r--packages/dblib/Makefile8
-rw-r--r--packages/dbus/Makefile8
-rw-r--r--packages/dts/Makefile8
-rw-r--r--packages/fastcgi/Makefile8
-rw-r--r--packages/fcl-async/Makefile8
-rw-r--r--packages/fcl-base/Makefile8
-rw-r--r--packages/fcl-db/Makefile8
-rw-r--r--packages/fcl-db/src/sdf/sdfdata.pp31
-rw-r--r--packages/fcl-extra/Makefile8
-rw-r--r--packages/fcl-fpcunit/Makefile8
-rw-r--r--packages/fcl-image/Makefile8
-rw-r--r--packages/fcl-js/Makefile8
-rw-r--r--packages/fcl-json/Makefile8
-rw-r--r--packages/fcl-json/src/jsonconf.pp2
-rw-r--r--packages/fcl-json/src/jsonscanner.pp18
-rw-r--r--packages/fcl-net/Makefile8
-rw-r--r--packages/fcl-passrc/Makefile8
-rw-r--r--packages/fcl-passrc/src/pparser.pp8
-rw-r--r--packages/fcl-pdf/Makefile8
-rw-r--r--packages/fcl-process/Makefile8
-rw-r--r--packages/fcl-registry/Makefile8
-rw-r--r--packages/fcl-report/Makefile8
-rw-r--r--packages/fcl-res/Makefile8
-rw-r--r--packages/fcl-sdo/Makefile8
-rw-r--r--packages/fcl-sound/Makefile8
-rw-r--r--packages/fcl-stl/Makefile8
-rw-r--r--packages/fcl-web/Makefile8
-rw-r--r--packages/fcl-xml/Makefile8
-rw-r--r--packages/fftw/Makefile8
-rw-r--r--packages/fpgtk/Makefile8
-rw-r--r--packages/fpindexer/Makefile8
-rw-r--r--packages/fpmkunit/Makefile8
-rw-r--r--packages/fppkg/Makefile8
-rw-r--r--packages/fuse/Makefile8
-rw-r--r--packages/fv/Makefile8
-rw-r--r--packages/gdbint/Makefile8
-rw-r--r--packages/gdbm/Makefile8
-rw-r--r--packages/ggi/Makefile8
-rw-r--r--packages/gmp/Makefile8
-rw-r--r--packages/gnome1/Makefile8
-rw-r--r--packages/gnutls/Makefile8
-rw-r--r--packages/googleapi/Makefile8
-rw-r--r--packages/graph/Makefile8
-rw-r--r--packages/gtk1/Makefile8
-rw-r--r--packages/gtk2/Makefile8
-rw-r--r--packages/hash/Makefile8
-rw-r--r--packages/hermes/Makefile8
-rw-r--r--packages/httpd13/Makefile8
-rw-r--r--packages/httpd20/Makefile8
-rw-r--r--packages/httpd22/Makefile8
-rw-r--r--packages/httpd24/Makefile8
-rw-r--r--packages/ibase/Makefile8
-rw-r--r--packages/iconvenc/Makefile8
-rw-r--r--packages/ide/Makefile8
-rw-r--r--packages/imagemagick/Makefile8
-rw-r--r--packages/imlib/Makefile8
-rw-r--r--packages/iosxlocale/Makefile8
-rw-r--r--packages/jni/Makefile8
-rw-r--r--packages/ldap/Makefile8
-rw-r--r--packages/libc/Makefile8
-rw-r--r--packages/libcups/Makefile8
-rw-r--r--packages/libcurl/Makefile8
-rw-r--r--packages/libenet/Makefile8
-rw-r--r--packages/libffi/Makefile8
-rw-r--r--packages/libfontconfig/Makefile8
-rw-r--r--packages/libgbafpc/Makefile8
-rw-r--r--packages/libgc/Makefile8
-rw-r--r--packages/libgd/Makefile8
-rw-r--r--packages/libmagic/Makefile8
-rw-r--r--packages/libmicrohttpd/Makefile8
-rw-r--r--packages/libndsfpc/Makefile8
-rw-r--r--packages/libogcfpc/Makefile8
-rw-r--r--packages/libpng/Makefile8
-rw-r--r--packages/librsvg/Makefile8
-rw-r--r--packages/libsee/Makefile8
-rw-r--r--packages/libtar/Makefile8
-rw-r--r--packages/libusb/Makefile8
-rw-r--r--packages/libvlc/Makefile8
-rw-r--r--packages/libxml/Makefile8
-rw-r--r--packages/lua/Makefile8
-rw-r--r--packages/mad/Makefile8
-rw-r--r--packages/matroska/Makefile8
-rw-r--r--packages/modplug/Makefile8
-rw-r--r--packages/morphunits/Makefile8
-rw-r--r--packages/mysql/Makefile8
-rw-r--r--packages/ncurses/Makefile8
-rw-r--r--packages/newt/Makefile8
-rw-r--r--packages/numlib/Makefile8
-rw-r--r--packages/nvapi/Makefile8
-rw-r--r--packages/objcrtl/Makefile8
-rw-r--r--packages/odata/Makefile8
-rw-r--r--packages/odbc/Makefile8
-rw-r--r--packages/oggvorbis/Makefile8
-rw-r--r--packages/openal/Makefile8
-rw-r--r--packages/opencl/Makefile8
-rw-r--r--packages/opengl/Makefile8
-rw-r--r--packages/opengles/Makefile8
-rw-r--r--packages/openssl/Makefile8
-rw-r--r--packages/oracle/Makefile8
-rw-r--r--packages/os2units/Makefile8
-rw-r--r--packages/os4units/Makefile8
-rw-r--r--packages/os4units/src/cybergraphics.pas18
-rw-r--r--packages/palmunits/Makefile8
-rw-r--r--packages/pasjpeg/Makefile8
-rw-r--r--packages/pastojs/Makefile8
-rw-r--r--packages/pastojs/src/fppas2js.pp70
-rw-r--r--packages/pastojs/src/pas2jsfiler.pp5
-rw-r--r--packages/paszlib/Makefile8
-rw-r--r--packages/pcap/Makefile8
-rw-r--r--packages/postgres/Makefile8
-rw-r--r--packages/proj4/Makefile8
-rw-r--r--packages/ptc/Makefile8
-rw-r--r--packages/pthreads/Makefile8
-rw-r--r--packages/pxlib/Makefile8
-rw-r--r--packages/qlunits/Makefile8
-rw-r--r--packages/regexpr/Makefile8
-rw-r--r--packages/rexx/Makefile8
-rw-r--r--packages/rtl-console/Makefile8
-rw-r--r--packages/rtl-extra/Makefile8
-rw-r--r--packages/rtl-generics/Makefile8
-rw-r--r--packages/rtl-objpas/Makefile8
-rw-r--r--packages/rtl-unicode/Makefile8
-rw-r--r--packages/sdl/Makefile8
-rw-r--r--packages/sndfile/Makefile8
-rw-r--r--packages/sqlite/Makefile8
-rw-r--r--packages/svgalib/Makefile8
-rw-r--r--packages/symbolic/Makefile8
-rw-r--r--packages/syslog/Makefile8
-rw-r--r--packages/tcl/Makefile8
-rw-r--r--packages/tosunits/Makefile8
-rw-r--r--packages/tplylib/Makefile8
-rw-r--r--packages/univint/Makefile8
-rw-r--r--packages/unixutil/Makefile8
-rw-r--r--packages/unzip/Makefile8
-rw-r--r--packages/users/Makefile8
-rw-r--r--packages/utmp/Makefile8
-rw-r--r--packages/uuid/Makefile8
-rw-r--r--packages/vcl-compat/Makefile8
-rw-r--r--packages/webidl/Makefile8
-rw-r--r--packages/winceunits/Makefile8
-rw-r--r--packages/winunits-base/Makefile8
-rw-r--r--packages/winunits-jedi/Makefile8
-rw-r--r--packages/x11/Makefile8
-rw-r--r--packages/xforms/Makefile8
-rw-r--r--packages/zlib/Makefile8
-rw-r--r--packages/zorba/Makefile8
-rw-r--r--rtl/Makefile10
-rw-r--r--rtl/aix/Makefile8
-rw-r--r--rtl/amiga/Makefile8
-rw-r--r--rtl/android/Makefile10
-rw-r--r--rtl/android/jvm/Makefile8
-rw-r--r--rtl/aros/Makefile8
-rw-r--r--rtl/atari/Makefile8
-rw-r--r--rtl/beos/Makefile8
-rw-r--r--rtl/darwin/Makefile8
-rw-r--r--rtl/dragonfly/Makefile8
-rw-r--r--rtl/embedded/Makefile8
-rw-r--r--rtl/emx/Makefile8
-rw-r--r--rtl/freebsd/Makefile8
-rw-r--r--rtl/freertos/Makefile8
-rw-r--r--rtl/gba/Makefile8
-rw-r--r--rtl/go32v2/Makefile8
-rw-r--r--rtl/haiku/Makefile8
-rw-r--r--rtl/java/Makefile8
-rw-r--r--rtl/linux/Makefile12
-rw-r--r--rtl/linux/Makefile.fpc2
-rw-r--r--rtl/linux/riscv64/si_c.inc8
-rw-r--r--rtl/linux/riscv64/si_g.inc106
-rw-r--r--rtl/macos/Makefile8
-rw-r--r--rtl/morphos/Makefile8
-rw-r--r--rtl/msdos/Makefile8
-rw-r--r--rtl/msxdos/Makefile8
-rw-r--r--rtl/nativent/Makefile8
-rw-r--r--rtl/nds/Makefile8
-rw-r--r--rtl/netbsd/Makefile8
-rw-r--r--rtl/netware/Makefile8
-rw-r--r--rtl/netwlibc/Makefile8
-rw-r--r--rtl/openbsd/Makefile8
-rw-r--r--rtl/os2/Makefile8
-rw-r--r--rtl/palmos/Makefile8
-rw-r--r--rtl/solaris/Makefile8
-rw-r--r--rtl/symbian/Makefile8
-rw-r--r--rtl/unix/cthreads.pp28
-rw-r--r--rtl/watcom/Makefile8
-rw-r--r--rtl/wii/Makefile8
-rw-r--r--rtl/win16/Makefile8
-rw-r--r--rtl/win32/Makefile8
-rw-r--r--rtl/win64/Makefile8
-rw-r--r--rtl/wince/Makefile8
-rw-r--r--rtl/zxspectrum/Makefile8
-rw-r--r--tests/Makefile8
-rw-r--r--tests/test/cg/obj/linux/riscv64/cpptcl1.obin5960 -> 6064 bytes
-rw-r--r--tests/test/cg/obj/linux/riscv64/cpptcl2.obin1416 -> 1520 bytes
-rw-r--r--tests/test/cg/obj/linux/riscv64/ctest.obin11064 -> 11152 bytes
-rw-r--r--tests/test/cg/obj/linux/riscv64/tcext3.obin4008 -> 4232 bytes
-rw-r--r--tests/test/cg/obj/linux/riscv64/tcext4.obin2176 -> 2288 bytes
-rw-r--r--tests/test/cg/obj/linux/riscv64/tcext5.obin8024 -> 8264 bytes
-rw-r--r--tests/test/cg/obj/linux/riscv64/tcext6.obin9912 -> 10016 bytes
-rw-r--r--tests/tstunits/Makefile8
-rw-r--r--tests/utils/Makefile8
-rw-r--r--tests/utils/testsuite/Makefile8
-rw-r--r--tests/webtbs/tw2242.pp4
-rw-r--r--utils/Makefile8
-rw-r--r--utils/debugsvr/Makefile8
-rw-r--r--utils/dxegen/Makefile8
-rw-r--r--utils/fpcm/Makefile8
-rw-r--r--utils/fpcm/fpcmake.inc676
-rw-r--r--utils/fpcm/fpcmake.ini10
-rw-r--r--utils/fpcm/revision.inc2
-rw-r--r--utils/fpcmkcfg/Makefile8
-rw-r--r--utils/fpcres/Makefile8
-rw-r--r--utils/fpcreslipo/Makefile8
-rw-r--r--utils/fpdoc/Makefile8
-rw-r--r--utils/fpmc/Makefile8
-rw-r--r--utils/fppkg/Makefile8
-rw-r--r--utils/fprcp/Makefile8
-rw-r--r--utils/h2pas/Makefile8
-rw-r--r--utils/ihxutil/Makefile8
-rw-r--r--utils/importtl/Makefile8
-rw-r--r--utils/instantfpc/Makefile8
-rw-r--r--utils/json2pas/Makefile8
-rw-r--r--utils/mksymbian/Makefile8
-rw-r--r--utils/pas2fpm/Makefile8
-rw-r--r--utils/pas2jni/Makefile8
-rw-r--r--utils/pas2js/Makefile8
-rw-r--r--utils/pas2ut/Makefile8
-rw-r--r--utils/rmwait/Makefile8
-rw-r--r--utils/tply/Makefile8
-rw-r--r--utils/unicode/Makefile8
272 files changed, 2721 insertions, 696 deletions
diff --git a/Makefile b/Makefile
index a0121825e3..08e4f5bb6b 100644
--- a/Makefile
+++ b/Makefile
@@ -1079,10 +1079,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
@@ -1690,7 +1698,7 @@ ifdef CREATESHARED
override FPCOPT+=-Cg
endif
ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),)
-ifneq ($(findstring $(CPU_TARGET),x86_64 mips mipsel),)
+ifneq ($(findstring $(CPU_TARGET),x86_64 mips mipsel riscv64),)
override FPCOPT+=-Cg
endif
endif
diff --git a/compiler/Makefile b/compiler/Makefile
index 6c7e02ac48..beec32d92e 100644
--- a/compiler/Makefile
+++ b/compiler/Makefile
@@ -2789,10 +2789,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
@@ -5085,9 +5093,9 @@ endif
cycledep:
$(MAKE) cycle USEDEPEND=1
extcycle:
- $(MAKE) cycle OPT="$(OPT) -n -glttt -CRriot -dEXTDEBUG" ALLOW_WARNINGS=1
+ $(MAKE) cycle RTLOPT="$(RTLOPT) -n -glttt -CRriot -dEXTDEBUG" LOCALOPT="$(LOCALOPT) -n -glttt -CRriot -dEXTDEBUG" ALLOW_WARNINGS=1
extoptcycle:
- $(MAKE) cycle OPT="$(OPT) -n -glttt -CRriot -dEXTDEBUG -dDEBUG_ALL_OPT" ALLOW_WARNINGS=1
+ $(MAKE) cycle RTLOPT="$(RTLOPT) -n -glttt -CRriot -dEXTDEBUG -dDEBUG_ALL_OPT" LOCALOPT="$(LOCALOPT) -n -glttt -CRriot -dEXTDEBUG -dDEBUG_ALL_OPT" ALLOW_WARNINGS=1
cvstest:
$(MAKE) cycle 'LOCALOPT=-n -Se' 'RTLOPT=-n -Se'
ifeq ($(findstring -dFPC_SOFT_FPUX80,$(LOCALOPT)),)
diff --git a/compiler/cfidwarf.pas b/compiler/cfidwarf.pas
index ddc3a13000..fd5ff4c4dd 100644
--- a/compiler/cfidwarf.pas
+++ b/compiler/cfidwarf.pas
@@ -301,6 +301,13 @@ implementation
list.concat(tai_const.create_uleb128bit(dwarf_reg(NR_STACK_POINTER_REG)));
list.concat(tai_const.create_uleb128bit(0));
end;
+{$elseif defined(riscv)}
+ procedure TDwarfAsmCFILowLevel.generate_initial_instructions(list:TAsmList);
+ begin
+ list.concat(tai_const.create_8bit(DW_CFA_def_cfa));
+ list.concat(tai_const.create_uleb128bit(dwarf_reg(NR_STACK_POINTER_REG)));
+ list.concat(tai_const.create_uleb128bit(0));
+ end;
{$else}
{ if more cpu dependend stuff is implemented, this needs more refactoring }
procedure TDwarfAsmCFILowLevel.generate_initial_instructions(list:TAsmList);
diff --git a/compiler/cgbase.pas b/compiler/cgbase.pas
index 21c36c233b..4f55c9acf9 100644
--- a/compiler/cgbase.pas
+++ b/compiler/cgbase.pas
@@ -99,7 +99,9 @@ interface
addr_lo12,
addr_pcrel_hi20,
addr_pcrel_lo12,
- addr_pcrel
+ addr_pcrel,
+ addr_got_pcrel_hi,
+ addr_plt
{$endif RISCV}
{$IFDEF AVR}
,addr_lo8
diff --git a/compiler/options.pas b/compiler/options.pas
index b2ecee0870..022d634071 100644
--- a/compiler/options.pas
+++ b/compiler/options.pas
@@ -283,6 +283,22 @@ const
end;
end;
+ procedure ListOSTargetsXML;
+ var
+ target : tsystem;
+ begin
+ WriteLn(xmloutput,' <ostargets>');
+ for target:=low(tsystem) to high(tsystem) do
+ if assigned(targetinfos[target]) then
+ begin
+ Write(xmloutput,' <ostarget shortname="',targetinfos[target]^.shortname,'" name="',targetinfos[target]^.name,'"');
+ if tf_under_development in targetinfos[target]^.flags then
+ Write(' experimental="1"');
+ WriteLn('/>');
+ end;
+ WriteLn(xmloutput,' </ostargets>');
+ end;
+
procedure ListCPUInstructionSets (OrigString: TCmdStr);
var
cpu : tcputype;
@@ -321,6 +337,17 @@ const
end;
end;
+ procedure ListCPUInstructionSetsXML;
+ var
+ cpu : tcputype;
+ begin
+ WriteLn(xmloutput,' <cpuinstructionsets>');
+ for cpu:=low(tcputype) to high(tcputype) do
+ if CPUTypeStr [CPU] <> '' then
+ WriteLn(xmloutput,' <cpuinstructionset name="',CPUTypeStr [CPU], '"/>');
+ WriteLn(xmloutput,' </cpuinstructionsets>');
+ end;
+
procedure ListFPUInstructionSets (OrigString: TCmdStr);
var
fpu : tfputype;
@@ -359,6 +386,17 @@ const
end;
end;
+ procedure ListFPUInstructionSetsXML;
+ var
+ fpu : tfputype;
+ begin
+ WriteLn(xmloutput,' <fpuinstructionsets>');
+ for fpu:=low(tfputype) to high(tfputype) do
+ if FPUTypeStr [fpu] <> '' then
+ WriteLn(xmloutput,' <cpuinstructionset name="',FPUTypeStr [fpu], '"/>');
+ WriteLn(xmloutput,' </fpuinstructionsets>');
+ end;
+
procedure ListABITargets (OrigString: TCmdStr);
var
abi : tabi;
@@ -383,6 +421,21 @@ const
end;
end;
+ procedure ListABITargetsXML;
+ var
+ abi : tabi;
+ begin
+ WriteLn(xmloutput,' <abis>');
+ for abi:=low(abi) to high(abi) do
+ begin
+ if not abiinfo[abi].supported then
+ continue;
+ if abiinfo[abi].name<>'' then;
+ WriteLn(xmloutput,' <abi name="',abiinfo[abi].name, '"/>');
+ end;
+ WriteLn(xmloutput,' </abis>');
+ end;
+
procedure ListOptimizations (OrigString: TCmdStr);
var
opt : toptimizerswitch;
@@ -412,11 +465,11 @@ const
var
opt: toptimizerswitch;
begin
- WriteLn(xmloutput,'<optimizations>');
+ WriteLn(xmloutput,' <optimizations>');
for opt:=low(toptimizerswitch) to high(toptimizerswitch) do
if OptimizerSwitchStr[opt]<>'' then
- WriteLn(xmloutput,'<optimization name="',OptimizerSwitchStr[opt],'"/>');
- WriteLn(xmloutput,'</optimizations>');
+ WriteLn(xmloutput,' <optimization name="',OptimizerSwitchStr[opt],'"/>');
+ WriteLn(xmloutput,' </optimizations>');
end;
procedure ListWPOptimizations (OrigString: TCmdStr);
@@ -446,6 +499,17 @@ const
end;
end;
+ procedure ListWPOptimizationsXML;
+ var
+ wpopt: twpoptimizerswitch;
+ begin
+ WriteLn(xmloutput,' <wpoptimizations>');
+ for wpopt:=low(twpoptimizerswitch) to high(twpoptimizerswitch) do
+ if WPOptimizerSwitchStr[wpopt]<>'' then
+ WriteLn(xmloutput,' <wpoptimization name="',WPOptimizerSwitchStr[wpopt],'"/>');
+ WriteLn(xmloutput,' </wpoptimizations>');
+ end;
+
procedure ListAsmModes (OrigString: TCmdStr);
var
asmmode : tasmmode;
@@ -469,6 +533,17 @@ const
end;
end;
+ procedure ListAsmModesXML;
+ var
+ asmmode : tasmmode;
+ begin
+ WriteLn(xmloutput,' <asmmodes>');
+ for asmmode:=low(tasmmode) to high(tasmmode) do
+ if assigned(asmmodeinfos[asmmode]) then
+ WriteLn(xmloutput,' <asmmode name="',asmmodeinfos[asmmode]^.idtxt,'"/>');
+ WriteLn(xmloutput,' </asmmodes>');
+ end;
+
procedure ListControllerTypes (OrigString: TCmdStr);
var
controllertype : tcontrollertype;
@@ -522,11 +597,11 @@ const
{$WARN 6018 OFF} (* Unreachable code due to compile time evaluation *)
if (ControllerSupport) then
begin
- WriteLn(xmloutput,'<controllertypes>');
+ WriteLn(xmloutput,' <controllertypes>');
for controllertype:=low(tcontrollertype) to high(tcontrollertype) do
if embedded_controllers[controllertype].ControllerTypeStr<>'' then
- WriteLn(xmloutput,'<controllertype name="',embedded_controllers[controllertype].ControllerTypeStr,'"/>');
- WriteLn(xmloutput,'</controllertypes>');
+ WriteLn(xmloutput,' <controllertype name="',embedded_controllers[controllertype].ControllerTypeStr,'"/>');
+ WriteLn(xmloutput,' </controllertypes>');
end;
{$POP}
end;
@@ -569,6 +644,17 @@ const
end;
end;
+ procedure ListFeaturesXML;
+ var
+ Feature: TFeature;
+ begin
+ WriteLn(xmloutput,' <features>');
+ for Feature := Low (TFeature) to High (TFeature) do
+ if FeatureStr [Feature] <> '' then
+ WriteLn(xmloutput,' <feature name="',FeatureStr [Feature],'"/>');
+ WriteLn(xmloutput,' </features>');
+ end;
+
procedure ListModeswitches (OrigString: TCmdStr);
var
Modeswitch: TModeswitch;
@@ -607,6 +693,17 @@ const
end;
end;
+ procedure ListModeswitchesXML;
+ var
+ Modeswitch: TModeswitch;
+ begin
+ WriteLn(xmloutput,' <modeswitches>');
+ for Modeswitch:=Low(TModeswitch) to High(TModeswitch) do
+ if ModeswitchStr [Modeswitch]<>'' then
+ WriteLn(xmloutput,' <modeswitch name="',ModeswitchStr [Modeswitch],'"/>');
+ WriteLn(xmloutput,' </modeswitches>');
+ end;
+
procedure ListCodeGenerationBackend (OrigString: TCmdStr);
begin
SplitLine (OrigString, CodeGenerationBackendPlaceholder, HS3);
@@ -621,6 +718,11 @@ const
end;
end;
+ procedure ListCodeGenerationBackendXML;
+ begin
+ WriteLn(xmloutput,' <codegeneratorbackend>',cgbackend2str[cgbackend],'</codegeneratorbackend>');
+ end;
+
begin
if More = '' then
begin
@@ -662,10 +764,19 @@ begin
Rewrite(xmloutput);
WriteLn(xmloutput,'<?xml version="1.0" encoding="utf-8"?>');
WriteLn(xmloutput,'<fpcoutput>');
- WriteLn(xmloutput,'<info>');
+ WriteLn(xmloutput,' <info>');
+ ListOSTargetsXML;
+ ListCPUInstructionSetsXML;
+ ListFPUInstructionSetsXML;
+ ListABITargetsXML;
ListOptimizationsXML;
+ ListWPOptimizationsXML;
+ ListModeswitchesXML;
+ ListAsmModesXML;
ListControllerTypesXML;
- WriteLn(xmloutput,'</info>');
+ ListFeaturesXML;
+ ListCodeGenerationBackendXML;
+ WriteLn(xmloutput,' </info>');
WriteLn(xmloutput,'</fpcoutput>');
Close(xmloutput);
end
diff --git a/compiler/riscv/aasmcpu.pas b/compiler/riscv/aasmcpu.pas
index 01eb202ce7..2a5a6ce6e6 100644
--- a/compiler/riscv/aasmcpu.pas
+++ b/compiler/riscv/aasmcpu.pas
@@ -47,6 +47,7 @@ uses
constructor op_reg(op : tasmop;_op1 : tregister);
constructor op_const(op : tasmop;_op1 : aint);
+ constructor op_ref(op : tasmop;_op1 : treference);
constructor op_reg_reg(op : tasmop;_op1,_op2 : tregister);
constructor op_reg_ref(op : tasmop;_op1 : tregister;const _op2 : treference);
@@ -144,6 +145,14 @@ uses cutils, cclasses;
end;
+ constructor taicpu.op_ref(op : tasmop;_op1 : treference);
+ begin
+ inherited create(op);
+ ops:=1;
+ loadref(0,_op1);
+ end;
+
+
constructor taicpu.op_const(op : tasmop;_op1 : aint);
begin
inherited create(op);
diff --git a/compiler/riscv/agrvgas.pas b/compiler/riscv/agrvgas.pas
index a71a06aa74..6c52e84057 100644
--- a/compiler/riscv/agrvgas.pas
+++ b/compiler/riscv/agrvgas.pas
@@ -74,7 +74,8 @@ unit agrvgas;
else
begin
s :='';
- s := s+'(';
+ if not(refaddr in [addr_no,addr_pic_no_got,addr_plt]) then
+ s := s+'(';
if assigned(symbol) then
begin
if asminfo^.dollarsign<>'$' then
@@ -103,14 +104,10 @@ unit agrvgas;
s:=s+tostr(offset);
end;
- if not(refaddr in [addr_no,addr_pic_no_got]) then
+ if not(refaddr in [addr_no,addr_pic_no_got,addr_plt]) then
begin
s := s+')';
end;
-{$ifdef cpu64bitaddr}
- if (refaddr=addr_pic) then
- s := s + '@got';
-{$endif cpu64bitaddr}
if (index=NR_NO) then
begin
@@ -139,6 +136,8 @@ unit agrvgas;
addr_hi20: s:='%hi'+s;
addr_pcrel_lo12: s:='%pcrel_lo'+s;
addr_pcrel_hi20: s:='%pcrel_hi'+s;
+ addr_got_pcrel_hi: s:='%got_pcrel_hi'+s;
+ addr_plt: s:=s+'@plt';
else
;
end;
diff --git a/compiler/riscv/cgrv.pas b/compiler/riscv/cgrv.pas
index 9b5443b7cf..6921c8e88c 100644
--- a/compiler/riscv/cgrv.pas
+++ b/compiler/riscv/cgrv.pas
@@ -133,16 +133,24 @@ unit cgrv;
else
reference_reset_symbol(href,current_asmdata.WeakRefAsmSymbol(s,AT_FUNCTION),0,0,[]);
- current_asmdata.getjumplabel(l);
+ if cs_create_pic in current_settings.moduleswitches then
+ begin
+ href.refaddr:=addr_plt;
+ list.concat(taicpu.op_ref(A_CALL,href));
+ end
+ else
+ begin
+ current_asmdata.getjumplabel(l);
- a_label(list,l);
+ a_label(list,l);
- href.refaddr:=addr_pcrel_hi20;
- list.concat(taicpu.op_reg_ref(A_AUIPC,NR_RETURN_ADDRESS_REG,href));
+ href.refaddr:=addr_pcrel_hi20;
+ list.concat(taicpu.op_reg_ref(A_AUIPC,NR_RETURN_ADDRESS_REG,href));
- reference_reset_symbol(href,l,0,0,[]);
- href.refaddr:=addr_pcrel_lo12;
- list.concat(taicpu.op_reg_reg_ref(A_JALR,NR_RETURN_ADDRESS_REG,NR_RETURN_ADDRESS_REG,href));
+ reference_reset_symbol(href,l,0,0,[]);
+ href.refaddr:=addr_pcrel_lo12;
+ list.concat(taicpu.op_reg_reg_ref(A_JALR,NR_RETURN_ADDRESS_REG,NR_RETURN_ADDRESS_REG,href));
+ end;
{ not assigned while generating external wrappers }
if assigned(current_procinfo) then
@@ -721,20 +729,40 @@ unit cgrv;
if assigned(ref.symbol) then
begin
- reference_reset_symbol(href,ref.symbol,ref.offset,ref.alignment,ref.volatility);
- ref.symbol:=nil;
- ref.offset:=0;
+ if cs_create_pic in current_settings.moduleswitches then
+ begin
+ reference_reset_symbol(href,ref.symbol,0,0,[]);
+ ref.symbol:=nil;
- tmpreg:=getintregister(list,OS_INT);
+ tmpreg:=getintregister(list,OS_INT);
- current_asmdata.getaddrlabel(l);
- a_label(list,l);
+ current_asmdata.getaddrlabel(l);
+ a_label(list,l);
- href.refaddr:=addr_pcrel_hi20;
- list.concat(taicpu.op_reg_ref(A_AUIPC,tmpreg,href));
- reference_reset_symbol(href,l,0,0,ref.volatility);
- href.refaddr:=addr_pcrel_lo12;
- list.concat(taicpu.op_reg_reg_ref(A_ADDI,tmpreg,tmpreg,href));
+ href.refaddr:=addr_got_pcrel_hi;
+ list.concat(taicpu.op_reg_ref(A_AUIPC,tmpreg,href));
+ reference_reset_symbol(href,l,0,0,[]);
+ href.refaddr:=addr_pcrel_lo12;
+ href.base:=tmpreg;
+ list.concat(taicpu.op_reg_ref(A_LD,tmpreg,href));
+ end
+ else
+ begin
+ reference_reset_symbol(href,ref.symbol,ref.offset,ref.alignment,ref.volatility);
+ ref.symbol:=nil;
+ ref.offset:=0;
+
+ tmpreg:=getintregister(list,OS_INT);
+
+ current_asmdata.getaddrlabel(l);
+ a_label(list,l);
+
+ href.refaddr:=addr_pcrel_hi20;
+ list.concat(taicpu.op_reg_ref(A_AUIPC,tmpreg,href));
+ reference_reset_symbol(href,l,0,0,ref.volatility);
+ href.refaddr:=addr_pcrel_lo12;
+ list.concat(taicpu.op_reg_reg_ref(A_ADDI,tmpreg,tmpreg,href));
+ end;
if (ref.index<>NR_NO) and
(ref.base<>NR_NO) then
diff --git a/compiler/riscv64/cpubase.pas b/compiler/riscv64/cpubase.pas
index 13148d75ce..5e1d0f72d5 100644
--- a/compiler/riscv64/cpubase.pas
+++ b/compiler/riscv64/cpubase.pas
@@ -38,7 +38,7 @@ uses
type
TAsmOp=(A_None,
{ Pseudo instructions }
- A_NOP,
+ A_NOP,A_CALL,
{ normal opcodes }
A_LUI,A_AUIPC,A_JAL,A_JALR,
A_Bxx,A_LB,A_LH,A_LW,A_LBU,A_LHU,
diff --git a/compiler/riscv64/itcpugas.pas b/compiler/riscv64/itcpugas.pas
index 4fabace6e8..1cb3701d69 100644
--- a/compiler/riscv64/itcpugas.pas
+++ b/compiler/riscv64/itcpugas.pas
@@ -30,7 +30,7 @@ unit itcpugas;
const
gas_op2str: array[tasmop] of string[14] = ('<none>',
- 'nop',
+ 'nop','call',
'lui','auipc','jal','jalr',
'b','lb','lh','lw','lbu','lhu',
'sb','sh','sw',
diff --git a/compiler/systems/i_linux.pas b/compiler/systems/i_linux.pas
index a6e3e4f00b..8d43330105 100644
--- a/compiler/systems/i_linux.pas
+++ b/compiler/systems/i_linux.pas
@@ -1107,7 +1107,7 @@ unit i_linux;
system : system_riscv32_linux;
name : 'Linux for RISC-V 32';
shortname : 'Linux';
- flags : [tf_needs_symbol_size,tf_smartlink_sections,
+ flags : [tf_needs_symbol_size,tf_smartlink_sections,tf_needs_dwarf_cfi,
tf_needs_symbol_type,tf_files_case_sensitive,
tf_requires_proper_alignment,tf_has_winlike_resources,
tf_supports_hidden_symbols];
@@ -1144,7 +1144,7 @@ unit i_linux;
linkextern : ld_linux;
ar : ar_gnu_ar;
res : res_elf;
- dbg : dbg_dwarf2;
+ dbg : dbg_dwarf3;
script : script_unix;
endian : endian_little;
alignment :
@@ -1177,7 +1177,7 @@ unit i_linux;
system : system_riscv64_linux;
name : 'Linux for RISC-V 64';
shortname : 'Linux';
- flags : [tf_needs_symbol_size,tf_smartlink_sections,
+ flags : [tf_needs_symbol_size,tf_library_needs_pic,tf_smartlink_sections,tf_needs_dwarf_cfi,
tf_needs_symbol_type,tf_files_case_sensitive,
tf_requires_proper_alignment,tf_has_winlike_resources,
tf_supports_hidden_symbols
@@ -1215,7 +1215,7 @@ unit i_linux;
linkextern : ld_linux;
ar : ar_gnu_ar;
res : res_elf;
- dbg : dbg_dwarf2;
+ dbg : dbg_dwarf3;
script : script_unix;
endian : endian_little;
alignment :
diff --git a/compiler/systems/t_linux.pas b/compiler/systems/t_linux.pas
index aab48cbcae..7145003bce 100644
--- a/compiler/systems/t_linux.pas
+++ b/compiler/systems/t_linux.pas
@@ -538,7 +538,13 @@ begin
Message1(exec_w_init_file_not_found,'crti.o');
{ then the crtbegin* }
- if cs_create_pic in current_settings.moduleswitches then
+ if (cs_create_pic in current_settings.moduleswitches)
+{$ifdef RISCV}
+ { on RISC-V we need to use always the *S.o variants
+ if shared libraries are involved }
+ or (not SharedLibFiles.Empty)
+{$endif RISCV}
+ then
begin
if librarysearchpath.FindFile('crtbeginS.o',false,s) then
AddFileName(s)
@@ -649,7 +655,13 @@ begin
{ objects which must be at the end }
if linklibc and (libctype<>uclibc) then
begin
- if cs_create_pic in current_settings.moduleswitches then
+ if (cs_create_pic in current_settings.moduleswitches)
+{$ifdef RISCV}
+ { on RISC-V we need to use always the *S.o variants
+ if shared libraries are involved }
+ or linksToSharedLibFiles
+{$endif RISCV}
+ then
begin
found1:=librarysearchpath.FindFile('crtendS.o',false,s1);
if not(found1) then
diff --git a/compiler/utils/Makefile b/compiler/utils/Makefile
index 0bb7a9e1b9..d492dc6de8 100644
--- a/compiler/utils/Makefile
+++ b/compiler/utils/Makefile
@@ -1862,10 +1862,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/installer/Makefile b/installer/Makefile
index 166f511d24..78c5f26c3a 100644
--- a/installer/Makefile
+++ b/installer/Makefile
@@ -1031,10 +1031,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/Makefile b/packages/Makefile
index cbf62b2804..fac2d2042b 100644
--- a/packages/Makefile
+++ b/packages/Makefile
@@ -631,10 +631,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/a52/Makefile b/packages/a52/Makefile
index 9251e2273a..534bf0ec55 100644
--- a/packages/a52/Makefile
+++ b/packages/a52/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/ami-extra/Makefile b/packages/ami-extra/Makefile
index 0bff15dd23..30a20d6a32 100644
--- a/packages/ami-extra/Makefile
+++ b/packages/ami-extra/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/amunits/Makefile b/packages/amunits/Makefile
index 6370ddff11..701495ab16 100644
--- a/packages/amunits/Makefile
+++ b/packages/amunits/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/amunits/src/otherlibs/ahi_sub.pas b/packages/amunits/src/otherlibs/ahi_sub.pas
index 54f4a37619..de862b5702 100644
--- a/packages/amunits/src/otherlibs/ahi_sub.pas
+++ b/packages/amunits/src/otherlibs/ahi_sub.pas
@@ -30,11 +30,6 @@
}
{$PACKRECORDS 2}
-{$I useamigasmartlink.inc}
-{$ifdef use_amiga_smartlink}
- {$smartlink on}
-{$endif use_amiga_smartlink}
-
UNIT AHI_SUB;
INTERFACE
diff --git a/packages/amunits/src/otherlibs/amarquee.pas b/packages/amunits/src/otherlibs/amarquee.pas
index 77522e8664..0a938db0a9 100644
--- a/packages/amunits/src/otherlibs/amarquee.pas
+++ b/packages/amunits/src/otherlibs/amarquee.pas
@@ -37,10 +37,6 @@
}
-{$I useamigasmartlink.inc}
-{$ifdef use_amiga_smartlink}
- {$smartlink on}
-{$endif use_amiga_smartlink}
unit amarquee;
diff --git a/packages/amunits/src/otherlibs/cybergraphics.pas b/packages/amunits/src/otherlibs/cybergraphics.pas
index 4c35269e99..33dc245af8 100644
--- a/packages/amunits/src/otherlibs/cybergraphics.pas
+++ b/packages/amunits/src/otherlibs/cybergraphics.pas
@@ -218,14 +218,14 @@ const
BMB_SPECIALFMT = 7;
BMF_SPECIALFMT = 1 shl BMB_SPECIALFMT;
-FUNCTION AllocCModeListTagList(ModeListTags : pTagItem location 'a1') : pList; syscall CyberGfxBase 072;
+FUNCTION AllocCModeListTagList(ModeListTags : pTagItem location 'a1') : PCyberModeNode; syscall CyberGfxBase 072;
FUNCTION BestCModeIDTagList(BestModeIDTags : pTagItem location 'a0') : longword; syscall CyberGfxBase 060;
FUNCTION CModeRequestTagList(ModeRequest : POINTER location 'a0'; ModeRequestTags : pTagItem location 'a1') : longword; syscall CyberGfxBase 066;
PROCEDURE CVideoCtrlTagList(ViewPort : pViewPort location 'a0'; TagList : pTagItem location 'a1'); syscall CyberGfxBase 162;
PROCEDURE DoCDrawMethodTagList(Hook : pHook location 'a0'; a1arg : pRastPort location 'a1'; TagList : pTagItem location 'a2'); syscall CyberGfxBase 156;
FUNCTION ExtractColor(a0arg : pRastPort location 'a0'; BitMap : pBitMap location 'a1'; Colour : longword location 'd0'; SrcX : longword location 'd1'; SrcY : longword location 'd2'; Width : longword location 'd3'; Height : longword location 'd4') : longword; syscall CyberGfxBase 186;
FUNCTION FillPixelArray(a1arg : pRastPort location 'a1'; DestX : WORD location 'd0'; DestY : WORD location 'd1'; SizeX : WORD location 'd2'; SizeY : WORD location 'd3'; ARGB : longword location 'd4') : longword; syscall CyberGfxBase 150;
-PROCEDURE FreeCModeList(ModeList : pList location 'a0'); syscall CyberGfxBase 078;
+PROCEDURE FreeCModeList(ModeList : PCyberModeNode location 'a0'); syscall CyberGfxBase 078;
FUNCTION GetCyberIDAttr(CyberIDAttr : longword location 'd0'; CyberDisplayModeID : longword location 'd1') : longword; syscall CyberGfxBase 102;
FUNCTION GetCyberMapAttr(CyberGfxBitmap : pBitMap location 'a0'; CyberAttrTag : longword location 'd0') : longword; syscall CyberGfxBase 096;
FUNCTION InvertPixelArray(a1arg : pRastPort location 'a1'; DestX : WORD location 'd0'; DestY : WORD location 'd1'; SizeX : WORD location 'd2'; SizeY : WORD location 'd3') : longword; syscall CyberGfxBase 144;
@@ -243,7 +243,7 @@ FUNCTION WriteRGBPixel(a1arg : pRastPort location 'a1'; x : WORD location 'd0';
{
Functions and procedures with array of PtrUInt go here
}
-FUNCTION AllocCModeListTags(const ModeListTags : array of PtrUInt) : pList;
+FUNCTION AllocCModeListTags(const ModeListTags : array of PtrUInt) : PCyberModeNode;
FUNCTION BestCModeIDTags(const BestModeIDTags : array of PtrUInt) : longword;
FUNCTION CModeRequestTags(ModeRequest : POINTER; const ModeRequestTags : array of PtrUInt) : longword;
PROCEDURE CVideoCtrlTags(ViewPort : pViewPort; const TagList : array of PtrUInt);
@@ -258,7 +258,7 @@ IMPLEMENTATION
{
Functions and procedures with array of PtrUInt go here
}
-FUNCTION AllocCModeListTags(const ModeListTags : array of PtrUInt) : pList;
+FUNCTION AllocCModeListTags(const ModeListTags : array of PtrUInt) : PCyberModeNode;
begin
AllocCModeListTags := AllocCModeListTagList(@ModeListTags);
end;
diff --git a/packages/amunits/src/useamigasmartlink.inc b/packages/amunits/src/useamigasmartlink.inc
deleted file mode 100644
index 1e83bf4583..0000000000
--- a/packages/amunits/src/useamigasmartlink.inc
+++ /dev/null
@@ -1,40 +0,0 @@
-
-{ useamigasmartlink.inc }
-
-{
- This file is part of the Free Pascal run time library.
-
- A file in Amiga system run time library.
- Copyright (c) 2003 by Nils Sjoholm
- member of the Amiga RTL development team.
-
- See the file COPYING.FPC, included in this distribution,
- for details about the copyright.
-
- 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.
-
- **********************************************************************}
-
-{
- This includefile sets the define use_amiga_smartlink.
-
- This way I can be sure that all units that reads
- this includefile is compiled with smartlink.
-
- If you don't want smartlink just put a space before
- $define use_amiga_smartlink.
-
- 11 Jan 2003.
-
- nils.sjoholm@mailbox.swipnet.se
-
-}
-
-{$ifndef use_amiga_smartlink}
- {$define use_amiga_smartlink}
-{$endif}
-
-
-
diff --git a/packages/amunits/src/useautoopenlib.inc b/packages/amunits/src/useautoopenlib.inc
deleted file mode 100644
index ee82adfe3b..0000000000
--- a/packages/amunits/src/useautoopenlib.inc
+++ /dev/null
@@ -1,87 +0,0 @@
-
-{ useautoopenlib.inc }
-
-{
- This file is part of the Free Pascal run time library.
-
- A file in Amiga system run time library.
- Copyright (c) 2003 by Nils Sjoholm
- member of the Amiga RTL development team.
-
- See the file COPYING.FPC, included in this distribution,
- for details about the copyright.
-
- 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.
-
- **********************************************************************}
-
-{
- In this includefile you can set some defines on how
- to compile amiga units.
-
- use_auto_openlib.
- If you use use_auto_openlib the unit will compile
- with autoopening of the unit at startup. You don't
- have to think about open and close the library, all
- is done in the unit. One problem is that the library
- will be loaded at startup so there can be a memory-
- problem. As default I have compiled all amiga system
- units as autoopened. Exec, intuition, amigados and
- utility is all opened on startup by sysamiga.
-
-
- use_init_openlib.
- If you compile with this define you get a procedure
- in every unit as an example for asl.library you
- have "procedure InitAslLibrary;". All you have to
- do is
- InitAslLibrary in the beginning of your program.
- You don't have to close the library the unit will
- handle that.
-
- dont_use_openlib.
- This is the standard amiga way. You have to open
- the library yourself and at the end close it.
-
- When you compile a unit you will get warnings or
- info on how the defines are set.
-
- First version of this include.
- 11 Jan 2003.
-
- Added use_init_openlib and dont_use_openlib.
- 21 Jan 2003.
-
- nils.sjoholm@mailbox.swipnet.se
-
-}
-
-{
- Make sure that there is only one define set.
- Just put a space before the define to undef
-}
-
-{$define use_auto_openlib}
-{ $define use_init_openlib}
-{ $define dont_use_openlib}
-
-{$ifdef use_auto_openlib}
- {$undef use_init_openlib}
- {$undef use_init_openlib}
-{$endif use_auto_openlib}
-
-{$ifdef use_init_openlib}
- {$undef use_auto_openlib}
- {$undef dont_use_openlib}
-{$endif use_init_openlib}
-
-{$ifdef dont_use_openlib}
- {$undef use_auto_openlib}
- {$undef use_init_openlib}
-{$endif dont_use_openlib}
-
-
-
-
diff --git a/packages/amunits/src/utilunits/amigautils.pas b/packages/amunits/src/utilunits/amigautils.pas
index d9f4df022d..c30be2f626 100644
--- a/packages/amunits/src/utilunits/amigautils.pas
+++ b/packages/amunits/src/utilunits/amigautils.pas
@@ -24,11 +24,6 @@
nils.sjoholm@mailbox.swipnet.se
}
-{$I useamigasmartlink.inc}
-{$ifdef use_amiga_smartlink}
- {$smartlink on}
-{$endif use_amiga_smartlink}
-
unit amigautils;
interface
diff --git a/packages/amunits/src/utilunits/consoleio.pas b/packages/amunits/src/utilunits/consoleio.pas
index ca9ed258bf..639ab4998d 100644
--- a/packages/amunits/src/utilunits/consoleio.pas
+++ b/packages/amunits/src/utilunits/consoleio.pas
@@ -34,11 +34,6 @@ unit consoleio;
}
-{$I useamigasmartlink.inc}
-{$ifdef use_amiga_smartlink}
- {$smartlink on}
-{$endif use_amiga_smartlink}
-
interface
uses exec, intuition, console, amigalib, conunit;
diff --git a/packages/amunits/src/utilunits/doublebuffer.pas b/packages/amunits/src/utilunits/doublebuffer.pas
index ca304cf522..566ef96374 100644
--- a/packages/amunits/src/utilunits/doublebuffer.pas
+++ b/packages/amunits/src/utilunits/doublebuffer.pas
@@ -14,11 +14,6 @@
**********************************************************************}
-{$I useamigasmartlink.inc}
-{$ifdef use_amiga_smartlink}
- {$smartlink on}
-{$endif use_amiga_smartlink}
-
unit doublebuffer;
diff --git a/packages/amunits/src/utilunits/easyasl.pas b/packages/amunits/src/utilunits/easyasl.pas
index 4f44547b29..466e76399d 100644
--- a/packages/amunits/src/utilunits/easyasl.pas
+++ b/packages/amunits/src/utilunits/easyasl.pas
@@ -33,11 +33,6 @@
nils.sjoholm@mailbox.swipnet.se
}
-{$I useamigasmartlink.inc}
-{$ifdef use_amiga_smartlink}
- {$smartlink on}
-{$endif use_amiga_smartlink}
-
unit easyasl;
diff --git a/packages/amunits/src/utilunits/hisoft.pas b/packages/amunits/src/utilunits/hisoft.pas
index e30fd35a7d..2f344a9782 100644
--- a/packages/amunits/src/utilunits/hisoft.pas
+++ b/packages/amunits/src/utilunits/hisoft.pas
@@ -26,11 +26,6 @@
nils.sjoholm@mailbox.swipnet.se Nils Sjoholm
}
-{$I useamigasmartlink.inc}
-{$ifdef use_amiga_smartlink}
- {$smartlink on}
-{$endif use_amiga_smartlink}
-
unit hisoft;
interface
diff --git a/packages/amunits/src/utilunits/linklist.pas b/packages/amunits/src/utilunits/linklist.pas
index 4e7fbe8a83..263bbcee9e 100644
--- a/packages/amunits/src/utilunits/linklist.pas
+++ b/packages/amunits/src/utilunits/linklist.pas
@@ -14,10 +14,6 @@
**********************************************************************}
-{$I useamigasmartlink.inc}
-{$ifdef use_amiga_smartlink}
- {$smartlink on}
-{$endif use_amiga_smartlink}
unit linklist;
diff --git a/packages/amunits/src/utilunits/pastoc.pas b/packages/amunits/src/utilunits/pastoc.pas
index 1264515c43..e6fd71535a 100644
--- a/packages/amunits/src/utilunits/pastoc.pas
+++ b/packages/amunits/src/utilunits/pastoc.pas
@@ -22,11 +22,6 @@
nils.sjoholm@mailbox.swipnet.se Nils Sjoholm
}
-{$I useamigasmartlink.inc}
-{$ifdef use_amiga_smartlink}
- {$smartlink on}
-{$endif use_amiga_smartlink}
-
{
This unit must be deprecated because at least:
- It is leaking memory. It allocates a new buffer for each string which won't
@@ -34,9 +29,9 @@
- The unit doesn't provide any way to free allocated string buffers manually.
(Because ReleasePas2C is not a public function.)
- It does allocations outside the Pascal heap, which the compiler has no control
- over, and makes it very hard to track these allocations, because the heaptrc
+ over, and makes it very hard to track these allocations, because the heaptrc
unit doesn't work.
- - The intuition.library documentation states that AllocRemember() is a quite
+ - The intuition.library documentation states that AllocRemember() is a quite
ineffective function, because it does two memory allocations and because it
doesn't use memory pools it has a terrible effect on memory fragmentation.
- It uses a for loop byte to copy the string contents, which is very slow.
diff --git a/packages/amunits/src/utilunits/timerutils.pas b/packages/amunits/src/utilunits/timerutils.pas
index 8b34d872ee..971ef13262 100644
--- a/packages/amunits/src/utilunits/timerutils.pas
+++ b/packages/amunits/src/utilunits/timerutils.pas
@@ -14,11 +14,6 @@
**********************************************************************}
-{$I useamigasmartlink.inc}
-{$ifdef use_amiga_smartlink}
- {$smartlink on}
-{$endif use_amiga_smartlink}
-
unit timerutils;
{
diff --git a/packages/amunits/src/utilunits/vartags.pas b/packages/amunits/src/utilunits/vartags.pas
index 22e9a97f44..e5701c9208 100644
--- a/packages/amunits/src/utilunits/vartags.pas
+++ b/packages/amunits/src/utilunits/vartags.pas
@@ -13,10 +13,6 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
**********************************************************************}
-{$I useamigasmartlink.inc}
-{$ifdef use_amiga_smartlink}
- {$smartlink on}
-{$endif use_amiga_smartlink}
unit vartags;
diff --git a/packages/amunits/src/utilunits/wbargs.pas b/packages/amunits/src/utilunits/wbargs.pas
index fe47f622e8..e2ff3ad78f 100644
--- a/packages/amunits/src/utilunits/wbargs.pas
+++ b/packages/amunits/src/utilunits/wbargs.pas
@@ -29,11 +29,6 @@
nils.sjoholm@mailbox.swipnet.se Nils Sjoholm
}
-{$I useamigasmartlink.inc}
-{$ifdef use_amiga_smartlink}
- {$smartlink on}
-{$endif use_amiga_smartlink}
-
unit WBArgs;
interface
diff --git a/packages/arosunits/Makefile b/packages/arosunits/Makefile
index dd622f4084..54af5bc84e 100644
--- a/packages/arosunits/Makefile
+++ b/packages/arosunits/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/arosunits/src/agraphics.pas b/packages/arosunits/src/agraphics.pas
index b4c0820a7c..38db177f37 100644
--- a/packages/arosunits/src/agraphics.pas
+++ b/packages/arosunits/src/agraphics.pas
@@ -495,16 +495,11 @@ type
LayerInfo: PLayer_Info; // points to head of the list
Lock: TSignalSemaphore;
BackFill: PHook;
-{$ifdef aros}
VisibleRegion: PRegion; // Private!
-{$else}
- Reserved1: ULONG;
-{$endif}
ClipRegion: PRegion;
SaveClipRects: PRegion; // used to back out when in trouble
Width,
Height: SmallInt;
-{$ifdef aros}
Shape: PRegion; // Private!
ShapeRegion: PRegion; // Private!
VisibleShape: PRegion; // Private!
@@ -512,9 +507,6 @@ type
SuperSaveClipRectCounter: Byte; // Private!
Visible: Byte; // Private!
Reserved2: array[0..1] of Byte;
-{$else}
- Reserved2: array[0..17] of Byte;
-{$endif}
{ this must stay here }
DamageList: PRegion; // list of rectangles to refreshthrough
end;
@@ -997,12 +989,12 @@ type
);
1:(
DestAddr: SmallInt; // destination Pointer
- DestData: SmallInt; // data to send
+ DestData: SmallInt; // data to send
);
2:(
VWaitPos: SmallInt; // vertical wait position
- HWaitPos: SmallInt; // horizontal wait position
- );
+ HWaitPos: SmallInt; // horizontal wait position
+ );
end;
TCopList = record
@@ -1678,7 +1670,6 @@ type
Reserved: array[0..1] of IPTR;
end;
// AROS-specifics.
-{$ifdef aros}
const
// Tags for AddDisplayDriverA()
DDRV_BootMode = TAG_USER + $01; // (LongBool) Boot mode driver which will be
@@ -1702,7 +1693,6 @@ type
mask: ULONG;
gfxhidd: APTR;
end;
-{$endif}
const
VTAG_END_CM = $00000000;
@@ -1807,9 +1797,7 @@ type
es_SimpleSprite: TSimpleSprite; { conventional simple sprite structure }
es_WordWidth: Word; { graphics use only, subject to change }
es_Flags: Word; { graphics use only, subject to change }
-{$ifdef aros} // New in AROS
es_Bitmap: PBitmap; // Actual image data.
-{$endif}
end;
const
@@ -1860,14 +1848,14 @@ const
RPTAG_PenMode = $80000080;
RPTAG_FgColor = $80000081;
RPTAG_BgColor = $80000082;
-{$ifdef aros}
+
// Extensions invented by AROS
RPTAG_PatternOriginX = $800000C0; // SmallInt
RPTAG_PatternOriginY = $800000C1; // SmallInt
RPTAG_ClipRectangle = $800000C2; // PRectangle Clones PRectangle.
RPTAG_ClipRectangleFlags = $800000C3; // LongWord
RPTAG_RemapColorFonts = $800000C4; // LongBool
-{$endif}
+
// Flags for ClipRectangleFlags
RPCRF_RELRIGHT = $01; // ClipRectangle.MaxX is relative to right of layer/bitmap
diff --git a/packages/arosunits/src/layers.pas b/packages/arosunits/src/layers.pas
index 585d520fed..37877e0009 100644
--- a/packages/arosunits/src/layers.pas
+++ b/packages/arosunits/src/layers.pas
@@ -21,85 +21,122 @@ uses
const
- LAYERSIMPLE = 1;
- LAYERSMART = 2;
- LAYERSUPER = 4;
- LAYERUPDATING = $10;
- LAYERBACKDROP = $40;
- LAYERREFRESH = $80;
- LAYER_CLIPRECTS_LOST = $100; { during BeginUpdate }
- { or during layerop }
- { this happens if out of memory }
- LMN_REGION = -1;
+ LAYERSIMPLE = 1 shl 0;
+ LAYERSMART = 1 shl 1;
+ LAYERSUPER = 1 shl 2;
+ LAYERUPDATING = 1 shl 4;
+ LAYERBACKDROP = 1 shl 6;
+ LAYERREFRESH = 1 shl 7;
+ LAYER_CLIPRECTS_LOST = 1 shl 8; // during BeginUpdate or during layerop this happens if out of memory
+ LAYERIREFRESH = 1 shl 9;
+ LAYERIREFRESH2 = 1 shl 10;
+
+ LMN_REGION = -1;
type
- PLayer_Info = ^TLayer_Info;
- TLayer_Info = record
- top_layer : PLayer;
- check_lp : PLayer; { !! Private !! }
- obs : PClipRect;
- FreeClipRects : PClipRect; { !! Private !! }
- PrivateReserve1, { !! Private !! }
- PrivateReserve2 : LongInt; { !! Private !! }
- Lock : TSignalSemaphore; { !! Private !! }
- gs_Head : TMinList; { !! Private !! }
- PrivateReserve3 : SmallInt; { !! Private !! }
- PrivateReserve4 : Pointer; { !! Private !! }
- Flags : WORD;
- fatten_count : Shortint; { !! Private !! }
- LockLayersCount : Shortint; { !! Private !! }
- PrivateReserve5 : SmallInt; { !! Private !! }
- BlankHook, { !! Private !! }
- LayerInfo_extra : Pointer; { !! Private !! }
- end;
+ PLayer_Info = ^TLayer_Info;
+ TLayer_Info = record
+ top_layer : PLayer;
+ check_lp : PLayer; // Private
+ obs : PClipRect;
+ FreeClipRects : PClipRect; // Private
+ PrivateReserve1, // Private
+ PrivateReserve2: LongInt; // Private
+ Lock : TSignalSemaphore; // Private
+ gs_Head : TMinList; // Private
+ PrivateReserve3: SmallInt; // Private
+ PrivateReserve4: Pointer; // Private
+ Flags : Word;
+ fatten_count : Shortint; // Private
+ LockLayersCount: Shortint; // Private
+ PrivateReserve5: SmallInt; // Private
+ BlankHook, // Private
+ LayerInfo_extra: Pointer; // Private
+ end;
+
+ // Backfill hook message
+ TBackFillMessage = record
+ Layer: PLayer;
+ Bounds: TRectangle;
+ OffsetX: LongInt;
+ OffsetY: LongInt;
+ end;
+ PBackFillMessage = ^TBackFillMessage;
const
- NEWLAYERINFO_CALLED = 1;
-
-{
- * LAYERS_NOBACKFILL is the value needed to get no backfill hook
- * LAYERS_BACKFILL is the value needed to get the default backfill hook
- }
- LAYERS_NOBACKFILL = 1;
- LAYERS_BACKFILL = 0;
-
- LAYERSNAME : PChar = 'layers.library';
+ NEWLAYERINFO_CALLED = 1;
+
+ LAYERS_NOBACKFILL = 1; // is the value needed to get no backfill hook
+ LAYERS_BACKFILL = 0; // is the value needed to get the default backfill hook
+
+ // LayerInfo Flag
+ LIFLG_SUPPORTS_OFFSCREEN_LAYERS = 1 shl 8; // Same flag as AmigaOS hack PowerWindowsNG
+
+ // Tags for CreateLayerTagList
+
+ // AmigaOS4-compatible
+ LA_ShapeRegion = TAG_USER + 99 + 105; // ABI_V0 compatibility
+ LA_ShapeHook = TAG_USER + 35; // PRegion. Default is nil (rectangular shape)
+ LA_InFrontOf = TAG_USER + 99 + 102; // ABI_V0 compatibility
+ LA_Hidden = TAG_USER + 41; // LongBool. Default is False
+ // MorphOS-compatible
+ LA_Dummy = TAG_USER + 1024;
+ LA_BackfillHook = LA_Dummy + 1; // PHook. Default is LAYERS_BACKFILL
+ LA_TransRegion = LA_Dummy + 2; // PRegion. Default is nil (rectangular shape)
+ LA_TransHook = LA_Dummy + 3;
+ LA_WindowPtr = LA_Dummy + 4;
+ LA_SuperBitMap = TAG_USER + 99 + 14; // PBitMap. Default is nil (none) ABI_V0 compatibility
+ // AROS-specific
+ LA_AROS = TAG_USER + 1234;
+ LA_Behind = TAG_USER + 99 + 103; // ABI_V0 compatibility
+ LA_ChildOf = TAG_USER + 99 + 101; // ABI_V0 compatibility
+
+ LAYERSNAME : PChar = 'layers.library';
var
LayersBase : PLibrary;
-function BeginUpdate(Layer: PLayer): LongInt; syscall LayersBase 13;
-function BehindLayer(dummy: LongInt; Layer: PLayer): LongInt; syscall LayersBase 9;
-function CreateBehindHookLayer(LayerInfo: PLayer_Info; Bitmap1: PBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; Flags: LongInt; Hook: PHook; SuperBitmap2: PBitMap): PLayer; syscall LayersBase 32;
-function CreateBehindLayer(LayerInfo: PLayer_Info; Bitmap1: PBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; Flags: LongInt; SuperBitmap2: PBitMap): PLayer; syscall LayersBase 7;
-function CreateUpfrontHookLayer(LayerInfo: PLayer_Info; Bitmap1: PBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; Flags: LongInt; Hook: PHook; SuperBitmap2: PBitMap): PLayer; syscall LayersBase 31;
+procedure InitLayers(LayerInfo: PLayer_Info); syscall LayersBase 5;
function CreateUpfrontLayer(LayerInfo: PLayer_Info; Bitmap1: PBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; Flags: LongInt; SuperBitmap2: PBitMap): PLayer; syscall LayersBase 6;
+function CreateBehindLayer(LayerInfo: PLayer_Info; Bitmap1: PBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; Flags: LongInt; SuperBitmap2: PBitMap): PLayer; syscall LayersBase 7;
+function UpfrontLayer(dummy: LongInt; Layer: PLayer): LongInt; syscall LayersBase 8;
+function BehindLayer(dummy: LongInt; Layer: PLayer): LongInt; syscall LayersBase 9;
+function MoveLayer(dummy: LongInt; Layer: PLayer; dx: LongInt; dy: LongInt): LongInt; syscall LayersBase 10;
+function SizeLayer(dummy: LongInt; Layer: PLayer; dx: LongInt; dy: LongInt): LongInt; syscall LayersBase 11;
+procedure ScrollLayer(dummy: LongInt; Layer: PLayer; dx: LongInt; dy: LongInt); syscall LayersBase 12;
+function BeginUpdate(Layer: PLayer): LongInt; syscall LayersBase 13;
+procedure EndUpdate(Layer: PLayer; Flag: LongWord); syscall LayersBase 14;
function DeleteLayer(dummy: LongInt; Layer: PLayer): LongInt; syscall LayersBase 15;
+procedure LockLayer(dummy: LongInt; Layer: PLayer); syscall LayersBase 16;
+procedure UnlockLayer(Layer: PLayer); syscall LayersBase 17;
+procedure LockLayers(LayerInfo: PLayer_Info); syscall LayersBase 18;
+procedure UnlockLayers(LayerInfo: PLayer_Info); syscall LayersBase 19;
+procedure LockLayerInfo(LayerInfo: PLayer_Info); syscall LayersBase 20;
+procedure SwapBitsRastPortClipRect(rp: PRastPort; cr: PClipRect); syscall LayersBase 21;
+function WhichLayer(LayerInfo: PLayer_Info; x: LongInt; y: LongInt): PLayer; syscall LayersBase 22;
+procedure UnlockLayerInfo(LayerInfo: PLayer_Info); syscall LayersBase 23;
+function NewLayerInfo: PLayer_Info; syscall LayersBase 24;
procedure DisposeLayerInfo(LayerInfo: PLayer_Info); syscall LayersBase 25;
-procedure DoHookClipRects(Hook: PHook; RPort: PRastPort;const Rect: PRectangle); syscall LayersBase 36;
-procedure EndUpdate(Layer: PLayer; Flag: LongWord); syscall LayersBase 14;
function FattenLayerInfo(LayerInfo: PLayer_Info): LongInt; syscall LayersBase 26;
-procedure InitLayers(LayerInfo: PLayer_Info); syscall LayersBase 5;
+procedure ThinLayerInfo(LayerInfo: PLayer_Info); syscall LayersBase 27;
+function MoveLayerInFrontOf(layer_to_move: PLayer; other_layer: PLayer): LongInt; syscall LayersBase 28;
function InstallClipRegion(Layer: PLayer; const Region: PRegion): PRegion; syscall LayersBase 29;
+function MoveSizeLayer(Layer: PLayer; dx: LongInt; dy: LongInt; dw: LongInt; dh: LongInt): LongInt; syscall LayersBase 30;
+function CreateUpfrontHookLayer(LayerInfo: PLayer_Info; Bitmap1: PBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; Flags: LongInt; Hook: PHook; SuperBitmap2: PBitMap): PLayer; syscall LayersBase 31;
+function CreateBehindHookLayer(LayerInfo: PLayer_Info; Bitmap1: PBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; Flags: LongInt; Hook: PHook; SuperBitmap2: PBitMap): PLayer; syscall LayersBase 32;
function InstallLayerHook(Layer: PLayer; Hook: PHook): PHook; syscall LayersBase 33;
function InstallLayerInfoHook(LayerInfo: PLayer_Info; const Hook: PHook): PHook; syscall LayersBase 34;
-procedure LockLayer(dummy: LongInt; Layer: PLayer); syscall LayersBase 16;
-procedure LockLayerInfo(LayerInfo: PLayer_Info); syscall LayersBase 20;
-procedure LockLayers(LayerInfo: PLayer_Info); syscall LayersBase 18;
-function MoveLayer(dummy: LongInt; Layer: PLayer; dx: LongInt; dy: LongInt): LongInt; syscall LayersBase 10;
-function MoveLayerInFrontOf(layer_to_move: PLayer; other_layer: PLayer): LongInt; syscall LayersBase 28;
-function MoveSizeLayer(Layer: PLayer; dx: LongInt; dy: LongInt; dw: LongInt; dh: LongInt): LongInt; syscall LayersBase 30;
-function NewLayerInfo: PLayer_Info; syscall LayersBase 24;
-procedure ScrollLayer(dummy: LongInt; Layer: PLayer; dx: LongInt; dy: LongInt); syscall LayersBase 12;
-function SizeLayer(dummy: LongInt; Layer: PLayer; dx: LongInt; dy: LongInt): LongInt; syscall LayersBase 11;
procedure SortLayerCR(Layer: PLayer; dx: LongInt; dy: LongInt); syscall LayersBase 35;
-procedure SwapBitsRastPortClipRect(rp: PRastPort; cr: PClipRect); syscall LayersBase 21;
-procedure ThinLayerInfo(LayerInfo: PLayer_Info); syscall LayersBase 27;
-procedure UnlockLayer(Layer: PLayer); syscall LayersBase 17;
-procedure UnlockLayerInfo(LayerInfo: PLayer_Info); syscall LayersBase 23;
-procedure UnlockLayers(LayerInfo: PLayer_Info); syscall LayersBase 19;
-function UpfrontLayer(dummy: LongInt; Layer: PLayer): LongInt; syscall LayersBase 8;
-function WhichLayer(LayerInfo: PLayer_Info; x: LongInt; y: LongInt): PLayer; syscall LayersBase 22;
+procedure DoHookClipRects(Hook: PHook; RPort: PRastPort;const Rect: PRectangle); syscall LayersBase 36;
+function ChangeLayerVisibility(Layer: PLayer; Visible: LongInt): LongInt; syscall LayersBase 37;
+function ScaleLayer(Layer: PLayer; Taglist: PTagItem): LongWord; syscall LayersBase 38;
+function CreateUpfrontLayerTagList(LayerInfo: PLayer_Info; Bitmap1: PBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; Flags: LongInt; TagList: PTagItem): PLayer; syscall LayersBase 39;
+function IsLayerVisible(Layer: PLayer): LongInt; syscall LayersBase 40;
+function ChangeLayerShape(Layer: PLayer; NewShape: PRegion; CallBack: PHook): PRegion; syscall LayersBase 41;
+function CreateBehindLayer(LayerInfo: PLayer_Info; Bitmap1: PBitMap; x0: LongInt; y0: LongInt; x1: LongInt; y1: LongInt; Flags: LongInt; TagList: PTagItem): PLayer; syscall LayersBase 43;
+function IsLayerHiddenBySibling(Layer: PLayer; Check_Visible: WordBool): WordBool; syscall LayersBase 44;
+procedure CollectPixelsLayer(Layer: PLayer; Region: PRegion; CallBack: PHook); syscall LayersBase 45;
+
implementation
diff --git a/packages/aspell/Makefile b/packages/aspell/Makefile
index ee38304835..8ef3c6c4b0 100644
--- a/packages/aspell/Makefile
+++ b/packages/aspell/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/bfd/Makefile b/packages/bfd/Makefile
index 6707031600..c083e2547e 100644
--- a/packages/bfd/Makefile
+++ b/packages/bfd/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/bzip2/Makefile b/packages/bzip2/Makefile
index ac1d2b01dd..df940adb83 100644
--- a/packages/bzip2/Makefile
+++ b/packages/bzip2/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/cairo/Makefile b/packages/cairo/Makefile
index 6726d7361b..d103fb15bc 100644
--- a/packages/cairo/Makefile
+++ b/packages/cairo/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/cdrom/Makefile b/packages/cdrom/Makefile
index 04ffee2911..5eb74fb05f 100644
--- a/packages/cdrom/Makefile
+++ b/packages/cdrom/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/chm/Makefile b/packages/chm/Makefile
index a6f8da60ad..840081c374 100644
--- a/packages/chm/Makefile
+++ b/packages/chm/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/cocoaint/Makefile b/packages/cocoaint/Makefile
index 27d8d22c25..eac8e6456a 100644
--- a/packages/cocoaint/Makefile
+++ b/packages/cocoaint/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/dblib/Makefile b/packages/dblib/Makefile
index 823a7f67e0..fd8c781ee2 100644
--- a/packages/dblib/Makefile
+++ b/packages/dblib/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/dbus/Makefile b/packages/dbus/Makefile
index 3530441ca1..659c23d3b4 100644
--- a/packages/dbus/Makefile
+++ b/packages/dbus/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/dts/Makefile b/packages/dts/Makefile
index fc8c01c765..0a83fee90e 100644
--- a/packages/dts/Makefile
+++ b/packages/dts/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/fastcgi/Makefile b/packages/fastcgi/Makefile
index 53d1d2467e..d4c25b71ef 100644
--- a/packages/fastcgi/Makefile
+++ b/packages/fastcgi/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/fcl-async/Makefile b/packages/fcl-async/Makefile
index 503857b668..b7c16d9f4c 100644
--- a/packages/fcl-async/Makefile
+++ b/packages/fcl-async/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/fcl-base/Makefile b/packages/fcl-base/Makefile
index f8119ad163..5268fd5201 100644
--- a/packages/fcl-base/Makefile
+++ b/packages/fcl-base/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/fcl-db/Makefile b/packages/fcl-db/Makefile
index 60d3c2fd8e..a9f79cbb10 100644
--- a/packages/fcl-db/Makefile
+++ b/packages/fcl-db/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/fcl-db/src/sdf/sdfdata.pp b/packages/fcl-db/src/sdf/sdfdata.pp
index 2d840f10ba..b3a0d0d49c 100644
--- a/packages/fcl-db/src/sdf/sdfdata.pp
+++ b/packages/fcl-db/src/sdf/sdfdata.pp
@@ -378,9 +378,14 @@ begin
FFileName := Value;
end;
+function FieldDefDataSize(fd:TFieldDef):integer;
+begin
+ result:=fd.Size*fd.CharSize+1;
+end;
+
procedure TFixedFormatDataSet.InternalInitFieldDefs;
var
- i, Len, MaxLen :Integer;
+ i, Len, DataLen, MaxLen :Integer;
LstFields :TStrings;
FEnc : TSystemCodePage;
@@ -410,12 +415,11 @@ begin
Fenc:=FEncoding.CodePage
else
FEnc:=DefaultSystemCodePage;
- FieldDefs.Add(Trim(LstFields.Names[i]), ftString, Len, 0, False,False,FieldDefs.Count+1,FEnc);
- Inc(Len);
+ DataLen:=FieldDefDataSize(FieldDefs.Add(Trim(LstFields.Names[i]), ftString, Len, 0, False,False,FieldDefs.Count+1,FEnc));
{$IFDEF FPC_REQUIRES_PROPER_ALIGNMENT}
- Len := Align(Len, SizeOf(PtrInt));
+ DataLen := Align(DataLen, SizeOf(PtrInt));
{$ENDIF}
- Inc(FRecordSize, Len);
+ Inc(FRecordSize, DataLen);
end;
finally
LstFields.Free;
@@ -696,7 +700,7 @@ begin
Result := RecBuf < StrEnd(RecBuf); // just ''=Null
if Result and Assigned(Buffer) then
begin
- StrLCopy(Buffer, RecBuf, Field.Size);
+ StrLCopy(Buffer, RecBuf, Field.DataSize);
if FTrimSpace then // trim trailing spaces
begin
BufEnd := StrEnd(Buffer);
@@ -759,7 +763,7 @@ begin
i := 1;
while (i < FieldNo) and (i < FieldDefs.Count) do
begin
- Len := FieldDefs.Items[i-1].Size + 1;
+ Len := FieldDefDataSize(FieldDefs[i-1]);
{$IFDEF FPC_REQUIRES_PROPER_ALIGNMENT}
Len := Align(Len, SizeOf(PtrInt));
{$ENDIF}
@@ -912,7 +916,7 @@ begin
Dest := PChar(Result);
for i := 0 to FieldDefs.Count - 1 do
begin
- Len := FieldDefs[i].Size;
+ Len := FieldDefDataSize(FieldDefs[i])-1;
Move(Src^, Dest^, Len);
Inc(Src, Len);
Inc(Dest, Len);
@@ -928,14 +932,14 @@ begin
// calculate fixed length record size
Len := 0;
for i := 0 to FieldDefs.Count - 1 do
- Inc(Len, FieldDefs[i].Size);
+ Inc(Len, FieldDefDataSize(FieldDefs[i])-1);
SetLength(Result, Len);
Src := PChar(Buffer);
Dest := PChar(Result);
for i := 0 to FieldDefs.Count - 1 do
begin
- Len := FieldDefs[i].Size;
+ Len := FieldDefDataSize(FieldDefs[i])-1;
Move(Src^, Dest^, Len);
// fields in record buffer are null-terminated, but pad them with spaces to fixed length
SrcLen := StrLen(Src);
@@ -1142,7 +1146,7 @@ begin
for i := 0 to FieldDefs.Count - 1 do
begin
- MaxLen := FieldDefs[i].Size;
+ MaxLen := FieldDefDataSize(FieldDefs[i])-1;
S := ExtractDelimited(Source, Pos);
Len := Length(S);
@@ -1152,8 +1156,7 @@ begin
if Len = 0 then // bug in StrPLCopy
Dest^ := #0
else
- StrPLCopy(Dest, S, Len); // null-terminate
-
+ StrPLCopy(Dest, S, Len+1); // null-terminate
Inc(Dest, MaxLen+1);
end;
end;
@@ -1173,7 +1176,7 @@ begin
Src := PChar(Buffer);
for i := 0 to FieldDefs.Count - 1 do
begin
- MaxLen := FieldDefs[i].Size;
+ MaxLen := FieldDefDataSize(FieldDefs[i])-1;
Len := StrLen(Src); // field values are null-terminated in record buffer
if Len > MaxLen then
Len := MaxLen;
diff --git a/packages/fcl-extra/Makefile b/packages/fcl-extra/Makefile
index 0efe7e85d4..b3cd0b9808 100644
--- a/packages/fcl-extra/Makefile
+++ b/packages/fcl-extra/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/fcl-fpcunit/Makefile b/packages/fcl-fpcunit/Makefile
index b22bed677f..674c4bd3a3 100644
--- a/packages/fcl-fpcunit/Makefile
+++ b/packages/fcl-fpcunit/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/fcl-image/Makefile b/packages/fcl-image/Makefile
index 2b58dec9c4..60e479ffd6 100644
--- a/packages/fcl-image/Makefile
+++ b/packages/fcl-image/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/fcl-js/Makefile b/packages/fcl-js/Makefile
index e2f43c45a8..58a2bfdc42 100644
--- a/packages/fcl-js/Makefile
+++ b/packages/fcl-js/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/fcl-json/Makefile b/packages/fcl-json/Makefile
index 96e0348019..315efd702f 100644
--- a/packages/fcl-json/Makefile
+++ b/packages/fcl-json/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/fcl-json/src/jsonconf.pp b/packages/fcl-json/src/jsonconf.pp
index 794c796e99..b0bccbf575 100644
--- a/packages/fcl-json/src/jsonconf.pp
+++ b/packages/fcl-json/src/jsonconf.pp
@@ -31,7 +31,7 @@ uses
SysUtils, Classes, fpjson, jsonscanner, jsonparser;
Const
- DefaultJSONOptions = [joUTF8,joComments];
+ DefaultJSONOptions = [joUTF8,joComments,joBOMCheck];
type
EJSONConfigError = class(Exception);
diff --git a/packages/fcl-json/src/jsonscanner.pp b/packages/fcl-json/src/jsonscanner.pp
index 5294e02ac6..c81f543bcb 100644
--- a/packages/fcl-json/src/jsonscanner.pp
+++ b/packages/fcl-json/src/jsonscanner.pp
@@ -51,7 +51,7 @@ type
EScannerError = class(EParserError);
- TJSONOption = (joUTF8,joStrict,joComments,joIgnoreTrailingComma,joIgnoreDuplicates);
+ TJSONOption = (joUTF8,joStrict,joComments,joIgnoreTrailingComma,joIgnoreDuplicates,joBOMCheck);
TJSONOptions = set of TJSONOption;
Const
@@ -141,10 +141,26 @@ end;
constructor TJSONScanner.Create(Source: TStream; AOptions: TJSONOptions);
+ procedure SkipStreamBOM;
+ Var
+ OldPos : integer;
+ Header : array[0..3] of byte;
+ begin
+ OldPos := Source.Position;
+ FillChar(Header, SizeOf(Header), 0);
+ if Source.Read(Header, 3) = 3 then
+ if (Header[0]=$EF) and (Header[1]=$BB) and (Header[2]=$BF) then
+ exit;
+ Source.Position := OldPos;
+ end;
+
+
Var
S : RawByteString;
begin
+ if (joBOMCheck in aOptions) then
+ SkipStreamBom;
S:='';
SetLength(S,Source.Size-Source.Position);
if Length(S)>0 then
diff --git a/packages/fcl-net/Makefile b/packages/fcl-net/Makefile
index 61ffac6e86..c4fed0e13c 100644
--- a/packages/fcl-net/Makefile
+++ b/packages/fcl-net/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/fcl-passrc/Makefile b/packages/fcl-passrc/Makefile
index 43549359af..ac093601bd 100644
--- a/packages/fcl-passrc/Makefile
+++ b/packages/fcl-passrc/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/fcl-passrc/src/pparser.pp b/packages/fcl-passrc/src/pparser.pp
index a85d01bb5d..b3741ee1ff 100644
--- a/packages/fcl-passrc/src/pparser.pp
+++ b/packages/fcl-passrc/src/pparser.pp
@@ -5495,8 +5495,12 @@ begin
else
// remove legacy or basesysv on MorphOS syscalls
begin
- if CurTokenIsIdentifier('legacy') or CurTokenIsIdentifier('consoledevice')
- or (Curtoken=tkIdentifier) and (Pos('base',LowerCase(CurtokenText))>0) then
+ if (Pos('sysv',LowerCase(CurtokenText))>0) or CurTokenIsIdentifier('legacy') then
+ NextToken;
+ // remove LibBase (Amiga, AROS, MorphOS) or Interface (OS4)
+ if CurTokenIsIdentifier('consoledevice') or
+ ((Curtoken=tkIdentifier) and (Pos('base',LowerCase(CurtokenText)) > 0)) or
+ ((Curtoken=tkIdentifier) and (CurtokenText[1] = 'I')) then
NextToken;
end;
end;
diff --git a/packages/fcl-pdf/Makefile b/packages/fcl-pdf/Makefile
index 57e10d986c..7a9e04531f 100644
--- a/packages/fcl-pdf/Makefile
+++ b/packages/fcl-pdf/Makefile
@@ -631,10 +631,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/fcl-process/Makefile b/packages/fcl-process/Makefile
index 0f51538804..5e4f3aff74 100644
--- a/packages/fcl-process/Makefile
+++ b/packages/fcl-process/Makefile
@@ -631,10 +631,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/fcl-registry/Makefile b/packages/fcl-registry/Makefile
index 60e3b8cff6..7c10301dbf 100644
--- a/packages/fcl-registry/Makefile
+++ b/packages/fcl-registry/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/fcl-report/Makefile b/packages/fcl-report/Makefile
index c89ad27c44..aae71821dc 100644
--- a/packages/fcl-report/Makefile
+++ b/packages/fcl-report/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/fcl-res/Makefile b/packages/fcl-res/Makefile
index ca5fe5f42b..ac900bd4bb 100644
--- a/packages/fcl-res/Makefile
+++ b/packages/fcl-res/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/fcl-sdo/Makefile b/packages/fcl-sdo/Makefile
index 57d90e321f..a792ac6eb7 100644
--- a/packages/fcl-sdo/Makefile
+++ b/packages/fcl-sdo/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/fcl-sound/Makefile b/packages/fcl-sound/Makefile
index ec22082a50..431efe4f90 100644
--- a/packages/fcl-sound/Makefile
+++ b/packages/fcl-sound/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/fcl-stl/Makefile b/packages/fcl-stl/Makefile
index b6360e1df9..468d4e3037 100644
--- a/packages/fcl-stl/Makefile
+++ b/packages/fcl-stl/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/fcl-web/Makefile b/packages/fcl-web/Makefile
index 749c400a21..89f79a2866 100644
--- a/packages/fcl-web/Makefile
+++ b/packages/fcl-web/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/fcl-xml/Makefile b/packages/fcl-xml/Makefile
index 1106c02639..d1de1be91b 100644
--- a/packages/fcl-xml/Makefile
+++ b/packages/fcl-xml/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/fftw/Makefile b/packages/fftw/Makefile
index 3f197898de..584b6886e2 100644
--- a/packages/fftw/Makefile
+++ b/packages/fftw/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/fpgtk/Makefile b/packages/fpgtk/Makefile
index 84f977113e..37d11e00aa 100644
--- a/packages/fpgtk/Makefile
+++ b/packages/fpgtk/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/fpindexer/Makefile b/packages/fpindexer/Makefile
index 84dbcc28ab..29807d49f7 100644
--- a/packages/fpindexer/Makefile
+++ b/packages/fpindexer/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/fpmkunit/Makefile b/packages/fpmkunit/Makefile
index 8a7a75440c..92e04c5ddf 100644
--- a/packages/fpmkunit/Makefile
+++ b/packages/fpmkunit/Makefile
@@ -647,10 +647,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/fppkg/Makefile b/packages/fppkg/Makefile
index b0f937c4c2..ae9659a4c3 100644
--- a/packages/fppkg/Makefile
+++ b/packages/fppkg/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/fuse/Makefile b/packages/fuse/Makefile
index 01d01d536d..3a22c3e093 100644
--- a/packages/fuse/Makefile
+++ b/packages/fuse/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/fv/Makefile b/packages/fv/Makefile
index dcb12aab92..dbe8a5e501 100644
--- a/packages/fv/Makefile
+++ b/packages/fv/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/gdbint/Makefile b/packages/gdbint/Makefile
index 1487eb9efd..f7d5ade01c 100644
--- a/packages/gdbint/Makefile
+++ b/packages/gdbint/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/gdbm/Makefile b/packages/gdbm/Makefile
index b9335d1f95..21d34652b2 100644
--- a/packages/gdbm/Makefile
+++ b/packages/gdbm/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/ggi/Makefile b/packages/ggi/Makefile
index f04a2632a9..b6610bccc9 100644
--- a/packages/ggi/Makefile
+++ b/packages/ggi/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/gmp/Makefile b/packages/gmp/Makefile
index 8b116dd9ea..fd917ff2d3 100644
--- a/packages/gmp/Makefile
+++ b/packages/gmp/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/gnome1/Makefile b/packages/gnome1/Makefile
index c8c9405c85..3712857342 100644
--- a/packages/gnome1/Makefile
+++ b/packages/gnome1/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/gnutls/Makefile b/packages/gnutls/Makefile
index 8faee5c26c..013afa4ec4 100644
--- a/packages/gnutls/Makefile
+++ b/packages/gnutls/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/googleapi/Makefile b/packages/googleapi/Makefile
index ef6ecfb0a9..29014eda29 100644
--- a/packages/googleapi/Makefile
+++ b/packages/googleapi/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/graph/Makefile b/packages/graph/Makefile
index 2bc322ec11..91ef395187 100644
--- a/packages/graph/Makefile
+++ b/packages/graph/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/gtk1/Makefile b/packages/gtk1/Makefile
index a5175f7dd3..5e0f6d6ab1 100644
--- a/packages/gtk1/Makefile
+++ b/packages/gtk1/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/gtk2/Makefile b/packages/gtk2/Makefile
index bd77456bfc..b708adce8b 100644
--- a/packages/gtk2/Makefile
+++ b/packages/gtk2/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/hash/Makefile b/packages/hash/Makefile
index 8a2dba6a2a..438da3152d 100644
--- a/packages/hash/Makefile
+++ b/packages/hash/Makefile
@@ -631,10 +631,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/hermes/Makefile b/packages/hermes/Makefile
index 8cd35be0d6..f0b61ee03d 100644
--- a/packages/hermes/Makefile
+++ b/packages/hermes/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/httpd13/Makefile b/packages/httpd13/Makefile
index 571a489548..325ac43df4 100644
--- a/packages/httpd13/Makefile
+++ b/packages/httpd13/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/httpd20/Makefile b/packages/httpd20/Makefile
index 716c63d33d..592f7c442c 100644
--- a/packages/httpd20/Makefile
+++ b/packages/httpd20/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/httpd22/Makefile b/packages/httpd22/Makefile
index eb36d8098c..07e8ea8fd2 100644
--- a/packages/httpd22/Makefile
+++ b/packages/httpd22/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/httpd24/Makefile b/packages/httpd24/Makefile
index 2ae32140c1..f87cf06397 100644
--- a/packages/httpd24/Makefile
+++ b/packages/httpd24/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/ibase/Makefile b/packages/ibase/Makefile
index 05ca22fbe7..80c84cefb0 100644
--- a/packages/ibase/Makefile
+++ b/packages/ibase/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/iconvenc/Makefile b/packages/iconvenc/Makefile
index 3f2f3a563e..0d3064e9b7 100644
--- a/packages/iconvenc/Makefile
+++ b/packages/iconvenc/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/ide/Makefile b/packages/ide/Makefile
index 6b8ad4cf10..3a07fcbf58 100644
--- a/packages/ide/Makefile
+++ b/packages/ide/Makefile
@@ -616,10 +616,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/imagemagick/Makefile b/packages/imagemagick/Makefile
index 4f6c045ae6..3ed273089e 100644
--- a/packages/imagemagick/Makefile
+++ b/packages/imagemagick/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/imlib/Makefile b/packages/imlib/Makefile
index ade3c2694d..be8c616904 100644
--- a/packages/imlib/Makefile
+++ b/packages/imlib/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/iosxlocale/Makefile b/packages/iosxlocale/Makefile
index 4fed50bc9e..f4f15b84aa 100644
--- a/packages/iosxlocale/Makefile
+++ b/packages/iosxlocale/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/jni/Makefile b/packages/jni/Makefile
index cda25c9727..42d02da46e 100644
--- a/packages/jni/Makefile
+++ b/packages/jni/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/ldap/Makefile b/packages/ldap/Makefile
index 0abb380577..0e15797b9f 100644
--- a/packages/ldap/Makefile
+++ b/packages/ldap/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/libc/Makefile b/packages/libc/Makefile
index 8e199d6003..1a92afdea8 100644
--- a/packages/libc/Makefile
+++ b/packages/libc/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/libcups/Makefile b/packages/libcups/Makefile
index 03acba2493..7ce4fe6c12 100644
--- a/packages/libcups/Makefile
+++ b/packages/libcups/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/libcurl/Makefile b/packages/libcurl/Makefile
index ce74892ef3..0343dd1f6d 100644
--- a/packages/libcurl/Makefile
+++ b/packages/libcurl/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/libenet/Makefile b/packages/libenet/Makefile
index 2748273212..b0213906aa 100644
--- a/packages/libenet/Makefile
+++ b/packages/libenet/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/libffi/Makefile b/packages/libffi/Makefile
index 731ceb16c2..00d0a73bee 100644
--- a/packages/libffi/Makefile
+++ b/packages/libffi/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/libfontconfig/Makefile b/packages/libfontconfig/Makefile
index 52cba49341..a93361098f 100644
--- a/packages/libfontconfig/Makefile
+++ b/packages/libfontconfig/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/libgbafpc/Makefile b/packages/libgbafpc/Makefile
index cb05aaf036..351d9fff43 100644
--- a/packages/libgbafpc/Makefile
+++ b/packages/libgbafpc/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/libgc/Makefile b/packages/libgc/Makefile
index c7bd9e4013..6728171c7c 100644
--- a/packages/libgc/Makefile
+++ b/packages/libgc/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/libgd/Makefile b/packages/libgd/Makefile
index 95e522c93c..edae3630d8 100644
--- a/packages/libgd/Makefile
+++ b/packages/libgd/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/libmagic/Makefile b/packages/libmagic/Makefile
index ae0a1e0da8..15f1722e47 100644
--- a/packages/libmagic/Makefile
+++ b/packages/libmagic/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/libmicrohttpd/Makefile b/packages/libmicrohttpd/Makefile
index f5d1fa8a42..5e624a252c 100644
--- a/packages/libmicrohttpd/Makefile
+++ b/packages/libmicrohttpd/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/libndsfpc/Makefile b/packages/libndsfpc/Makefile
index 75786ffb96..beba65335b 100644
--- a/packages/libndsfpc/Makefile
+++ b/packages/libndsfpc/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/libogcfpc/Makefile b/packages/libogcfpc/Makefile
index 2cb4ac5618..e317ed8dd0 100644
--- a/packages/libogcfpc/Makefile
+++ b/packages/libogcfpc/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/libpng/Makefile b/packages/libpng/Makefile
index 13798bbcc3..56158c368b 100644
--- a/packages/libpng/Makefile
+++ b/packages/libpng/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/librsvg/Makefile b/packages/librsvg/Makefile
index 0e4b77f7c4..6ef485f230 100644
--- a/packages/librsvg/Makefile
+++ b/packages/librsvg/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/libsee/Makefile b/packages/libsee/Makefile
index 0ea78e9d51..9d2928a717 100644
--- a/packages/libsee/Makefile
+++ b/packages/libsee/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/libtar/Makefile b/packages/libtar/Makefile
index 8cc2782978..832ae22219 100644
--- a/packages/libtar/Makefile
+++ b/packages/libtar/Makefile
@@ -631,10 +631,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/libusb/Makefile b/packages/libusb/Makefile
index d93e0734b6..8a7d559147 100644
--- a/packages/libusb/Makefile
+++ b/packages/libusb/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/libvlc/Makefile b/packages/libvlc/Makefile
index ce777a3811..c4076e5e7e 100644
--- a/packages/libvlc/Makefile
+++ b/packages/libvlc/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/libxml/Makefile b/packages/libxml/Makefile
index 8661e1d7d5..1cf86913b1 100644
--- a/packages/libxml/Makefile
+++ b/packages/libxml/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/lua/Makefile b/packages/lua/Makefile
index 989aa6c8ae..5cb0294592 100644
--- a/packages/lua/Makefile
+++ b/packages/lua/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/mad/Makefile b/packages/mad/Makefile
index 06251f9a1b..c50f10955c 100644
--- a/packages/mad/Makefile
+++ b/packages/mad/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/matroska/Makefile b/packages/matroska/Makefile
index af21f50187..fc49da4cf7 100644
--- a/packages/matroska/Makefile
+++ b/packages/matroska/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/modplug/Makefile b/packages/modplug/Makefile
index 71401c34d5..54ebdc7bbc 100644
--- a/packages/modplug/Makefile
+++ b/packages/modplug/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/morphunits/Makefile b/packages/morphunits/Makefile
index d6e9ad5d20..91fc69f0fe 100644
--- a/packages/morphunits/Makefile
+++ b/packages/morphunits/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/mysql/Makefile b/packages/mysql/Makefile
index bfbd075b84..5f947104b9 100644
--- a/packages/mysql/Makefile
+++ b/packages/mysql/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/ncurses/Makefile b/packages/ncurses/Makefile
index 6184323385..33853fbde2 100644
--- a/packages/ncurses/Makefile
+++ b/packages/ncurses/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/newt/Makefile b/packages/newt/Makefile
index f6ed6e3805..3e9037bc67 100644
--- a/packages/newt/Makefile
+++ b/packages/newt/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/numlib/Makefile b/packages/numlib/Makefile
index 844185d8f1..89a8ff1638 100644
--- a/packages/numlib/Makefile
+++ b/packages/numlib/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/nvapi/Makefile b/packages/nvapi/Makefile
index 55b8e1f513..109d58f8bf 100644
--- a/packages/nvapi/Makefile
+++ b/packages/nvapi/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/objcrtl/Makefile b/packages/objcrtl/Makefile
index 8e95e058bc..bdcf0a0127 100644
--- a/packages/objcrtl/Makefile
+++ b/packages/objcrtl/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/odata/Makefile b/packages/odata/Makefile
index e8cd4faa11..a8f3f61a78 100644
--- a/packages/odata/Makefile
+++ b/packages/odata/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/odbc/Makefile b/packages/odbc/Makefile
index 0e56f08977..47a97e54f8 100644
--- a/packages/odbc/Makefile
+++ b/packages/odbc/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/oggvorbis/Makefile b/packages/oggvorbis/Makefile
index 862af4dfc6..0398174795 100644
--- a/packages/oggvorbis/Makefile
+++ b/packages/oggvorbis/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/openal/Makefile b/packages/openal/Makefile
index 02d87687ec..cc997fe4d6 100644
--- a/packages/openal/Makefile
+++ b/packages/openal/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/opencl/Makefile b/packages/opencl/Makefile
index 6ce69ef4c3..32ed837453 100644
--- a/packages/opencl/Makefile
+++ b/packages/opencl/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/opengl/Makefile b/packages/opengl/Makefile
index b370c7a3cb..6cc1b87097 100644
--- a/packages/opengl/Makefile
+++ b/packages/opengl/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/opengles/Makefile b/packages/opengles/Makefile
index 29c3d17102..042675618b 100644
--- a/packages/opengles/Makefile
+++ b/packages/opengles/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/openssl/Makefile b/packages/openssl/Makefile
index 371d538467..db15c5c340 100644
--- a/packages/openssl/Makefile
+++ b/packages/openssl/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/oracle/Makefile b/packages/oracle/Makefile
index f84542684e..5ccb190772 100644
--- a/packages/oracle/Makefile
+++ b/packages/oracle/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/os2units/Makefile b/packages/os2units/Makefile
index ac8913e928..bb5b6c0756 100644
--- a/packages/os2units/Makefile
+++ b/packages/os2units/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/os4units/Makefile b/packages/os4units/Makefile
index 523fbb89cc..ee70199133 100644
--- a/packages/os4units/Makefile
+++ b/packages/os4units/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/os4units/src/cybergraphics.pas b/packages/os4units/src/cybergraphics.pas
index 995dcef99a..6d4155cc2e 100644
--- a/packages/os4units/src/cybergraphics.pas
+++ b/packages/os4units/src/cybergraphics.pas
@@ -189,12 +189,13 @@ function WritePixelArrayAlpha(Src: APTR; SrcX, SrcY, SrcMod: LongInt; Rp: PRastP
procedure BltTemplateAlpha(SrcTemplate: APTR; SrcX, SrcY: LongInt; Rp: PRastPort; DestX, DestY: LongInt; Width, Height: LongWord); syscall ICyberGfx 232;
// Functions and procedures with array of const go here
-function AllocCModeListTags(const ModeListTags: array of PtrUInt): PList;
-function BestCModeIDTags(const BestModeIDTags: array of PtrUInt): LongWord;
-procedure CVideoCtrlTags(ViewPort: PViewPort; const TagList: array of PtrUInt);
-procedure DoCDrawMethodTags(Hook: PHook; a1arg: PRastPort; const TagList: array of PtrUInt);
-function LockBitMapTags(BitMap: APTR; const TagList: array of PtrUInt): APTR;
-procedure UnLockBitMapTags(Handle: APTR; const TagList: array of PtrUInt);
+function AllocCModeListTags(const ModeListTags: array of PtrUInt): PList; inline;
+function BestCModeIDTags(const BestModeIDTags: array of PtrUInt): LongWord; inline;
+function CModeRequestTags(ModeRequest: APTR; const ModeRequestTags : array of PtrUInt): LongWord; inline;
+procedure CVideoCtrlTags(ViewPort: PViewPort; const TagList: array of PtrUInt); inline;
+procedure DoCDrawMethodTags(Hook: PHook; a1arg: PRastPort; const TagList: array of PtrUInt); inline;
+function LockBitMapTags(BitMap: APTR; const TagList: array of PtrUInt): APTR; inline;
+procedure UnLockBitMapTags(Handle: APTR; const TagList: array of PtrUInt); inline;
function SHIFT_PIXFMT(fmt: LongInt): LongInt;
function DOWNSHIFT_PIXFMT(fmt: LongInt): LongInt;
@@ -212,6 +213,11 @@ begin
BestCModeIDTags := BestCModeIDTagList(@BestModeIDTags);
end;
+function CModeRequestTags(ModeRequest: APTR; const ModeRequestTags : array of PtrUInt): LongWord;
+begin
+ CModeRequestTags := CModeRequestTagList(ModeRequest, @ModeRequestTags);
+end;
+
procedure CVideoCtrlTags(ViewPort: PViewPort; const TagList: array of PtrUInt); inline;
begin
CVideoCtrlTagList(ViewPort, @TagList);
diff --git a/packages/palmunits/Makefile b/packages/palmunits/Makefile
index c4f5be6f8b..b71c08fcd7 100644
--- a/packages/palmunits/Makefile
+++ b/packages/palmunits/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/pasjpeg/Makefile b/packages/pasjpeg/Makefile
index cc5ce4d15b..203a6d263b 100644
--- a/packages/pasjpeg/Makefile
+++ b/packages/pasjpeg/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/pastojs/Makefile b/packages/pastojs/Makefile
index 54947ff8c8..694900d742 100644
--- a/packages/pastojs/Makefile
+++ b/packages/pastojs/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/pastojs/src/fppas2js.pp b/packages/pastojs/src/fppas2js.pp
index bb479e22f8..21498b9f86 100644
--- a/packages/pastojs/src/fppas2js.pp
+++ b/packages/pastojs/src/fppas2js.pp
@@ -2159,6 +2159,7 @@ type
AContext: TConvertContext): TJSElement; virtual;
Function CreateRTTIMemberProperty(Members: TFPList; Index: integer;
AContext: TConvertContext): TJSElement; virtual;
+ Procedure CreateRTTIAnonymous(El: TPasType; AContext: TConvertContext); virtual; // needed by precompiled files from 2.0.0
Function CreateRTTIMembers(El: TPasMembersType; Src: TJSSourceElements;
FuncContext: TFunctionContext; MembersSrc: TJSSourceElements;
MembersFuncContext: TFunctionContext; RTTIExpr: TJSElement;
@@ -8182,7 +8183,7 @@ Var
HasImplUsesClause, ok, NeedRTLCheckVersion: Boolean;
Prg: TPasProgram;
Lib: TPasLibrary;
- AssignSt: TJSSimpleAssignStatement;
+ ImplFuncAssignSt: TJSSimpleAssignStatement;
IntfSecCtx: TInterfaceSectionContext;
ModScope: TPas2JSModuleScope;
begin
@@ -8289,10 +8290,10 @@ begin
ImplFunc:=CreateImplementationSection(El,IntfSecCtx);
// add $mod.$implcode = ImplFunc;
- AssignSt:=TJSSimpleAssignStatement(CreateElement(TJSSimpleAssignStatement,El));
- AssignSt.LHS:=CreateMemberExpression([ModVarName,GetBIName(pbivnImplCode)]);
- AssignSt.Expr:=ImplFunc;
- AddToSourceElements(Src,AssignSt);
+ ImplFuncAssignSt:=TJSSimpleAssignStatement(CreateElement(TJSSimpleAssignStatement,El));
+ ImplFuncAssignSt.LHS:=CreateMemberExpression([ModVarName,GetBIName(pbivnImplCode)]);
+ ImplFuncAssignSt.Expr:=ImplFunc;
+ AddToSourceElements(Src,ImplFuncAssignSt);
// append initialization section
CreateInitSection(El,Src,IntfSecCtx);
@@ -8304,7 +8305,7 @@ begin
// remove unneeded $impl from interface
RemoveFromSourceElements(Src,ImplVarSt);
// remove unneeded $mod.$implcode = function(){}
- RemoveFromSourceElements(Src,AssignSt);
+ RemoveFromSourceElements(Src,ImplFuncAssignSt);
HasImplUsesClause:=(El.ImplementationSection<>nil)
and (length(El.ImplementationSection.UsesClause)>0);
end
@@ -19963,6 +19964,23 @@ var
ObjLit.Expr:=JS;
end;
+ function VarTypeInfoAlreadyCreated(VarType: TPasType): boolean;
+ var
+ i: Integer;
+ PrevMember: TPasElement;
+ begin
+ i:=Index-1;
+ while (i>=0) do
+ begin
+ PrevMember:=TPasElement(Members[i]);
+ if (PrevMember is TPasVariable) and (TPasVariable(PrevMember).VarType=VarType)
+ and IsElementUsed(PrevMember) then
+ exit(true);
+ dec(i);
+ end;
+ Result:=false;
+ end;
+
var
JSTypeInfo: TJSElement;
aName: String;
@@ -19975,7 +19993,10 @@ begin
V:=TPasVariable(Members[Index]);
VarType:=V.VarType;
if (VarType<>nil) and (VarType.Name='') then
- RaiseNotSupported(VarType,AContext,20210223022919);
+ begin
+ if not VarTypeInfoAlreadyCreated(VarType) then
+ CreateRTTIAnonymous(VarType,AContext); // only needed by precompiled files from 2.0.0
+ end;
JSTypeInfo:=CreateTypeInfoRef(VarType,AContext,V);
OptionsEl:=nil;
@@ -20293,6 +20314,37 @@ begin
end;
end;
+procedure TPasToJSConverter.CreateRTTIAnonymous(El: TPasType;
+ AContext: TConvertContext);
+// if El has any anonymous types, create the RTTI
+var
+ C: TClass;
+ JS: TJSElement;
+ GlobalCtx: TFunctionContext;
+ Src: TJSSourceElements;
+begin
+ if El.Name<>'' then
+ RaiseNotSupported(El,AContext,20170905162324,'inconsistency');
+
+ GlobalCtx:=AContext.GetGlobalFunc;
+ if GlobalCtx=nil then
+ RaiseNotSupported(El,AContext,20181229130835);
+ if not (GlobalCtx.JSElement is TJSSourceElements) then
+ begin
+ {$IFDEF VerbosePas2JS}
+ writeln('TPasToJSConverter.CreateRTTIAnonymous GlobalCtx=',GetObjName(GlobalCtx),' JSElement=',GetObjName(GlobalCtx.JSElement));
+ {$ENDIF}
+ RaiseNotSupported(El,AContext,20181229130926);
+ end;
+ Src:=TJSSourceElements(GlobalCtx.JSElement);
+ C:=El.ClassType;
+ if C=TPasArrayType then
+ begin
+ JS:=ConvertArrayType(TPasArrayType(El),AContext);
+ AddToSourceElements(Src,JS);
+ end;
+end;
+
function TPasToJSConverter.CreateRTTIMembers(El: TPasMembersType;
Src: TJSSourceElements; FuncContext: TFunctionContext;
MembersSrc: TJSSourceElements; MembersFuncContext: TFunctionContext;
@@ -27026,8 +27078,8 @@ begin
for i:=0 to ElRefList.Count-1 do
begin
El:=TPasElement(ElRefList[i]);
- if ElNeedsGlobalAlias(El) then
- CreateGlobalElPath(El,SectionContext);
+ // Note: they are all needed by precompiled code, do not check ElNeedsGlobalAlias
+ CreateGlobalElPath(El,SectionContext);
end;
end;
diff --git a/packages/pastojs/src/pas2jsfiler.pp b/packages/pastojs/src/pas2jsfiler.pp
index 4a28a96f78..6e9660b891 100644
--- a/packages/pastojs/src/pas2jsfiler.pp
+++ b/packages/pastojs/src/pas2jsfiler.pp
@@ -46,8 +46,6 @@ Works:
- gzipped json
- write final switches
- srcmaps for precompiled js
-
-ToDo:
- generics:
- generic proc bodies are stored with all elements, but without resolver customdata
- specializations are stored like external elements
@@ -70,8 +68,9 @@ ToDo:
- TPCUReader.ReadExternalSpecialized
-
- TPCUReader.ReadSpecializeType reads a TPasSpecializeType and creates specialized type
- - TPCUReader.ReadInlineSpecializeExpr: ToDo create specialized type
+ - TPCUReader.ReadInlineSpecializeExpr: create specialized type
+Todo:
- store used GUIDs
- distinguish reader errors in fatal and error
- when pcu is bad, unload and use src
diff --git a/packages/paszlib/Makefile b/packages/paszlib/Makefile
index 434ab3ed42..30df0dc4ce 100644
--- a/packages/paszlib/Makefile
+++ b/packages/paszlib/Makefile
@@ -631,10 +631,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/pcap/Makefile b/packages/pcap/Makefile
index 878d8873ae..9121b2fbeb 100644
--- a/packages/pcap/Makefile
+++ b/packages/pcap/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/postgres/Makefile b/packages/postgres/Makefile
index 337db84ff9..8a69dd66b4 100644
--- a/packages/postgres/Makefile
+++ b/packages/postgres/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/proj4/Makefile b/packages/proj4/Makefile
index 36a37a776a..5fc3723f82 100644
--- a/packages/proj4/Makefile
+++ b/packages/proj4/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/ptc/Makefile b/packages/ptc/Makefile
index 392814fc85..cdfca54111 100644
--- a/packages/ptc/Makefile
+++ b/packages/ptc/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/pthreads/Makefile b/packages/pthreads/Makefile
index 3b1a52e41f..cb7a2b1bac 100644
--- a/packages/pthreads/Makefile
+++ b/packages/pthreads/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/pxlib/Makefile b/packages/pxlib/Makefile
index 5a81bd03e1..aa7c14cc30 100644
--- a/packages/pxlib/Makefile
+++ b/packages/pxlib/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/qlunits/Makefile b/packages/qlunits/Makefile
index d8978a7b3b..7f682468c2 100644
--- a/packages/qlunits/Makefile
+++ b/packages/qlunits/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/regexpr/Makefile b/packages/regexpr/Makefile
index 07777c8d81..8e7041fcb8 100644
--- a/packages/regexpr/Makefile
+++ b/packages/regexpr/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/rexx/Makefile b/packages/rexx/Makefile
index 28521bded2..e60072c0e6 100644
--- a/packages/rexx/Makefile
+++ b/packages/rexx/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/rtl-console/Makefile b/packages/rtl-console/Makefile
index db813f8b71..9a5920e264 100644
--- a/packages/rtl-console/Makefile
+++ b/packages/rtl-console/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/rtl-extra/Makefile b/packages/rtl-extra/Makefile
index 62b4e87d51..372e84b0f3 100644
--- a/packages/rtl-extra/Makefile
+++ b/packages/rtl-extra/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/rtl-generics/Makefile b/packages/rtl-generics/Makefile
index ef6ecfb0a9..29014eda29 100644
--- a/packages/rtl-generics/Makefile
+++ b/packages/rtl-generics/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/rtl-objpas/Makefile b/packages/rtl-objpas/Makefile
index 312b0f0d92..38a5270d0e 100644
--- a/packages/rtl-objpas/Makefile
+++ b/packages/rtl-objpas/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/rtl-unicode/Makefile b/packages/rtl-unicode/Makefile
index 7493722875..d98499a80f 100644
--- a/packages/rtl-unicode/Makefile
+++ b/packages/rtl-unicode/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/sdl/Makefile b/packages/sdl/Makefile
index 6428cc6794..b950c30d0a 100644
--- a/packages/sdl/Makefile
+++ b/packages/sdl/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/sndfile/Makefile b/packages/sndfile/Makefile
index 1a4a1155cc..15747ffed4 100644
--- a/packages/sndfile/Makefile
+++ b/packages/sndfile/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/sqlite/Makefile b/packages/sqlite/Makefile
index 6669ee969e..2ed9f7125f 100644
--- a/packages/sqlite/Makefile
+++ b/packages/sqlite/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/svgalib/Makefile b/packages/svgalib/Makefile
index 395d0078c8..1b971c14ae 100644
--- a/packages/svgalib/Makefile
+++ b/packages/svgalib/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/symbolic/Makefile b/packages/symbolic/Makefile
index 5bcfa8bc42..21a657084d 100644
--- a/packages/symbolic/Makefile
+++ b/packages/symbolic/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/syslog/Makefile b/packages/syslog/Makefile
index aa42e6abe1..fd4f100240 100644
--- a/packages/syslog/Makefile
+++ b/packages/syslog/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/tcl/Makefile b/packages/tcl/Makefile
index 0d7d3173df..db068bcc99 100644
--- a/packages/tcl/Makefile
+++ b/packages/tcl/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/tosunits/Makefile b/packages/tosunits/Makefile
index e4625e9dee..a6e9d0e52d 100644
--- a/packages/tosunits/Makefile
+++ b/packages/tosunits/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/tplylib/Makefile b/packages/tplylib/Makefile
index e891f2ff5a..41775fee7f 100644
--- a/packages/tplylib/Makefile
+++ b/packages/tplylib/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/univint/Makefile b/packages/univint/Makefile
index 5a77b2e883..be21d2cb8b 100644
--- a/packages/univint/Makefile
+++ b/packages/univint/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/unixutil/Makefile b/packages/unixutil/Makefile
index 87dcc3a621..a4c34046d8 100644
--- a/packages/unixutil/Makefile
+++ b/packages/unixutil/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/unzip/Makefile b/packages/unzip/Makefile
index 2187a81c6c..2085302393 100644
--- a/packages/unzip/Makefile
+++ b/packages/unzip/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/users/Makefile b/packages/users/Makefile
index ed995e9ee8..437987fd50 100644
--- a/packages/users/Makefile
+++ b/packages/users/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/utmp/Makefile b/packages/utmp/Makefile
index f38a4a3975..630b346429 100644
--- a/packages/utmp/Makefile
+++ b/packages/utmp/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/uuid/Makefile b/packages/uuid/Makefile
index 44b5faada9..2793702e87 100644
--- a/packages/uuid/Makefile
+++ b/packages/uuid/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/vcl-compat/Makefile b/packages/vcl-compat/Makefile
index 58ebb95aa4..d8866f64d3 100644
--- a/packages/vcl-compat/Makefile
+++ b/packages/vcl-compat/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/webidl/Makefile b/packages/webidl/Makefile
index 2bac1d28df..4a7b74a6d3 100644
--- a/packages/webidl/Makefile
+++ b/packages/webidl/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/winceunits/Makefile b/packages/winceunits/Makefile
index b253023d72..0084a2bab6 100644
--- a/packages/winceunits/Makefile
+++ b/packages/winceunits/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/winunits-base/Makefile b/packages/winunits-base/Makefile
index 00fd2a33aa..9fb3105ada 100644
--- a/packages/winunits-base/Makefile
+++ b/packages/winunits-base/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/winunits-jedi/Makefile b/packages/winunits-jedi/Makefile
index 9164f76b1d..6db40dc287 100644
--- a/packages/winunits-jedi/Makefile
+++ b/packages/winunits-jedi/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/x11/Makefile b/packages/x11/Makefile
index 5565ba36f9..729041b03b 100644
--- a/packages/x11/Makefile
+++ b/packages/x11/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/xforms/Makefile b/packages/xforms/Makefile
index b9cf3bdf6e..d1357939ce 100644
--- a/packages/xforms/Makefile
+++ b/packages/xforms/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/zlib/Makefile b/packages/zlib/Makefile
index 2ab1570978..48ea001ad5 100644
--- a/packages/zlib/Makefile
+++ b/packages/zlib/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/packages/zorba/Makefile b/packages/zorba/Makefile
index 2863d38b2c..a57ad58bf1 100644
--- a/packages/zorba/Makefile
+++ b/packages/zorba/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/Makefile b/rtl/Makefile
index fd5ad7b82d..f674611cb9 100644
--- a/rtl/Makefile
+++ b/rtl/Makefile
@@ -912,10 +912,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
@@ -1523,7 +1531,7 @@ ifdef CREATESHARED
override FPCOPT+=-Cg
endif
ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),)
-ifneq ($(findstring $(CPU_TARGET),x86_64 mips mipsel),)
+ifneq ($(findstring $(CPU_TARGET),x86_64 mips mipsel riscv64),)
override FPCOPT+=-Cg
endif
endif
diff --git a/rtl/aix/Makefile b/rtl/aix/Makefile
index b42a8b6f8b..fcf9c0b289 100644
--- a/rtl/aix/Makefile
+++ b/rtl/aix/Makefile
@@ -2200,10 +2200,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/amiga/Makefile b/rtl/amiga/Makefile
index b2aa554816..abefef6e2e 100644
--- a/rtl/amiga/Makefile
+++ b/rtl/amiga/Makefile
@@ -2514,10 +2514,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/android/Makefile b/rtl/android/Makefile
index a821ab7477..588279ec22 100644
--- a/rtl/android/Makefile
+++ b/rtl/android/Makefile
@@ -2893,7 +2893,7 @@ endif
ifeq ($(FULL_TARGET),z80-amstradcpc)
override COMPILER_TARGETDIR+=.
endif
-override SHARED_LIBUNITS=$(SYSTEMUNIT) objpas strings dos unix baseunix unixtype unixutil sysutils typinfo math $(CPU_UNITS) getopts errors sockets sortbase classes fgl sysconst rtlconsts
+override SHARED_LIBUNITS=$(SYSTEMUNIT) objpas strings dos unix baseunix unixtype unixutil sysutils typinfo math $(CPU_UNITS) getopts errors sockets sortbase classes fgl sysconst rtlconsts
ifdef REQUIRE_UNITSDIR
override UNITSDIR+=$(REQUIRE_UNITSDIR)
endif
@@ -3143,10 +3143,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/android/jvm/Makefile b/rtl/android/jvm/Makefile
index 8f94b9a9af..6a42f30a57 100644
--- a/rtl/android/jvm/Makefile
+++ b/rtl/android/jvm/Makefile
@@ -1556,10 +1556,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/aros/Makefile b/rtl/aros/Makefile
index 8cd0a2f9b5..0c0b595b58 100644
--- a/rtl/aros/Makefile
+++ b/rtl/aros/Makefile
@@ -2508,10 +2508,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/atari/Makefile b/rtl/atari/Makefile
index 259c023e2d..1ba07a7167 100644
--- a/rtl/atari/Makefile
+++ b/rtl/atari/Makefile
@@ -2502,10 +2502,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/beos/Makefile b/rtl/beos/Makefile
index dd8d179a88..a3a36ff2e2 100644
--- a/rtl/beos/Makefile
+++ b/rtl/beos/Makefile
@@ -2817,10 +2817,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/darwin/Makefile b/rtl/darwin/Makefile
index db0cb98a43..5240dfc177 100644
--- a/rtl/darwin/Makefile
+++ b/rtl/darwin/Makefile
@@ -2204,10 +2204,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/dragonfly/Makefile b/rtl/dragonfly/Makefile
index 60af0f32be..7f56af4881 100644
--- a/rtl/dragonfly/Makefile
+++ b/rtl/dragonfly/Makefile
@@ -2514,10 +2514,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/embedded/Makefile b/rtl/embedded/Makefile
index acb5650df5..a27dfb032d 100644
--- a/rtl/embedded/Makefile
+++ b/rtl/embedded/Makefile
@@ -2041,10 +2041,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/emx/Makefile b/rtl/emx/Makefile
index 4b87a872a9..95420fcce3 100644
--- a/rtl/emx/Makefile
+++ b/rtl/emx/Makefile
@@ -2506,10 +2506,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/freebsd/Makefile b/rtl/freebsd/Makefile
index 68c7398d66..471da7dbb1 100644
--- a/rtl/freebsd/Makefile
+++ b/rtl/freebsd/Makefile
@@ -2519,10 +2519,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/freertos/Makefile b/rtl/freertos/Makefile
index c861506a2e..3d2eb2c559 100644
--- a/rtl/freertos/Makefile
+++ b/rtl/freertos/Makefile
@@ -2355,10 +2355,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/gba/Makefile b/rtl/gba/Makefile
index b15a524c4e..1dd205578d 100644
--- a/rtl/gba/Makefile
+++ b/rtl/gba/Makefile
@@ -2188,10 +2188,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/go32v2/Makefile b/rtl/go32v2/Makefile
index ac215f6715..a728761e3a 100644
--- a/rtl/go32v2/Makefile
+++ b/rtl/go32v2/Makefile
@@ -2507,10 +2507,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/haiku/Makefile b/rtl/haiku/Makefile
index b71195983d..435bb6e89b 100644
--- a/rtl/haiku/Makefile
+++ b/rtl/haiku/Makefile
@@ -2825,10 +2825,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/java/Makefile b/rtl/java/Makefile
index 0bf77b9247..97299656c6 100644
--- a/rtl/java/Makefile
+++ b/rtl/java/Makefile
@@ -1560,10 +1560,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/linux/Makefile b/rtl/linux/Makefile
index c8bcf0f398..7f5531f0b0 100644
--- a/rtl/linux/Makefile
+++ b/rtl/linux/Makefile
@@ -382,7 +382,7 @@ SYSINIT_UNITS=si_prc si_dll si_c
endif
ifeq ($(ARCH),riscv64)
override LOADERS=
-SYSINIT_UNITS=si_prc si_dll si_c
+SYSINIT_UNITS=si_prc si_dll si_c si_g
endif
ifeq ($(ARCH),mipsel)
override FPCOPT+=-Ur
@@ -3177,10 +3177,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
@@ -3788,7 +3796,7 @@ ifdef CREATESHARED
override FPCOPT+=-Cg
endif
ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),)
-ifneq ($(findstring $(CPU_TARGET),x86_64 mips mipsel),)
+ifneq ($(findstring $(CPU_TARGET),x86_64 mips mipsel riscv64),)
override FPCOPT+=-Cg
endif
endif
diff --git a/rtl/linux/Makefile.fpc b/rtl/linux/Makefile.fpc
index 310d467d84..fca8b2ef55 100644
--- a/rtl/linux/Makefile.fpc
+++ b/rtl/linux/Makefile.fpc
@@ -98,7 +98,7 @@ endif
ifeq ($(ARCH),riscv64)
override LOADERS=
-SYSINIT_UNITS=si_prc si_dll si_c
+SYSINIT_UNITS=si_prc si_dll si_c si_g
endif
# mipsel reuses mips files by including so some file names exist
diff --git a/rtl/linux/riscv64/si_c.inc b/rtl/linux/riscv64/si_c.inc
index 942372e934..87dcd050b6 100644
--- a/rtl/linux/riscv64/si_c.inc
+++ b/rtl/linux/riscv64/si_c.inc
@@ -16,11 +16,7 @@
******************************************************************************}
var
- dlexitproc : pointer;
-
-var
BSS_START: record end; external name '__bss_start';
- STACK_PTR: record end; external name '__stkptr';
{ as we do not call these procedures directly, calling conventions do not matter and
even if we did, we use c calling conventions anyways }
@@ -53,7 +49,7 @@ procedure _FPC_proc_start; assembler; nostackframe; public name '_start';
.option push
.option norelax
.L1:
- auipc gp, %pcrel_hi(BSS_START+0x7f8)
+ auipc gp, %pcrel_hi(BSS_START+0x800)
addi gp, gp, %pcrel_lo(.L1)
.option pop
@@ -89,7 +85,7 @@ procedure _FPC_proc_haltproc(e:longint); cdecl; public name '_haltproc';
.option push
.option norelax
.L1:
- auipc gp, %pcrel_hi(BSS_START+0x7f8)
+ auipc gp, %pcrel_hi(BSS_START+0x800)
addi gp, gp, %pcrel_lo(.L1)
.option pop
jalr x0, x1
diff --git a/rtl/linux/riscv64/si_g.inc b/rtl/linux/riscv64/si_g.inc
new file mode 100644
index 0000000000..64131f8948
--- /dev/null
+++ b/rtl/linux/riscv64/si_g.inc
@@ -0,0 +1,106 @@
+{
+ This file is part of the Free Pascal run time library.
+ Copyright (c) 2019 by Jeppe Johansen.
+
+ See the file COPYING.FPC, included in this distribution,
+ for details about the copyright.
+
+ 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.
+
+ **********************************************************************}
+
+{******************************************************************************
+ Process start/halt
+ ******************************************************************************}
+{$linklib c}
+{$linklib gcc}
+
+var
+ BSS_START: record end; external name '__bss_start';
+ _etext: pointer; external name '_etext';
+
+{ as we do not call these procedures directly, calling conventions do not matter and
+ even if we did, we use c calling conventions anyways }
+procedure __libc_csu_init; external name '__libc_csu_init';
+procedure __libc_csu_fini; external name '__libc_csu_fini';
+
+procedure libc_start_main(main: TProcedure; argc: ptruint; argv: ppchar; init, fini, rtld_fini: TProcedure; stack_end: pointer); cdecl; external name '__libc_start_main';
+procedure libc_exit(code: ptruint); cdecl; external name 'exit';
+
+procedure monstartup(low_pc,high_pc: pointer); cdecl; external;
+procedure _mcleanup; cdecl; external;
+procedure atexit(p: pointer); cdecl; external;
+
+procedure _FPC_rv_enter(at_exit: TProcedure; sp: pptruint);
+ var
+ argc: ptruint;
+ argv: ppchar;
+ begin
+ argc:=sp[0];
+ argv:=@sp[1];
+
+ initialstkptr:=sp;
+ operatingsystem_parameter_argc:=argc;
+ operatingsystem_parameter_argv:=argv;
+ operatingsystem_parameter_envp:=@sp[argc+2];
+
+ monstartup(@_FPC_rv_enter,@_etext);
+ atexit(@_mcleanup);
+
+ libc_start_main(@PascalMain, argc, argv, @__libc_csu_init, @__libc_csu_fini, at_exit, sp);
+ end;
+
+
+procedure _FPC_proc_start; assembler; nostackframe; public name '_start';
+ asm
+ { set up GP }
+ .option push
+ .option norelax
+.L1:
+ auipc gp, %pcrel_hi(BSS_START+0x800)
+ addi gp, gp, %pcrel_lo(.L1)
+ .option pop
+
+ { Initialise FP to zero }
+ addi fp, x0, 0
+
+ { atexit is in a0 }
+ addi a1, sp, 0
+ jal x1, _FPC_rv_enter
+ end;
+
+
+procedure _FPC_rv_exit(e:longint); assembler; nostackframe;
+ asm
+ addi a7, x0, 94
+ ecall
+ end;
+
+
+procedure _FPC_proc_haltproc(e:longint); cdecl; public name '_haltproc';
+ begin
+ while true do
+ begin
+ libc_exit(e);
+ _FPC_rv_exit(e);
+ end;
+ end;
+
+
+ procedure initgp; assembler; nostackframe;
+ asm
+ .Linitgp:
+ .option push
+ .option norelax
+ .L1:
+ auipc gp, %pcrel_hi(BSS_START+0x800)
+ addi gp, gp, %pcrel_lo(.L1)
+ .option pop
+ jalr x0, x1
+
+ .section ".preinit_array","aw"
+ .dc.a .Linitgp
+ .text
+ end;
diff --git a/rtl/macos/Makefile b/rtl/macos/Makefile
index 5681fbefaf..6634aa920d 100644
--- a/rtl/macos/Makefile
+++ b/rtl/macos/Makefile
@@ -2191,10 +2191,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/morphos/Makefile b/rtl/morphos/Makefile
index 76951f4959..2c21fb610e 100644
--- a/rtl/morphos/Makefile
+++ b/rtl/morphos/Makefile
@@ -2189,10 +2189,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/msdos/Makefile b/rtl/msdos/Makefile
index 742e6201cc..b644658c6f 100644
--- a/rtl/msdos/Makefile
+++ b/rtl/msdos/Makefile
@@ -2189,10 +2189,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/msxdos/Makefile b/rtl/msxdos/Makefile
index e39ff445a4..c462acc711 100644
--- a/rtl/msxdos/Makefile
+++ b/rtl/msxdos/Makefile
@@ -1874,10 +1874,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/nativent/Makefile b/rtl/nativent/Makefile
index 70ef9d1b94..8f7148bed8 100644
--- a/rtl/nativent/Makefile
+++ b/rtl/nativent/Makefile
@@ -2197,10 +2197,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/nds/Makefile b/rtl/nds/Makefile
index 3199fa41d2..c215edb37d 100644
--- a/rtl/nds/Makefile
+++ b/rtl/nds/Makefile
@@ -2188,10 +2188,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/netbsd/Makefile b/rtl/netbsd/Makefile
index e9d7e101ec..b6d37d8b65 100644
--- a/rtl/netbsd/Makefile
+++ b/rtl/netbsd/Makefile
@@ -2516,10 +2516,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/netware/Makefile b/rtl/netware/Makefile
index 9e7ed8f7b5..98de96a64b 100644
--- a/rtl/netware/Makefile
+++ b/rtl/netware/Makefile
@@ -2510,10 +2510,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/netwlibc/Makefile b/rtl/netwlibc/Makefile
index 501176d8f7..981ba89934 100644
--- a/rtl/netwlibc/Makefile
+++ b/rtl/netwlibc/Makefile
@@ -2503,10 +2503,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/openbsd/Makefile b/rtl/openbsd/Makefile
index 20f26e26e4..ff9a8e5bf5 100644
--- a/rtl/openbsd/Makefile
+++ b/rtl/openbsd/Makefile
@@ -2521,10 +2521,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/os2/Makefile b/rtl/os2/Makefile
index a4c66cfa71..1abba18e7a 100644
--- a/rtl/os2/Makefile
+++ b/rtl/os2/Makefile
@@ -2506,10 +2506,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/palmos/Makefile b/rtl/palmos/Makefile
index b649c56ed6..24dc3ab881 100644
--- a/rtl/palmos/Makefile
+++ b/rtl/palmos/Makefile
@@ -2187,10 +2187,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/solaris/Makefile b/rtl/solaris/Makefile
index 623b1989cd..159a83f1d2 100644
--- a/rtl/solaris/Makefile
+++ b/rtl/solaris/Makefile
@@ -2200,10 +2200,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/symbian/Makefile b/rtl/symbian/Makefile
index 5eccbbe1c8..9c0a7643ab 100644
--- a/rtl/symbian/Makefile
+++ b/rtl/symbian/Makefile
@@ -1870,10 +1870,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/unix/cthreads.pp b/rtl/unix/cthreads.pp
index fe7ce7cfc9..58eab49fc1 100644
--- a/rtl/unix/cthreads.pp
+++ b/rtl/unix/cthreads.pp
@@ -116,41 +116,69 @@ Type PINTRTLEvent = ^TINTRTLEvent;
procedure CInitThreadvar(var offset : dword;size : dword);
begin
{$ifdef cpusparc}
+ {$define threadvarblocksize_set}
threadvarblocksize:=align(threadvarblocksize,16);
{$endif cpusparc}
{$ifdef cpusparc64}
+ {$define threadvarblocksize_set}
threadvarblocksize:=align(threadvarblocksize,16);
{$endif cpusparc64}
{$ifdef cpupowerpc}
+ {$define threadvarblocksize_set}
threadvarblocksize:=align(threadvarblocksize,8);
{$endif cpupowerc}
{$ifdef cpui386}
+ {$define threadvarblocksize_set}
threadvarblocksize:=align(threadvarblocksize,8);
{$endif cpui386}
{$ifdef cpuarm}
+ {$define threadvarblocksize_set}
threadvarblocksize:=align(threadvarblocksize,4);
{$endif cpuarm}
{$ifdef cpum68k}
+ {$define threadvarblocksize_set}
threadvarblocksize:=align(threadvarblocksize,2);
{$endif cpum68k}
{$ifdef cpux86_64}
+ {$define threadvarblocksize_set}
threadvarblocksize:=align(threadvarblocksize,16);
{$endif cpux86_64}
{$ifdef cpupowerpc64}
+ {$define threadvarblocksize_set}
threadvarblocksize:=align(threadvarblocksize,16);
{$endif cpupowerpc64}
{$ifdef cpuaarch64}
+ {$define threadvarblocksize_set}
threadvarblocksize:=align(threadvarblocksize,16);
{$endif cpuaarch64}
+ {$ifdef cpuriscv}
+ {$define threadvarblocksize_set}
+ threadvarblocksize:=align(threadvarblocksize,16);
+ {$endif cpuriscv}
+
+ {$ifdef cpumips}
+ {$define threadvarblocksize_set}
+ threadvarblocksize:=align(threadvarblocksize,16);
+ {$endif cpumips}
+
+ {$ifdef cpuxtensa}
+ {$define threadvarblocksize_set}
+ threadvarblocksize:=align(threadvarblocksize,16);
+ {$endif cpuxtensa}
+
+ {$ifndef threadvarblocksize_set}
+ {$error threadvarblocksize must be set! }
+ {$endif threadvarblocksize_set}
+
offset:=threadvarblocksize;
inc(threadvarblocksize,size);
diff --git a/rtl/watcom/Makefile b/rtl/watcom/Makefile
index 9a8bd17a86..0d6bf3300f 100644
--- a/rtl/watcom/Makefile
+++ b/rtl/watcom/Makefile
@@ -2505,10 +2505,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/wii/Makefile b/rtl/wii/Makefile
index 589103d26a..25f8f2713d 100644
--- a/rtl/wii/Makefile
+++ b/rtl/wii/Makefile
@@ -1873,10 +1873,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/win16/Makefile b/rtl/win16/Makefile
index a8c7490a16..53c74158fd 100644
--- a/rtl/win16/Makefile
+++ b/rtl/win16/Makefile
@@ -1874,10 +1874,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/win32/Makefile b/rtl/win32/Makefile
index 31d8b8dcf6..78237537b0 100644
--- a/rtl/win32/Makefile
+++ b/rtl/win32/Makefile
@@ -2503,10 +2503,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/win64/Makefile b/rtl/win64/Makefile
index c7f4201f3a..809855dc2d 100644
--- a/rtl/win64/Makefile
+++ b/rtl/win64/Makefile
@@ -2507,10 +2507,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/wince/Makefile b/rtl/wince/Makefile
index daddf45623..0555280094 100644
--- a/rtl/wince/Makefile
+++ b/rtl/wince/Makefile
@@ -1876,10 +1876,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/rtl/zxspectrum/Makefile b/rtl/zxspectrum/Makefile
index c24011ad87..98c64fb8bc 100644
--- a/rtl/zxspectrum/Makefile
+++ b/rtl/zxspectrum/Makefile
@@ -1559,10 +1559,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/tests/Makefile b/tests/Makefile
index 5ba9988b9c..a0debfe836 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -912,10 +912,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/tests/test/cg/obj/linux/riscv64/cpptcl1.o b/tests/test/cg/obj/linux/riscv64/cpptcl1.o
index ed87ce332c..516e62dce3 100644
--- a/tests/test/cg/obj/linux/riscv64/cpptcl1.o
+++ b/tests/test/cg/obj/linux/riscv64/cpptcl1.o
Binary files differ
diff --git a/tests/test/cg/obj/linux/riscv64/cpptcl2.o b/tests/test/cg/obj/linux/riscv64/cpptcl2.o
index a68a01df73..90082aff94 100644
--- a/tests/test/cg/obj/linux/riscv64/cpptcl2.o
+++ b/tests/test/cg/obj/linux/riscv64/cpptcl2.o
Binary files differ
diff --git a/tests/test/cg/obj/linux/riscv64/ctest.o b/tests/test/cg/obj/linux/riscv64/ctest.o
index eb33cb3d97..28d04474ff 100644
--- a/tests/test/cg/obj/linux/riscv64/ctest.o
+++ b/tests/test/cg/obj/linux/riscv64/ctest.o
Binary files differ
diff --git a/tests/test/cg/obj/linux/riscv64/tcext3.o b/tests/test/cg/obj/linux/riscv64/tcext3.o
index 65ac546a49..65a87df479 100644
--- a/tests/test/cg/obj/linux/riscv64/tcext3.o
+++ b/tests/test/cg/obj/linux/riscv64/tcext3.o
Binary files differ
diff --git a/tests/test/cg/obj/linux/riscv64/tcext4.o b/tests/test/cg/obj/linux/riscv64/tcext4.o
index d88800bc40..9b60368927 100644
--- a/tests/test/cg/obj/linux/riscv64/tcext4.o
+++ b/tests/test/cg/obj/linux/riscv64/tcext4.o
Binary files differ
diff --git a/tests/test/cg/obj/linux/riscv64/tcext5.o b/tests/test/cg/obj/linux/riscv64/tcext5.o
index 7331c3788d..af318ca626 100644
--- a/tests/test/cg/obj/linux/riscv64/tcext5.o
+++ b/tests/test/cg/obj/linux/riscv64/tcext5.o
Binary files differ
diff --git a/tests/test/cg/obj/linux/riscv64/tcext6.o b/tests/test/cg/obj/linux/riscv64/tcext6.o
index 580f242dda..a3a365394f 100644
--- a/tests/test/cg/obj/linux/riscv64/tcext6.o
+++ b/tests/test/cg/obj/linux/riscv64/tcext6.o
Binary files differ
diff --git a/tests/tstunits/Makefile b/tests/tstunits/Makefile
index d1c41669c9..93523e6836 100644
--- a/tests/tstunits/Makefile
+++ b/tests/tstunits/Makefile
@@ -1227,10 +1227,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/tests/utils/Makefile b/tests/utils/Makefile
index c1c6f12edb..fdf149bee4 100644
--- a/tests/utils/Makefile
+++ b/tests/utils/Makefile
@@ -1232,10 +1232,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/tests/utils/testsuite/Makefile b/tests/utils/testsuite/Makefile
index 23c67efe51..75924e7d76 100644
--- a/tests/utils/testsuite/Makefile
+++ b/tests/utils/testsuite/Makefile
@@ -1228,10 +1228,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/tests/webtbs/tw2242.pp b/tests/webtbs/tw2242.pp
index e99f415321..7ea094d6f6 100644
--- a/tests/webtbs/tw2242.pp
+++ b/tests/webtbs/tw2242.pp
@@ -8124,6 +8124,7 @@ s += chr(68);
s += chr(69);
s += chr(70);
s += chr(71);
+{$if not defined(cpuarm) and not defined(cpusparc) and not defined(cpuaarch64) and not defined(cpuriscv)}
s += chr(72);
s += chr(73);
s += chr(74);
@@ -8193,7 +8194,6 @@ s += chr(85);
s += chr(86);
s += chr(87);
s += chr(88);
-{$if not defined(cpuarm) and not defined(cpusparc) and not defined(cpuaarch64)}
s += chr(89);
s += chr(90);
s += chr(65);
@@ -13077,7 +13077,7 @@ s += chr(80);
s += chr(81);
s += chr(82);
s += chr(83);
-{$endif cpuarm or cpusparc}
+{$endif not defined(cpuarm) and not defined(cpusparc) and not defined(cpuaarch64) and not defined(cpuriscv)}
{$endif not fpc_pic}
writeln(s)
END.
diff --git a/utils/Makefile b/utils/Makefile
index 01b1c01ccb..66663047f9 100644
--- a/utils/Makefile
+++ b/utils/Makefile
@@ -616,10 +616,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/utils/debugsvr/Makefile b/utils/debugsvr/Makefile
index a3c7f6a1be..f85a359aa9 100644
--- a/utils/debugsvr/Makefile
+++ b/utils/debugsvr/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/utils/dxegen/Makefile b/utils/dxegen/Makefile
index b796a697b2..030a2afe97 100644
--- a/utils/dxegen/Makefile
+++ b/utils/dxegen/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/utils/fpcm/Makefile b/utils/fpcm/Makefile
index cc02fb9e37..51a11b8d4a 100644
--- a/utils/fpcm/Makefile
+++ b/utils/fpcm/Makefile
@@ -608,10 +608,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/utils/fpcm/fpcmake.inc b/utils/fpcm/fpcmake.inc
index f897955cfd..0525342e08 100644
--- a/utils/fpcm/fpcmake.inc
+++ b/utils/fpcm/fpcmake.inc
@@ -1,7 +1,7 @@
{$ifdef Delphi}
-const fpcmakeini : array[0..255] of string[240]=(
+const fpcmakeini : array[0..256] of string[240]=(
{$else Delphi}
-const fpcmakeini : array[0..255,1..240] of char=(
+const fpcmakeini : array[0..256,1..240] of char=(
{$endif Delphi}
';'#010+
'; Templates used by fpcmake to create a Makefile from Makefile.fpc'#010+
@@ -951,32 +951,40 @@ const fpcmakeini : array[0..255,1..240] of char=(
'ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)'#010+
'FPCMAKE_CROSSGCCOPT','=-mabi=32'#010+
'else'#010+
+ 'ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)'#010+
+ 'FPCMAKE_CROSSGCCOPT=-mabi=lp64'#010+
+ 'else'#010+
+ 'ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)'#010+
+ 'FPCMAKE_CROSSGCCOPT=-mabi=ilp32'#010+
+ 'else'#010+
'FPCMAKE_CROSSGCCOPT=-m32'#010+
'endif'#010+
'endif'#010+
'endif'#010+
+ 'endif',#010+
+ 'endif'#010+
'FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-l'+
'ibgcc-file-name`)'#010+
'endif'#010+
'endif'#010+
#010+
'ifndef FPCMAKEGCCLIBDIR'#010+
- 'FPCMAKEGCCLIBDIR:=$(shell dirname `gcc -print-libgcc-file','-name`)'#010+
+ 'FPCMAKEGCCLIBDIR:=$(shell dirname `gcc -print-libgcc-file-name`)'#010+
'endif'#010+
#010+
'# Try cross gcc'#010+
'ifndef GCCLIBDIR'#010+
- 'CROSSGCC=$(strip $(wildcard $(addsuffix /$(BINUTILSPREFIX)gcc$(SRCEXEE'+
- 'XT),$(SEARCHPATH))))'#010+
+ 'CRO','SSGCC=$(strip $(wildcard $(addsuffix /$(BINUTILSPREFIX)gcc$(SRCEX'+
+ 'EEXT),$(SEARCHPATH))))'#010+
'ifneq ($(CROSSGCC),)'#010+
'GCCLIBDIR:=$(shell dirname `$(CROSSGCC) $(CROSSGCCOPT) -print-libgcc-f'+
- 'ile-name`)',#010+
+ 'ile-name`)'#010+
'endif'#010+
'endif'#010+
'endif'#010+
'#ifeq($(OS_SOURCE),linux)'#010+
#010+
- 'ifdef inUnix'#010+
+ 'ifdef',' inUnix'#010+
'ifeq ($(OS_SOURCE),netbsd)'#010+
'OTHERLIBDIR:=/usr/pkg/lib'#010+
'endif'#010+
@@ -985,10 +993,10 @@ const fpcmakeini : array[0..255,1..240] of char=(
#010+
#010+
'[extensions]'#010+
- '#######################################################','#############'+
- '#'#010+
- '# Default extensions'#010+
'#####################################################################'#010+
+ '# Default extensions'#010+
+ '###############','#####################################################'+
+ '#'#010+
#010+
'# Default needed extensions (Go32v2,Linux)'#010+
'BATCHEXT=.bat'#010+
@@ -998,21 +1006,21 @@ const fpcmakeini : array[0..255,1..240] of char=(
'PPUEXT=.ppu'#010+
'OEXT=.o'#010+
'LTOEXT=.bc'#010+
- 'ASMEXT=','.s'#010+
+ 'ASMEXT=.s'#010+
'SMARTEXT=.sl'#010+
'STATICLIBEXT=.a'#010+
'SHAREDLIBEXT=.so'#010+
- 'SHAREDLIBPREFIX=libfp'#010+
+ 'SH','AREDLIBPREFIX=libfp'#010+
'STATICLIBPREFIX=libp'#010+
'IMPORTLIBPREFIX=libimp'#010+
'RSTEXT=.rst'#010+
'# external debug info for executable'#010+
'EXEDBGEXT=.dbg'#010+
- '#DEBUGSYMEXT #for debugger symbol files, define only for targ','ets whi'+
- 'ch has this'#010+
+ '#DEBUGSYMEXT #for debugger symbol files, define only for targets which'+
+ ' has this'#010+
#010+
'# Go32v1'#010+
- 'ifeq ($(OS_TARGET),go32v1)'#010+
+ 'ifeq ($(OS_TARGET),go3','2v1)'#010+
'STATICLIBPREFIX='#010+
'SHORTSUFFIX=v1'#010+
'endif'#010+
@@ -1026,11 +1034,11 @@ const fpcmakeini : array[0..255,1..240] of char=(
#010+
'# watcom'#010+
'ifeq ($(OS_TARGET),watcom)'#010+
- 'STATICLIBPREFIX=',#010+
+ 'STATICLIBPREFIX='#010+
'OEXT=.obj'#010+
'ASMEXT=.asm'#010+
'SHAREDLIBEXT=.dll'#010+
- 'SHORTSUFFIX=wat'#010+
+ 'SHORTSUFFI','X=wat'#010+
'IMPORTLIBPREFIX='#010+
'endif'#010+
#010+
@@ -1045,11 +1053,11 @@ const fpcmakeini : array[0..255,1..240] of char=(
'endif'#010+
#010+
'# Linux'#010+
- 'ifeq ($(OS_TARG','ET),linux)'#010+
+ 'ifeq ($(OS_TARGET),linux)'#010+
'BATCHEXT=.sh'#010+
'EXEEXT='#010+
'HASSHAREDLIB=1'#010+
- 'SHORTSUFFIX=lnx'#010+
+ 'SHOR','TSUFFIX=lnx'#010+
'endif'#010+
#010+
'# DragonFly BSD'#010+
@@ -1064,12 +1072,12 @@ const fpcmakeini : array[0..255,1..240] of char=(
'ifeq ($(OS_TARGET),freebsd)'#010+
'BATCHEXT=.sh'#010+
'EXEEXT='#010+
- 'HASSHAR','EDLIB=1'#010+
+ 'HASSHAREDLIB=1'#010+
'SHORTSUFFIX=fbs'#010+
'endif'#010+
#010+
'# NetBSD'#010+
- 'ifeq ($(OS_TARGET),netbsd)'#010+
+ 'ifeq ($(OS_','TARGET),netbsd)'#010+
'BATCHEXT=.sh'#010+
'EXEEXT='#010+
'HASSHAREDLIB=1'#010+
@@ -1085,9 +1093,9 @@ const fpcmakeini : array[0..255,1..240] of char=(
'endif'#010+
#010+
'# Win32'#010+
- 'ifeq ($(O','S_TARGET),win32)'#010+
+ 'ifeq ($(OS_TARGET),win32)'#010+
'SHAREDLIBEXT=.dll'#010+
- 'SHORTSUFFIX=w32'#010+
+ 'SHORTSUFFIX=w32'#010,
'endif'#010+
#010+
'# OS/2'#010+
@@ -1103,10 +1111,10 @@ const fpcmakeini : array[0..255,1..240] of char=(
#010+
'# EMX'#010+
'ifeq ($(OS_TARGET),emx)'#010+
- 'BATCHEXT=','.cmd'#010+
+ 'BATCHEXT=.cmd'#010+
'AOUTEXT=.out'#010+
'STATICLIBPREFIX='#010+
- 'SHAREDLIBEXT=.dll'#010+
+ 'SHAREDLIBEXT=.dl','l'#010+
'SHORTSUFFIX=emx'#010+
'ECHO=echo'#010+
'IMPORTLIBPREFIX='#010+
@@ -1122,12 +1130,12 @@ const fpcmakeini : array[0..255,1..240] of char=(
'# AROS'#010+
'ifeq ($(OS_TARGET),aros)'#010+
'EXEEXT='#010+
- 'SHAREDLIBE','XT=.library'#010+
+ 'SHAREDLIBEXT=.library'#010+
'SHORTSUFFIX=aros'#010+
'endif'#010+
#010+
'# MorphOS'#010+
- 'ifeq ($(OS_TARGET),morphos)'#010+
+ 'ifeq ','($(OS_TARGET),morphos)'#010+
'EXEEXT='#010+
'SHAREDLIBEXT=.library'#010+
'SHORTSUFFIX=mos'#010+
@@ -1141,13 +1149,13 @@ const fpcmakeini : array[0..255,1..240] of char=(
#010+
'# BeOS'#010+
'ifeq ($(OS_TARGET),beos)'#010+
- 'BATCHEXT=.sh',#010+
+ 'BATCHEXT=.sh'#010+
'EXEEXT='#010+
'SHORTSUFFIX=be'#010+
'endif'#010+
#010+
'# Haiku'#010+
- 'ifeq ($(OS_TARGET),haiku)'#010+
+ 'ifeq ($(OS_T','ARGET),haiku)'#010+
'BATCHEXT=.sh'#010+
'EXEEXT='#010+
'SHORTSUFFIX=hai'#010+
@@ -1163,12 +1171,12 @@ const fpcmakeini : array[0..255,1..240] of char=(
'# QNX'#010+
'ifeq ($(OS_TARGET),qnx)'#010+
'BATCHEXT=.sh'#010+
- 'EXEEXT','='#010+
+ 'EXEEXT='#010+
'SHORTSUFFIX=qnx'#010+
'endif'#010+
#010+
'# Netware clib'#010+
- 'ifeq ($(OS_TARGET),netware)'#010+
+ 'ifeq ($(OS_','TARGET),netware)'#010+
'EXEEXT=.nlm'#010+
'STATICLIBPREFIX='#010+
'SHORTSUFFIX=nw'#010+
@@ -1180,11 +1188,11 @@ const fpcmakeini : array[0..255,1..240] of char=(
'EXEEXT=.nlm'#010+
'STATICLIBPREFIX='#010+
'SHORTSUFFIX=nwl'#010+
- 'IMPORTLIBPRE','FIX=imp'#010+
+ 'IMPORTLIBPREFIX=imp'#010+
'endif'#010+
#010+
'# Mac OS Classic'#010+
- 'ifeq ($(OS_TARGET),macosclassic)'#010+
+ 'ifeq ($(OS_TARGET),','macosclassic)'#010+
'BATCHEXT='#010+
'EXEEXT='#010+
'DEBUGSYMEXT=.xcoff'#010+
@@ -1196,12 +1204,12 @@ const fpcmakeini : array[0..255,1..240] of char=(
'ifneq ($(findstring $(OS_TARGET),darwin iphonesim ios),)'#010+
'BATCHEXT=.sh'#010+
'EXEEXT='#010+
- 'HASSHARE','DLIB=1'#010+
+ 'HASSHAREDLIB=1'#010+
'SHORTSUFFIX=dwn'#010+
'EXEDBGEXT=.dSYM'#010+
'endif'#010+
#010+
- '# gba'#010+
+ '# gba',#010+
'ifeq ($(OS_TARGET),gba)'#010+
'EXEEXT=.gba'#010+
'SHAREDLIBEXT=.so'#010+
@@ -1215,9 +1223,9 @@ const fpcmakeini : array[0..255,1..240] of char=(
'endif'#010+
#010+
'# NativeNT'#010+
- 'ifeq ($(OS_TARG','ET),NativeNT)'#010+
+ 'ifeq ($(OS_TARGET),NativeNT)'#010+
'SHAREDLIBEXT=.dll'#010+
- 'SHORTSUFFIX=nativent'#010+
+ 'SHORTSUFFIX=nativen','t'#010+
'endif'#010+
#010+
'# wii'#010+
@@ -1236,10 +1244,10 @@ const fpcmakeini : array[0..255,1..240] of char=(
'endif'#010+
#010+
'# Java'#010+
- 'i','feq ($(OS_TARGET),java)'#010+
+ 'ifeq ($(OS_TARGET),java)'#010+
'OEXT=.class'#010+
'ASMEXT=.j'#010+
- 'SHAREDLIBEXT=.jar'#010+
+ 'SHARE','DLIBEXT=.jar'#010+
'SHORTSUFFIX=java'#010+
'endif'#010+
#010+
@@ -1254,9 +1262,9 @@ const fpcmakeini : array[0..255,1..240] of char=(
'endif'#010+
#010+
'# MS-DOS'#010+
- 'if','eq ($(OS_TARGET),msdos)'#010+
+ 'ifeq ($(OS_TARGET),msdos)'#010+
'STATICLIBPREFIX='#010+
- 'STATICLIBEXT=.a'#010+
+ 'STATICLIBE','XT=.a'#010+
'SHORTSUFFIX=d16'#010+
'endif'#010+
#010+
@@ -1269,12 +1277,12 @@ const fpcmakeini : array[0..255,1..240] of char=(
#010+
'# Embedded'#010+
'ifeq ($(OS_TARGET),embedded)'#010+
- 'ifeq ($(CPU_TARGET),i8086)'#010,
+ 'ifeq ($(CPU_TARGET),i8086)'#010+
'STATICLIBPREFIX='#010+
'STATICLIBEXT=.a'#010+
'else'#010+
'EXEEXT=.bin'#010+
- 'endif'#010+
+ 'e','ndif'#010+
'ifeq ($(CPU_TARGET),z80)'#010+
'OEXT=.rel'#010+
'endif'#010+
@@ -1289,20 +1297,20 @@ const fpcmakeini : array[0..255,1..240] of char=(
'SHORTSUFFIX=w16'#010+
'endif'#010+
#010+
- '# ZX Spectru','m'#010+
+ '# ZX Spectrum'#010+
'ifeq ($(OS_TARGET),zxspectrum)'#010+
'OEXT=.rel'#010+
'endif'#010+
#010+
- #010+
+ #010,
'# For 8.3 limited OS'#039's the short suffixes'#010+
'# Otherwise use the full source/target names'#010+
'ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)'#010+
'FPCMADE=fpcmade.$(SHORTSUFFIX)'#010+
- 'ZIPSUFFIX=$(SHORTSUFFI','X)'#010+
+ 'ZIPSUFFIX=$(SHORTSUFFIX)'#010+
'ZIPCROSSPREFIX='#010+
'ZIPSOURCESUFFIX=src'#010+
- 'ZIPEXAMPLESUFFIX=exm'#010+
+ 'ZIPEXAMPLESU','FFIX=exm'#010+
'else'#010+
'FPCMADE=fpcmade.$(TARGETSUFFIX)'#010+
'ZIPSOURCESUFFIX=.source'#010+
@@ -1311,19 +1319,19 @@ const fpcmakeini : array[0..255,1..240] of char=(
'ZIPSUFFIX=.$(SOURCESUFFIX)'#010+
'ZIPCROSSPREFIX=$(TARGETSUFFIX)-'#010+
'else'#010+
- 'ZIPSUFFIX','=.$(TARGETSUFFIX)'#010+
+ 'ZIPSUFFIX=.$(TARGETSUFFIX)'#010+
'ZIPCROSSPREFIX='#010+
'endif'#010+
'endif'#010+
#010+
- '[defaulttools]'#010+
+ '[def','aulttools]'#010+
'#####################################################################'#010+
'# Default Tools'#010+
'#####################################################################'#010+
#010+
- '# Names of the binuti','ls tools'#010+
+ '# Names of the binutils tools'#010+
'ASNAME=$(BINUTILSPREFIX)as'#010+
- 'LDNAME=$(BINUTILSPREFIX)ld'#010+
+ 'LDNAME=$(BINUTI','LSPREFIX)ld'#010+
'ARNAME=$(BINUTILSPREFIX)ar'#010+
'RCNAME=$(BINUTILSPREFIX)rc'#010+
'NASMNAME=$(BINUTILSPREFIX)nasm'#010+
@@ -1331,9 +1339,9 @@ const fpcmakeini : array[0..255,1..240] of char=(
'# assembler, redefine it if cross compiling'#010+
'ifndef ASPROG'#010+
'ifdef CROSSBINDIR'#010+
- 'ASPROG=$(CROSSB','INDIR)/$(ASNAME)$(SRCEXEEXT)'#010+
+ 'ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)'#010+
'else'#010+
- 'ASPROG=$(ASNAME)'#010+
+ 'ASPROG=$(ASNAME)'#010,
'endif'#010+
'endif'#010+
#010+
@@ -1347,9 +1355,9 @@ const fpcmakeini : array[0..255,1..240] of char=(
'endif'#010+
#010+
'# Resource compiler'#010+
- 'ifndef RCPROG',#010+
+ 'ifndef RCPROG'#010+
'ifdef CROSSBINDIR'#010+
- 'RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT)'#010+
+ 'RCPROG=$(CROSSBINDIR)/$(RCNAME)$','(SRCEXEEXT)'#010+
'else'#010+
'RCPROG=$(RCNAME)'#010+
'endif'#010+
@@ -1364,9 +1372,9 @@ const fpcmakeini : array[0..255,1..240] of char=(
'endif'#010+
'endif'#010+
#010+
- '# NASM assembler, re','define it if cross compiling'#010+
+ '# NASM assembler, redefine it if cross compiling'#010+
'ifndef NASMPROG'#010+
- 'ifdef CROSSBINDIR'#010+
+ 'ifdef ','CROSSBINDIR'#010+
'NASMPROG=$(CROSSBINDIR)/$(NASMNAME)$(SRCEXEEXT)'#010+
'else'#010+
'NASMPROG=$(NASMNAME)'#010+
@@ -1379,10 +1387,10 @@ const fpcmakeini : array[0..255,1..240] of char=(
'RC=$(RCPROG)'#010+
'AR=$(ARPROG)'#010+
'NASM=$(NASMPROG)'#010+
- #010,
+ #010+
'# ppas.bat / ppas.sh'#010+
'ifdef inUnix'#010+
- 'PPAS=./ppas$(SRCBATCHEXT)'#010+
+ 'PPAS=./ppas$(SRCB','ATCHEXT)'#010+
'else'#010+
'PPAS=ppas$(SRCBATCHEXT)'#010+
'endif'#010+
@@ -1397,14 +1405,14 @@ const fpcmakeini : array[0..255,1..240] of char=(
'ifdef DATE'#010+
'DATESTR:=$(shell $(DATE) +%Y%m%d)'#010+
'else'#010+
- 'DATESTR='#010,
+ 'DATESTR='#010+
'endif'#010+
#010+
'# Zip options'#010+
'ZIPOPT=-9'#010+
'ZIPEXT=.zip'#010+
#010+
- '# Tar options'#010+
+ '# Tar o','ptions'#010+
'ifeq ($(USETAR),bz2)'#010+
'TAROPT=vj'#010+
'TAREXT=.tar.bz2'#010+
@@ -1416,17 +1424,18 @@ const fpcmakeini : array[0..255,1..240] of char=(
#010+
'[command_begin]'#010+
'#####################################################################'#010+
- '# Compiler ','Command Line'#010+
- '#####################################################################'#010+
+ '# Compiler Command Line'#010+
+ '######################################','##############################'+
+ '#'#010+
#010+
'# Load commandline OPTDEF and add FPC_CPU define, for compiling the'#010+
'# compiler this needs to be turned off'#010+
'ifndef NOCPUDEF'#010+
'override FPCOPTDEF=$(ARCH)'#010+
- 'endif'#010,
+ 'endif'#010+
#010+
#010+
- '# Load commandline OPT and add target and unit dir to be sure'#010+
+ '# Load commandline OPT and add target and unit di','r to be sure'#010+
'ifneq ($(OS_TARGET),$(OS_SOURCE))'#010+
'override FPCOPT+=-T$(OS_TARGET)'#010+
'endif'#010+
@@ -1436,18 +1445,18 @@ const fpcmakeini : array[0..255,1..240] of char=(
'endif'#010+
#010+
'ifeq ($(OS_SOURCE),openbsd)'#010+
- 'overr','ide FPCOPT+=-FD$(NEW_BINUTILS_PATH)'#010+
- 'override FPCMAKEOPT+=-FD$(NEW_BINUTILS_PATH)'#010+
+ 'override FPCOPT+=-FD$(NEW_BINUTILS_PATH)'#010+
+ 'override FPCMAK','EOPT+=-FD$(NEW_BINUTILS_PATH)'#010+
'override FPMAKE_BUILD_OPT+=-FD$(NEW_BINUTILS_PATH)'#010+
'endif'#010+
#010+
'ifndef CROSSBOOTSTRAP'#010+
'ifneq ($(BINUTILSPREFIX),)'#010+
'override FPCOPT+=-XP$(BINUTILSPREFIX)'#010+
- 'ifneq ($(RLINK','PATH),)'#010+
+ 'ifneq ($(RLINKPATH),)'#010+
'override FPCOPT+=-Xr$(RLINKPATH)'#010+
'endif'#010+
- 'endif'#010+
+ 'endi','f'#010+
'endif'#010+
#010+
'# When BINUTILSPREFIX is given and we are not cross-compiling then use'+
@@ -1455,19 +1464,19 @@ const fpcmakeini : array[0..255,1..240] of char=(
'# it while compiling the fpmake file. (For example to build i386-freeb'+
'sd'#010+
'# with BINUTILSPREFIX=i386-)'#010+
- 'ifndef ','CROSSCOMPILE'#010+
+ 'ifndef CROSSCOMPILE'#010+
'ifneq ($(BINUTILSPREFIX),)'#010+
- 'override FPCMAKEOPT+=-XP$(BINUTILSPREFIX)'#010+
+ 'override FP','CMAKEOPT+=-XP$(BINUTILSPREFIX)'#010+
'override FPMAKE_BUILD_OPT+=-XP$(BINUTILSPREFIX)'#010+
'endif'#010+
'endif'#010+
#010+
'# User dirs should be first, so they are looked at first'#010+
'ifdef UNITDIR'#010+
- 'override FPCOPT+=$(addpref','ix -Fu,$(UNITDIR))'#010+
+ 'override FPCOPT+=$(addprefix -Fu,$(UNITDIR))'#010+
'endif'#010+
'ifdef LIBDIR'#010+
- 'override FPCOPT+=$(addprefix -Fl,$(LIBDIR))'#010+
+ 'override FPCO','PT+=$(addprefix -Fl,$(LIBDIR))'#010+
'endif'#010+
'ifdef OBJDIR'#010+
'override FPCOPT+=$(addprefix -Fo,$(OBJDIR))'#010+
@@ -1477,11 +1486,11 @@ const fpcmakeini : array[0..255,1..240] of char=(
'endif'#010+
#010+
'# Smartlinking'#010+
- 'ifdef LINK','SMART'#010+
+ 'ifdef LINKSMART'#010+
'override FPCOPT+=-XX'#010+
'endif'#010+
#010+
- '# Smartlinking creation'#010+
+ '# Smartlinking cr','eation'#010+
'ifdef CREATESMART'#010+
'override FPCOPT+=-CX'#010+
'endif'#010+
@@ -1494,9 +1503,9 @@ const fpcmakeini : array[0..255,1..240] of char=(
#010+
'# Release mode'#010+
'# (strip, optimize and don'#039't load fpc.cfg)'#010+
- 'ifde','f RELEASE'#010+
+ 'ifdef RELEASE'#010+
'FPCCPUOPT:=-O2'#010+
- 'override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n'#010+
+ 'override FPCOPT+=-Ur -Xs $','(FPCCPUOPT) -n'#010+
'override FPCOPTDEF+=RELEASE'#010+
'endif'#010+
#010+
@@ -1510,68 +1519,68 @@ const fpcmakeini : array[0..255,1..240] of char=(
'override FPCOPT+=-O2'#010+
'endif'#010+
#010+
- '# Verbose settings (warning,note,inf','o)'#010+
+ '# Verbose settings (warning,note,info)'#010+
'ifdef VERBOSE'#010+
'override FPCOPT+=-vwni'#010+
'endif'#010+
#010+
- '# Needed compiler options'#010+
+ '# Ne','eded compiler options'#010+
'ifdef COMPILER_OPTIONS'#010+
'override FPCOPT+=$(COMPILER_OPTIONS)'#010+
'endif'#010+
'ifdef COMPILER_UNITDIR'#010+
'override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))'#010+
'endif'#010+
- 'ifdef COMPILER_LIB','RARYDIR'#010+
- 'override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))'#010+
+ 'ifdef COMPILER_LIBRARYDIR'#010+
+ 'override FPCOPT+=$(addprefix -Fl,$(COMPILER','_LIBRARYDIR))'#010+
'endif'#010+
'ifdef COMPILER_OBJECTDIR'#010+
'override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))'#010+
'endif'#010+
'ifdef COMPILER_INCLUDEDIR'#010+
- 'override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))',#010+
+ 'override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))'#010+
'endif'#010+
#010+
'# Cross compiler utils'#010+
'ifdef CROSSBINDIR'#010+
- 'override FPCOPT+=-FD$(CROSSBINDIR)'#010+
+ 'ov','erride FPCOPT+=-FD$(CROSSBINDIR)'#010+
'endif'#010+
#010+
'# Target dirs and the prefix to use for clean/install'#010+
'ifdef COMPILER_TARGETDIR'#010+
'override FPCOPT+=-FE$(COMPILER_TARGETDIR)'#010+
- 'ifeq ($(COMPILER_TARGETDIR),','.)'#010+
+ 'ifeq ($(COMPILER_TARGETDIR),.)'#010+
'override TARGETDIRPREFIX='#010+
'else'#010+
- 'override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/'#010+
+ 'override TARGETDI','RPREFIX=$(COMPILER_TARGETDIR)/'#010+
'endif'#010+
'endif'#010+
#010+
'# Unit target dir (default is units/<cpu>-<os>/'#010+
'ifdef COMPILER_UNITTARGETDIR'#010+
'override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)'#010+
- 'ifeq ($(COMPILER_UNITT','ARGETDIR),.)'#010+
+ 'ifeq ($(COMPILER_UNITTARGETDIR),.)'#010+
'override UNITTARGETDIRPREFIX='#010+
'else'#010+
- 'override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/'#010+
+ 'ove','rride UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/'#010+
'endif'#010+
'else'#010+
'ifdef COMPILER_TARGETDIR'#010+
'override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)'#010+
- 'override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX',')'#010+
+ 'override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)'#010+
'endif'#010+
'endif'#010+
#010+
'ifdef CREATESHARED'#010+
- 'override FPCOPT+=-Cg'#010+
+ 'override FPCOPT+=','-Cg'#010+
'endif'#010+
#010+
'# create always pic'#039'ed code on x86_64, mips and mipsel'#010+
'# on unix-like systems'#010+
'ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linu'+
'x solaris),)'#010+
- 'ifneq ($(findstri','ng $(CPU_TARGET),x86_64 mips mipsel),)'#010+
- 'override FPCOPT+=-Cg'#010+
+ 'ifneq ($(findstring $(CPU_TARGET),x86_64 mips mipsel riscv64),)'#010+
+ 'over','ride FPCOPT+=-Cg'#010+
'endif'#010+
'endif'#010+
#010+
@@ -1584,8 +1593,8 @@ const fpcmakeini : array[0..255,1..240] of char=(
'# Add GCC lib path if asked'#010+
'ifdef GCCLIBDIR'#010+
'override FPCOPT+=-Fl$(GCCLIBDIR)'#010+
- 'if','def FPCMAKEGCCLIBDIR'#010+
- 'override FPCMAKEOPT+=-Fl$(FPCMAKEGCCLIBDIR)'#010+
+ 'ifdef FPCMAKEGCCLIBDIR'#010+
+ 'override FPCMAKEOPT+=-','Fl$(FPCMAKEGCCLIBDIR)'#010+
'else'#010+
'override FPCMAKEOPT+=-Fl$(GCCLIBDIR)'#010+
'endif'#010+
@@ -1596,9 +1605,9 @@ const fpcmakeini : array[0..255,1..240] of char=(
#010+
#010+
'[command_end]'#010+
- '# Add commandline options last s','o they can override'#010+
+ '# Add commandline options last so they can override'#010+
'ifdef OPT'#010+
- 'override FPCOPT+=$(OPT)'#010+
+ 'override FPCO','PT+=$(OPT)'#010+
'endif'#010+
#010+
'# Override options to compile the fpmake-binary with command-line opti'+
@@ -1607,8 +1616,8 @@ const fpcmakeini : array[0..255,1..240] of char=(
'override FPMAKE_BUILD_OPT+=$(FPMAKEBUILDOPT)'#010+
'endif'#010+
#010+
- '# Add',' defines from FPCOPTDEF to FPCOPT'#010+
- 'ifdef FPCOPTDEF'#010+
+ '# Add defines from FPCOPTDEF to FPCOPT'#010+
+ 'ifdef FPC','OPTDEF'#010+
'override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))'#010+
'endif'#010+
#010+
@@ -1618,9 +1627,9 @@ const fpcmakeini : array[0..255,1..240] of char=(
'endif'#010+
#010+
'# Use the environment to pass commandline options?'#010+
- 'ifde','f USEENV'#010+
+ 'ifdef USEENV'#010+
'override FPCEXTCMD:=$(FPCOPT)'#010+
- 'override FPCOPT:=!FPCEXTCMD'#010+
+ 'over','ride FPCOPT:=!FPCEXTCMD'#010+
'export FPCEXTCMD'#010+
'endif'#010+
#010+
@@ -1628,20 +1637,20 @@ const fpcmakeini : array[0..255,1..240] of char=(
'override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)'#010+
#010+
'ifneq ($(AFULL_TARGET),$(AFULL_SOURCE))'#010+
- 'override A','CROSSCOMPILE=1'#010+
+ 'override ACROSSCOMPILE=1'#010+
'endif'#010+
#010+
'ifdef ACROSSCOMPILE'#010+
- 'override FPCOPT+=$(CROSSOPT)'#010+
+ 'o','verride FPCOPT+=$(CROSSOPT)'#010+
'endif'#010+
#010+
'# Compiler commandline'#010+
'override COMPILER:=$(strip $(FPC) $(FPCOPT))'#010+
#010+
'# also call ppas if with command option -s'#010+
- '# but only if the FULL_SOURCE and FULL_TARGET are ','equal'#010+
+ '# but only if the FULL_SOURCE and FULL_TARGET are equal'#010+
'# or if -sh is used'#010+
- 'ifneq (,$(findstring -sh ,$(COMPILER)))'#010+
+ 'ifneq (,$(findstr','ing -sh ,$(COMPILER)))'#010+
'UseEXECPPAS=1'#010+
'endif'#010+
'ifneq (,$(findstring -s ,$(COMPILER)))'#010+
@@ -1652,10 +1661,10 @@ const fpcmakeini : array[0..255,1..240] of char=(
'ifneq ($(UseEXECPPAS),1)'#010+
'EXECPPAS='#010+
'else'#010+
- 'ifdef RUNBAT','CH'#010+
+ 'ifdef RUNBATCH'#010+
'EXECPPAS:=@$(RUNBATCH) $(PPAS)'#010+
'else'#010+
- 'EXECPPAS:=@$(PPAS)'#010+
+ 'EXEC','PPAS:=@$(PPAS)'#010+
'endif'#010+
'endif'#010+
#010+
@@ -1665,9 +1674,9 @@ const fpcmakeini : array[0..255,1..240] of char=(
'# Loaders'#010+
'#####################################################################'#010+
#010+
- '.PH','ONY: fpc_loaders'#010+
+ '.PHONY: fpc_loaders'#010+
#010+
- 'ifneq ($(TARGET_LOADERS),)'#010+
+ 'ifneq ($(TARGET_LOADERS),',')'#010+
'override ALLTARGET+=fpc_loaders'#010+
'override CLEANTARGET+=fpc_loaders_clean'#010+
'override INSTALLTARGET+=fpc_loaders_install'#010+
@@ -1675,8 +1684,8 @@ const fpcmakeini : array[0..255,1..240] of char=(
'override LOADEROFILES:=$(addsuffix $(OEXT),$(TARGET_LOADERS))'#010+
'endif'#010+
#010+
- '%$(OEXT):',' %$(LOADEREXT)'#010+
- 'ifdef COMPILER_UNITTARGETDIR'#010+
+ '%$(OEXT): %$(LOADEREXT)'#010+
+ 'ifdef COMPILER_UNITTARGETDIR',#010+
' $(AS) -o $(COMPILER_UNITTARGETDIR)/$*$(OEXT) $<'#010+
'else'#010+
' $(AS) -o $*$(OEXT) $<'#010+
@@ -1685,9 +1694,9 @@ const fpcmakeini : array[0..255,1..240] of char=(
'fpc_loaders: $(COMPILER_UNITTARGETDIR) $(LOADEROFILES)'#010+
#010+
'fpc_loaders_clean:'#010+
- 'ifdef COMPILER_UNITTARG','ETDIR'#010+
- ' -$(DEL) $(addprefix $(COMPILER_UNITTARGETDIR)/,$(LOADEROFILES)'+
- ')'#010+
+ 'ifdef COMPILER_UNITTARGETDIR'#010+
+ ' -$(DEL) $(addprefix $(COMPILE','R_UNITTARGETDIR)/,$(LOADEROFILE'+
+ 'S))'#010+
'else'#010+
' -$(DEL) $(LOADEROFILES)'#010+
'endif'#010+
@@ -1695,8 +1704,8 @@ const fpcmakeini : array[0..255,1..240] of char=(
'fpc_loaders_install:'#010+
' $(MKDIR) $(INSTALL_UNITDIR)'#010+
'ifdef COMPILER_UNITTARGETDIR'#010+
- ' $(INSTALL) $(addprefix $','(COMPILER_UNITTARGETDIR)/,$(LOADEROF'+
- 'ILES)) $(INSTALL_UNITDIR)'#010+
+ ' $(INSTALL) $(addprefix $(COMPILER_UNITTARGETDIR)/,$(LOADEROFIL'+
+ 'ES)) ','$(INSTALL_UNITDIR)'#010+
'else'#010+
' $(INSTALL) $(LOADEROFILES) $(INSTALL_UNITDIR)'#010+
'endif'#010+
@@ -1705,7 +1714,7 @@ const fpcmakeini : array[0..255,1..240] of char=(
'[unitrules]'#010+
'#####################################################################'#010+
'# Units'#010+
- '#####################','###############################################'+
+ '################################################################','####'+
'#'#010+
#010+
'.PHONY: fpc_units'#010+
@@ -1714,8 +1723,8 @@ const fpcmakeini : array[0..255,1..240] of char=(
'override ALLTARGET+=fpc_units'#010+
#010+
'override UNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_UNITS))'#010+
- 'override IMPLICITUNITPPUFILES=$','(addsuffix $(PPUEXT),$(TARGET_IMPLICI'+
- 'TUNITS))'#010+
+ 'override IMPLICITUNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_IMPLICITU'+
+ 'NITS','))'#010+
'override INSTALLPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)'#010+
'override CLEANPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)'#010+
'endif'#010+
@@ -1723,32 +1732,33 @@ const fpcmakeini : array[0..255,1..240] of char=(
'fpc_units: $(COMPILER_UNITTARGETDIR) $(UNITPPUFILES)'#010+
#010+
#010+
- '[e','xerules]'#010+
- '#####################################################################'#010+
+ '[exerules]'#010+
+ '##################################','##################################'+
+ '#'#010+
'# Exes'#010+
'#####################################################################'#010+
#010+
'.PHONY: fpc_exes'#010+
#010+
'# Programs are not needed for a cross installation'#010+
- 'ifndef CROSSIN','STALL'#010+
+ 'ifndef CROSSINSTALL'#010+
'ifneq ($(TARGET_PROGRAMS),)'#010+
- 'override EXEFILES=$(addsuffix $(EXEEXT),$(TARGET_PROGRAMS))'#010+
+ 'override ','EXEFILES=$(addsuffix $(EXEEXT),$(TARGET_PROGRAMS))'#010+
'override EXEOFILES:=$(addsuffix $(OEXT),$(TARGET_PROGRAMS)) $(addsuffi'+
'x $(LTOEXT),$(TARGET_PROGRAMS))$(addprefix $(STATICLIBPREFIX),$(addsuf'+
- 'fix $(','STATICLIBEXT),$(TARGET_PROGRAMS))) $(addprefix $(IMPORTLIBPREF'+
+ 'fix $(STATICLIBEXT),$(TARGET_PROGRAMS))) $(addpre','fix $(IMPORTLIBPREF'+
'IX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS)))'#010+
'override EXEDBGFILES:=$(addsuffix $(EXEDBGEXT),$(TARGET_PROGRAMS))'#010+
#010+
'override ALLTARGET+=fpc_exes'#010+
- 'override INSTALLEXEFILES+=$(','EXEFILES)'#010+
- 'override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES)'#010+
+ 'override INSTALLEXEFILES+=$(EXEFILES)'#010+
+ 'override CLEANEXEFILES+=$(EXEFILE','S) $(EXEOFILES)'#010+
'override CLEANEXEDBGFILES+=$(EXEDBGFILES)'#010+
'ifeq ($(OS_TARGET),os2)'#010+
'override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))'#010+
'endif'#010+
'ifeq ($(OS_TARGET),emx)'#010+
- 'override CLEANEXEF','ILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))'#010+
+ 'override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGR','AMS))'#010+
'endif'#010+
'endif'#010+
'endif'#010+
@@ -1758,8 +1768,9 @@ const fpcmakeini : array[0..255,1..240] of char=(
#010+
'[rstrules]'#010+
'#####################################################################'#010+
- '# Resource strings'#010,
- '#####################################################################'#010+
+ '# Resource strings'#010+
+ '###########################################','#########################'+
+ '#'#010+
#010+
'ifdef TARGET_RSTS'#010+
'override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))'#010+
@@ -1769,33 +1780,32 @@ const fpcmakeini : array[0..255,1..240] of char=(
#010+
#010+
'[examplerules]'#010+
- '###################################','#################################'+
- '#'#010+
- '# Examples'#010+
+ '#####################################################################'#010+
+ '# Exampl','es'#010+
'#####################################################################'#010+
#010+
'.PHONY: fpc_examples'#010+
#010+
'ifneq ($(TARGET_EXAMPLES),)'#010+
'HASEXAMPLES=1'#010+
- 'override EXAMPLESOURCEFILES=$(wildcard $(addsuffix .pp,$(TA','RGET_EXAM'+
- 'PLES)) $(addsuffix .pas,$(TARGET_EXAMPLES)) $(addsuffix .lpr,$(TARGET_'+
+ 'override EXAMPLESOURCEFILES=$(wildcard $(addsuffix .pp,$(TARGET_EXAMPL'+
+ 'ES)) $(addsuffix .pas,$(TARGET_E','XAMPLES)) $(addsuffix .lpr,$(TARGET_'+
'EXAMPLES)) $(addsuffix .dpr,$(TARGET_EXAMPLES)))'#010+
'override EXAMPLEFILES:=$(addsuffix $(EXEEXT),$(TARGET_EXAMPLES))'#010+
- 'override EXAMPLEOFILES:=$(addsuffix $(OEXT),$(T','ARGET_EXAMPLES)) $(ad'+
- 'dsuffix $(LTOEXT),$(TARGET_EXAMPLES)) $(addprefix $(STATICLIBPREFIX),$'+
+ 'override EXAMPLEOFILES:=$(addsuffix $(OEXT),$(TARGET_EXAMPLES)) $(adds'+
+ 'uffix $(LTOEXT),$(TA','RGET_EXAMPLES)) $(addprefix $(STATICLIBPREFIX),$'+
'(addsuffix $(STATICLIBEXT),$(TARGET_EXAMPLES))) $(addprefix $(IMPORTLI'+
'BPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_EXAMPLES)))'#010+
- 'override EXAMPLEDBGFI','LES:=$(addsuffix $(EXEDBGEXT),$(TARGET_EXAMPLES'+
+ 'override EXAMPLEDBGFILES:=$(addsuffix $(EXEDBGEXT),$(TARGET_EXAM','PLES'+
'))'#010+
#010+
'override CLEANEXEFILES+=$(EXAMPLEFILES) $(EXAMPLEOFILES)'#010+
'override CLEANEXEDBGFILES+=$(EXAMPLEDBGFILES)'#010+
'ifeq ($(OS_TARGET),os2)'#010+
- 'override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_EXAMPL','ES))'#010+
+ 'override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_EXAMPLES))'#010+
'endif'#010+
'ifeq ($(OS_TARGET),emx)'#010+
- 'override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_EXAMPLES))'#010+
+ 'override',' CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_EXAMPLES))'#010+
'endif'#010+
'endif'#010+
'ifneq ($(TARGET_EXAMPLEDIRS),)'#010+
@@ -1803,17 +1813,18 @@ const fpcmakeini : array[0..255,1..240] of char=(
'endif'#010+
#010+
'fpc_examples: all $(EXAMPLEFILES) $(addsuffix _all,$(TARGET_EXAMPLEDIR'+
- 'S))'#010,
+ 'S))'#010+
#010+
#010+
'[compilerules]'#010+
- '#####################################################################'#010+
+ '##########################','##########################################'+
+ '#'#010+
'# General compile rules'#010+
'#####################################################################'#010+
#010+
- '.PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_shared',#010+
+ '.PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_shared'#010+
#010+
- '$(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET)'#010+
+ '$(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGE','T)'#010+
' @$(ECHOREDIR) Compiled > $(FPCMADE)'#010+
#010+
'fpc_all: $(FPCMADE)'#010+
@@ -1825,19 +1836,19 @@ const fpcmakeini : array[0..255,1..240] of char=(
' $(MAKE) all DEBUG=1'#010+
#010+
'fpc_release:'#010+
- ' $(MAKE) a','ll RELEASE=1'#010+
+ ' $(MAKE) all RELEASE=1'#010+
#010+
- '# General compile rules, available for both possible .pp and .pas exte'+
- 'nsions'#010+
+ '# General compile rules, avai','lable for both possible .pp and .pas ex'+
+ 'tensions'#010+
#010+
'.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) $(LTOEXT) .pas .lpr .dpr .pp .r'+
'c .res'#010+
#010+
'$(COMPILER_UNITTARGETDIR):'#010+
- ' $(MKDIRTREE) $(COMPILER_UNITTARGETD','IR)'#010+
+ ' $(MKDIRTREE) $(COMPILER_UNITTARGETDIR)'#010+
#010+
'$(COMPILER_TARGETDIR):'#010+
- ' $(MKDIRTREE) $(COMPILER_TARGETDIR)'#010+
+ ' $(MKDIR','TREE) $(COMPILER_TARGETDIR)'#010+
#010+
'%$(PPUEXT): %.pp'#010+
' $(COMPILER) $<'#010+
@@ -1849,10 +1860,10 @@ const fpcmakeini : array[0..255,1..240] of char=(
#010+
'%$(EXEEXT): %.pp'#010+
' $(COMPILER) $<'#010+
- ' ',' $(EXECPPAS)'#010+
+ ' $(EXECPPAS)'#010+
#010+
'%$(EXEEXT): %.pas'#010+
- ' $(COMPILER) $<'#010+
+ ' $','(COMPILER) $<'#010+
' $(EXECPPAS)'#010+
#010+
'%$(EXEEXT): %.lpr'#010+
@@ -1864,21 +1875,21 @@ const fpcmakeini : array[0..255,1..240] of char=(
' $(EXECPPAS)'#010+
#010+
'%.res: %.rc'#010+
- ' windres -i $< -o $','@'#010+
+ ' windres -i $< -o $@'#010+
#010+
- '# Search paths for .ppu, .pp, .pas, .lpr, .dpr'#010+
+ '# Search paths for .ppu, .pp, .pas, .lpr',', .dpr'#010+
'vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)'#010+
'vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)'#010+
'vpath %.lpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)'#010+
- 'vpath %.dpr $(COMPIL','ER_SOURCEDIR) $(COMPILER_INCLUDEDIR)'#010+
- 'vpath %.inc $(COMPILER_INCLUDEDIR)'#010+
+ 'vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)'#010+
+ 'vpath ','%.inc $(COMPILER_INCLUDEDIR)'#010+
'vpath %$(OEXT) $(COMPILER_UNITTARGETDIR)'#010+
'vpath %$(LTOEXT) $(COMPILER_UNITTARGETDIR)'#010+
'vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)'#010+
#010+
'[sharedrules]'#010+
- '##########################','##########################################'+
- '#'#010+
+ '#####################################################################',
+ #010+
'# Library'#010+
'#####################################################################'#010+
#010+
@@ -1887,11 +1898,11 @@ const fpcmakeini : array[0..255,1..240] of char=(
'override INSTALLTARGET+=fpc_shared_install'#010+
#010+
'ifndef SHARED_LIBVERSION'#010+
- 'SHARED_LIBVERSION=$(FPC_VE','RSION)'#010+
+ 'SHARED_LIBVERSION=$(FPC_VERSION)'#010+
'endif'#010+
#010+
'ifndef SHARED_LIBNAME'#010+
- 'SHARED_LIBNAME=$(PACKAGE_NAME)'#010+
+ 'SHARED_','LIBNAME=$(PACKAGE_NAME)'#010+
'endif'#010+
#010+
'ifndef SHARED_FULLNAME'#010+
@@ -1900,42 +1911,43 @@ const fpcmakeini : array[0..255,1..240] of char=(
'endif'#010+
#010+
'# Default sharedlib units are all unit objects'#010+
- 'i','fndef SHARED_LIBUNITS'#010+
- 'SHARED_LIBUNITS:=$(TARGET_UNITS) $(TARGET_IMPLICITUNITS)'#010+
+ 'ifndef SHARED_LIBUNITS'#010+
+ 'SHARED_LIBUNITS:=$(TA','RGET_UNITS) $(TARGET_IMPLICITUNITS)'#010+
'override SHARED_LIBUNITS:=$(filter-out $(INSTALL_BUILDUNIT),$(SHARED_L'+
'IBUNITS))'#010+
'endif'#010+
#010+
'fpc_shared:'#010+
'ifdef HASSHAREDLIB'#010+
- ' $(MAKE) all CREATESHARED=1 LINKSHAR','ED=1 CREATESMART=1'#010+
- 'ifneq ($(SHARED_BUILD),n)'#010+
+ ' $(MAKE) all CREATESHARED=1 LINKSHARED=1 CREATESMART=1'#010+
+ 'ifneq ($(SHARED_BUILD),n',')'#010+
' $(PPUMOVE) -q $(SHARED_LIBUNITS) -i$(COMPILER_UNITTARGETDIR) -'+
'o$(SHARED_FULLNAME) -d$(COMPILER_UNITTARGETDIR) -P$(BINUTILSPREFIX)'#010+
'endif'#010+
'else'#010+
- ' @$(ECHO) Shared Libraries not supporte','d'#010+
+ ' @$(ECHO) Shared Libraries not supported'#010+
'endif'#010+
#010+
'fpc_shared_install:'#010+
- 'ifneq ($(SHARED_BUILD),n)'#010+
+ 'ifneq ($(SHARE','D_BUILD),n)'#010+
'ifneq ($(SHARED_LIBUNITS),)'#010+
'ifneq ($(wildcard $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME)),)'#010+
' $(INSTALL) $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME) $(INST'+
'ALL_SHAREDDIR)'#010+
- 'endif'#010,
+ 'endif'#010+
'endif'#010+
'endif'#010+
#010+
'[installrules]'#010+
- '#####################################################################'#010+
+ '###############','#####################################################'+
+ '#'#010+
'# Install rules'#010+
'#####################################################################'#010+
#010+
- '.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstal','l'#010+
+ '.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall'#010+
#010+
'ifdef INSTALL_UNITS'#010+
- 'override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))'#010+
+ 'override INSTALLPPUF','ILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))'#010+
'endif'#010+
#010+
'ifdef INSTALL_BUILDUNIT'#010+
@@ -1944,27 +1956,28 @@ const fpcmakeini : array[0..255,1..240] of char=(
'endif'#010+
#010+
'ifdef INSTALLPPUFILES'#010+
- '# ','Avoid getting the same name twice as some install EXE fail'#010+
+ '# Avoid getting the same name twice as some i','nstall EXE fail'#010+
'# in this case, happends for instance for OS/2 target'#010+
'ifneq ($(IMPORTLIBPREFIX)-$(STATICLIBEXT),$(STATICLIBPREFIX)-$(STATICL'+
'IBEXT))'#010+
- 'override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$','(OEXT),$(INSTALLPPU'+
- 'FILES)) $(subst $(PPUEXT),$(LTOEXT),$(INSTALLPPUFILES)) $(addprefix $('+
+ 'override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFI'+
+ 'LES)) $(subst $(PPUEXT','),$(LTOEXT),$(INSTALLPPUFILES)) $(addprefix $('+
'STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))'+
') $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(I'+
- 'NSTALLPPUFI','LES)))'#010+
+ 'NSTALLPPUFILES)))'#010+
'else'#010+
- 'override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFI'+
- 'LES)) $(subst $(PPUEXT),$(LTOEXT),$(INSTALLPPUFILES)) $(addprefix $(ST'+
- 'ATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))'#010+
+ 'override INSTALLPPULINKFILES:=$','(subst $(PPUEXT),$(OEXT),$(INSTALLPPU'+
+ 'FILES)) $(subst $(PPUEXT),$(LTOEXT),$(INSTALLPPUFILES)) $(addprefix $('+
+ 'STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))'+
+ ')'#010+
'endif'#010+
#010+
- 'ifneq ($(UN','ITTARGETDIRPREFIX),)'#010+
- 'override INSTALLPPUFILENAMES:=$(notdir $(INSTALLPPUFILES))'#010+
+ 'ifneq ($(UNITTARGETDIRPREFIX),)'#010+
+ 'override INSTALLPPUFIL','ENAMES:=$(notdir $(INSTALLPPUFILES))'#010+
'override INSTALLPPULINKFILENAMES:=$(notdir $(INSTALLPPULINKFILES))'#010+
'override INSTALLPPUFILES=$(addprefix $(UNITTARGETDIRPREFIX),$(INSTALLP'+
'PUFILENAMES))'#010+
- 'override ','INSTALLPPULINKFILES=$(wildcard $(addprefix $(UNITTARGETDIRP'+
+ 'override INSTALLPPULINKFILES=$(wildcard $(addprefix ','$(UNITTARGETDIRP'+
'REFIX),$(INSTALLPPULINKFILENAMES)))'#010+
'endif'#010+
'# Implicitly install Package.fpc'#010+
@@ -1973,7 +1986,7 @@ const fpcmakeini : array[0..255,1..240] of char=(
#010+
'ifdef INSTALLEXEFILES'#010+
'ifneq ($(TARGETDIRPREFIX),)'#010+
- 'override INST','ALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(notdir $('+
+ 'override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX)',',$(notdir $('+
'INSTALLEXEFILES)))'#010+
'endif'#010+
'endif'#010+
@@ -1982,15 +1995,15 @@ const fpcmakeini : array[0..255,1..240] of char=(
'ifdef INSTALLEXEFILES'#010+
' $(MKDIR) $(INSTALL_BINDIR)'#010+
' $(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR)'#010+
- 'end','if'#010+
+ 'endif'#010+
'ifdef INSTALL_CREATEPACKAGEFPC'#010+
- 'ifdef FPCMAKE'#010+
+ 'ifdef FPC','MAKE'#010+
'# If the fpcpackage variable is set then create and install Package.fp'+
'c,'#010+
'# a safety check is done if Makefile.fpc is available'#010+
'ifdef PACKAGE_VERSION'#010+
'ifneq ($(wildcard Makefile.fpc),)'#010+
- ' $','(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) Makefile.fpc'#010+
+ ' $(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) M','akefile.fpc'#010+
' $(MKDIR) $(INSTALL_UNITDIR)'#010+
' $(INSTALL) Package.fpc $(INSTALL_UNITDIR)'#010+
'endif'#010+
@@ -1999,15 +2012,15 @@ const fpcmakeini : array[0..255,1..240] of char=(
'endif'#010+
'ifdef INSTALLPPUFILES'#010+
' $(MKDIR) $(INSTALL_UNITDIR)'#010+
- ' $(INSTALL',') $(INSTALLPPUFILES) $(INSTALL_UNITDIR)'#010+
- 'ifneq ($(INSTALLPPULINKFILES),)'#010+
+ ' $(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)'#010+
+ 'ifn','eq ($(INSTALLPPULINKFILES),)'#010+
' $(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)'#010+
'endif'#010+
'ifneq ($(wildcard $(LIB_FULLNAME)),)'#010+
' $(MKDIR) $(INSTALL_LIBDIR)'#010+
- ' $(INSTALL) $(LIB_FULL','NAME) $(INSTALL_LIBDIR)'#010+
+ ' $(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)'#010+
'ifdef inUnix'#010+
- ' ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)'#010+
+ ' ',' ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)'#010+
'endif'#010+
'endif'#010+
'endif'#010+
@@ -2016,16 +2029,16 @@ const fpcmakeini : array[0..255,1..240] of char=(
' $(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR)'#010+
'endif'#010+
#010+
- 'fpc_so','urceinstall: distclean'#010+
- ' $(MKDIR) $(INSTALL_SOURCEDIR)'#010+
+ 'fpc_sourceinstall: distclean'#010+
+ ' $(MKDIR) $(I','NSTALL_SOURCEDIR)'#010+
' $(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR)'#010+
#010+
'fpc_exampleinstall: $(EXAMPLEINSTALLTARGET) $(addsuffix _distclean,$(T'+
'ARGET_EXAMPLEDIRS))'#010+
'ifdef HASEXAMPLES'#010+
- ' $(MKDIR)',' $(INSTALL_EXAMPLEDIR)'#010+
+ ' $(MKDIR) $(INSTALL_EXAMPLEDIR)'#010+
'endif'#010+
- 'ifdef EXAMPLESOURCEFILES'#010+
+ 'ifdef EXAMPLES','OURCEFILES'#010+
' $(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)'#010+
'endif'#010+
'ifdef TARGET_EXAMPLEDIRS'#010+
@@ -2033,8 +2046,9 @@ const fpcmakeini : array[0..255,1..240] of char=(
'AMPLEDIR)'#010+
'endif'#010+
#010+
- '[distins','tallrules]'#010+
- '#####################################################################'#010+
+ '[distinstallrules]'#010+
+ '################################','####################################'+
+ '#'#010+
'# Dist Install'#010+
'#####################################################################'#010+
#010+
@@ -2043,14 +2057,15 @@ const fpcmakeini : array[0..255,1..240] of char=(
'fpc_distinstall: install exampleinstall'#010+
#010+
#010+
- '[zipin','stallrules]'#010+
- '#####################################################################'#010+
+ '[zipinstallrules]'#010+
+ '###############################','#####################################'+
+ '#'#010+
'# Zip'#010+
'#####################################################################'#010+
#010+
'.PHONY: fpc_zipinstall fpc_zipsourceinstall fpc_zipexampleinstall'#010+
#010+
- '# Temporary pa','th to pack a file, can only use a single deep'#010+
+ '# Temporary path to pack a file, can only use a single de','ep'#010+
'# subdir, because the deltree can'#039't see the whole tree to remove'#010+
'ifndef PACKDIR'#010+
'ifndef inUnix'#010+
@@ -2060,9 +2075,9 @@ const fpcmakeini : array[0..255,1..240] of char=(
'endif'#010+
'endif'#010+
#010+
- '# Maybe create default zipnam','e from packagename'#010+
+ '# Maybe create default zipname from packagename'#010+
'ifndef ZIPNAME'#010+
- 'ifdef DIST_ZIPNAME'#010+
+ 'ifdef DIS','T_ZIPNAME'#010+
'ZIPNAME=$(DIST_ZIPNAME)'#010+
'else'#010+
'ZIPNAME=$(PACKAGE_NAME)'#010+
@@ -2075,8 +2090,8 @@ const fpcmakeini : array[0..255,1..240] of char=(
#010+
'# ZipTarget'#010+
'ifndef ZIPTARGET'#010+
- 'if','def DIST_ZIPTARGET'#010+
- 'ZIPTARGET=DIST_ZIPTARGET'#010+
+ 'ifdef DIST_ZIPTARGET'#010+
+ 'ZIPTARGET=DIST_ZIPTARGET',#010+
'else'#010+
'ZIPTARGET=install'#010+
'endif'#010+
@@ -2092,9 +2107,9 @@ const fpcmakeini : array[0..255,1..240] of char=(
'# Use a wrapper script by default for Os/2'#010+
'ifndef inUnix'#010+
'USEZIPWRAPPER=1'#010+
- 'endif',#010+
+ 'endif'#010+
#010+
- '# We need to be able to run in the current OS so fix'#010+
+ '# We need to be able to run in the curren','t OS so fix'#010+
'# the path separator'#010+
'ifdef USEZIPWRAPPER'#010+
'ZIPPATHSEP=$(PATHSEP)'#010+
@@ -2103,37 +2118,37 @@ const fpcmakeini : array[0..255,1..240] of char=(
'ZIPPATHSEP=/'#010+
'endif'#010+
#010+
- '# Create commands to create',' the zip/tar file'#010+
- 'ZIPCMD_CDPACK:=cd $(subst /,$(ZIPPATHSEP),$(PACKDIR))'#010+
+ '# Create commands to create the zip/tar file'#010+
+ 'ZIPCMD_CDPACK:=cd $(subst',' /,$(ZIPPATHSEP),$(PACKDIR))'#010+
'ZIPCMD_CDBASE:=cd $(subst /,$(ZIPPATHSEP),$(BASEDIR))'#010+
'ifdef USETAR'#010+
'ZIPDESTFILE:=$(DIST_DESTDIR)/$(FULLZIPNAME)$(TAREXT)'#010+
- 'ZIPCMD_ZIP:=$(TARPROG) c$(TAROPT)f $(ZIPDESTFILE',') *'#010+
+ 'ZIPCMD_ZIP:=$(TARPROG) c$(TAROPT)f $(ZIPDESTFILE) *'#010+
'else'#010+
- 'ZIPDESTFILE:=$(DIST_DESTDIR)/$(FULLZIPNAME)$(ZIPEXT)'#010+
+ 'ZIPDESTFILE:=$(DIST_DESTDIR)/$(FUL','LZIPNAME)$(ZIPEXT)'#010+
'ZIPCMD_ZIP:=$(subst /,$(ZIPPATHSEP),$(ZIPPROG)) -Dr $(ZIPOPT) $(ZIPDES'+
'TFILE) *'#010+
'endif'#010+
#010+
'fpc_zipinstall:'#010+
' $(MAKE) $(ZIPTARGET) INSTALL_PREFIX=$(PACKDIR) ZIPINSTALL=1'#010+
- ' ','$(MKDIR) $(DIST_DESTDIR)'#010+
- ' $(DEL) $(ZIPDESTFILE)'#010+
+ ' $(MKDIR) $(DIST_DESTDIR)'#010+
+ ' $(DEL) $(Z','IPDESTFILE)'#010+
'ifdef USEZIPWRAPPER'#010+
'# Handle gecho separate as we need to espace \ with \\'#010+
'ifneq ($(ECHOREDIR),echo)'#010+
' $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CDPACK))" > $(ZIPWRAPPE'+
'R)'#010+
- ' $(E','CHOREDIR) -e "$(subst \,\\,$(ZIPCMD_ZIP))" >> $(ZIPWRAPPE'+
+ ' $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_ZIP))" ','>> $(ZIPWRAPPE'+
'R)'#010+
' $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CDBASE))" >> $(ZIPWRAPP'+
'ER)'#010+
'else'#010+
' echo $(ZIPCMD_CDPACK) > $(ZIPWRAPPER)'#010+
' echo $(ZIPCMD_ZIP) >> $(ZIPWRAPPER)'#010+
- ' ech','o $(ZIPCMD_CDBASE) >> $(ZIPWRAPPER)'#010+
+ ' echo $(ZIPCMD_CDBASE) >> $(ZIPWRAPPER)'#010+
'endif'#010+
- 'ifdef inUnix'#010+
+ 'i','fdef inUnix'#010+
' /bin/sh $(ZIPWRAPPER)'#010+
'else'#010+
'ifdef RUNBATCH'#010+
@@ -2144,9 +2159,9 @@ const fpcmakeini : array[0..255,1..240] of char=(
'endif'#010+
' $(DEL) $(ZIPWRAPPER)'#010+
'else'#010+
- ' $(ZIPCMD_CDPACK) ; $','(ZIPCMD_ZIP) ; $(ZIPCMD_CDBASE)'#010+
+ ' $(ZIPCMD_CDPACK) ; $(ZIPCMD_ZIP) ; $(ZIPCMD_CDBASE)'#010+
'endif'#010+
- ' $(DELTREE) $(PACKDIR)'#010+
+ ' ',' $(DELTREE) $(PACKDIR)'#010+
#010+
'fpc_zipsourceinstall:'#010+
' $(MAKE) fpc_zipinstall ZIPTARGET=sourceinstall ZIPSUFFIX=$(ZIP'+
@@ -2154,7 +2169,7 @@ const fpcmakeini : array[0..255,1..240] of char=(
#010+
'fpc_zipexampleinstall:'#010+
'ifdef HASEXAMPLES'#010+
- ' $(MAKE) fpc_zip','install ZIPTARGET=exampleinstall ZIPSUFFIX=$('+
+ ' $(MAKE) fpc_zipinstall ZIPTARGET=exampleinstall ZIPSUFFIX=','$('+
'ZIPEXAMPLESUFFIX)'#010+
'endif'#010+
#010+
@@ -2164,44 +2179,45 @@ const fpcmakeini : array[0..255,1..240] of char=(
#010+
'[cleanrules]'#010+
'#####################################################################'#010+
- '# Clean rule','s'#010+
- '#####################################################################'#010+
+ '# Clean rules'#010+
+ '#########################################','###########################'+
+ '#'#010+
#010+
'.PHONY: fpc_clean fpc_cleanall fpc_distclean'#010+
#010+
'ifdef EXEFILES'#010+
'override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES'+
'))'#010+
- 'override CLEANEXEDBGFILES:=$(addp','refix $(TARGETDIRPREFIX),$(CLEANEXE'+
- 'DBGFILES))'#010+
+ 'override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDB'+
+ 'GFILES','))'#010+
'endif'#010+
#010+
'ifdef CLEAN_PROGRAMS'#010+
'override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(E'+
'XEEXT), $(CLEAN_PROGRAMS)))'#010+
- 'override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffi','x'+
- ' $(EXEDBGEXT), $(CLEAN_PROGRAMS)))'#010+
+ 'override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix '+
+ '$(EXEDBGEXT), $(CLEAN_PROGRAMS)))'#010+
'endif'#010+
- #010+
+ #010,
'ifdef CLEAN_UNITS'#010+
'override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))'#010+
'endif'#010+
#010+
'ifdef CLEANPPUFILES'#010+
'override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)'+
- ') $(subst $(PPUEXT),','$(LTOEXT),$(CLEANPPUFILES)) $(addprefix $(STATIC'+
+ ') $(subst $(PPUEXT),$(LTOEXT),$(CLEANPPUFILES)) $(addprefix $(S','TATIC'+
'LIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addp'+
'refix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUF'+
'ILES)))'#010+
'ifdef DEBUGSYMEXT'#010+
- 'override CLEANPPULINKFILES','+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEAN'+
- 'PPUFILES))'#010+
+ 'override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANP',
+ 'PUFILES))'#010+
'endif'#010+
'override CLEANPPUFILENAMES:=$(CLEANPPUFILES)'#010+
'override CLEANPPUFILES=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFI'+
'LENAMES))'#010+
'override CLEANPPULINKFILENAMES:=$(CLEANPPULINKFILES)'#010+
- 'ove','rride CLEANPPULINKFILES=$(wildcard $(addprefix $(UNITTARGETDIRPRE'+
+ 'override CLEANPPULINKFILES=$(wildcard $(addpre','fix $(UNITTARGETDIRPRE'+
'FIX),$(CLEANPPULINKFILENAMES)))'#010+
'endif'#010+
#010+
@@ -2209,9 +2225,9 @@ const fpcmakeini : array[0..255,1..240] of char=(
'ifdef CLEANEXEFILES'#010+
' -$(DEL) $(CLEANEXEFILES)'#010+
'endif'#010+
- '# DELTREE instead of DEL because on Mac OS X these ','are directories'#010+
+ '# DELTREE instead of DEL because on Mac OS X these are directories'#010+
'ifdef CLEANEXEDBGFILES'#010+
- ' -$(DELTREE) $(CLEANEXEDBGFILES)'#010+
+ ' ',' -$(DELTREE) $(CLEANEXEDBGFILES)'#010+
'endif'#010+
'ifdef CLEANPPUFILES'#010+
' -$(DEL) $(CLEANPPUFILES)'#010+
@@ -2220,7 +2236,7 @@ const fpcmakeini : array[0..255,1..240] of char=(
' -$(DEL) $(CLEANPPULINKFILES)'#010+
'endif'#010+
'ifdef CLEANRSTFILES'#010+
- ' ',' -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))'+
+ ' -$(DEL) $(addprefix $(UNITTARGETDIRPRE','FIX),$(CLEANRSTFILES))'+
#010+
'endif'#010+
'ifdef CLEAN_FILES'#010+
@@ -2229,18 +2245,17 @@ const fpcmakeini : array[0..255,1..240] of char=(
'ifdef LIB_NAME'#010+
' -$(DEL) $(LIB_NAME) $(LIB_FULLNAME)'#010+
'endif'#010+
- ' -$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm P','ackage.fpc *$(ASMEXT'+
- ')'#010+
- ' -$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_scr'+
- 'ipt.res *_link.res'#010+
+ ' -$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)'#010+
+ ' -$(DEL) $(FPC','EXTFILE) $(REDIRFILE) script*.res link*.res *_s'+
+ 'cript.res *_link.res'#010+
' -$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BA'+
'TCHEXT)'#010+
#010+
'fpc_cleanall: $(CLEANTARGET)'#010+
'ifdef CLEANEXEFILES'#010+
- ' ',' -$(DEL) $(CLEANEXEFILES)'#010+
+ ' -$(DEL) $(CLEANEXEFILES)'#010+
'endif'#010+
- 'ifdef COMPILER_UNITTARGETDIR'#010+
+ 'ifdef',' COMPILER_UNITTARGETDIR'#010+
'ifdef CLEANPPUFILES'#010+
' -$(DEL) $(CLEANPPUFILES)'#010+
'endif'#010+
@@ -2248,7 +2263,7 @@ const fpcmakeini : array[0..255,1..240] of char=(
' -$(DEL) $(CLEANPPULINKFILES)'#010+
'endif'#010+
'ifdef CLEANRSTFILES'#010+
- ' -$(DEL) $(add','prefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))'+
+ ' -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFIL','ES))'+
#010+
'endif'#010+
'endif'#010+
@@ -2258,16 +2273,16 @@ const fpcmakeini : array[0..255,1..240] of char=(
' -$(DELTREE) units'#010+
' -$(DELTREE) bin'#010+
' -$(DEL) *$(OEXT) *$(LTOEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *'+
- '$(STA','TICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)'#010+
- 'ifneq ($(PPUEXT),.ppu)'#010+
+ '$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)'#010+
+ 'ifne','q ($(PPUEXT),.ppu)'#010+
' -$(DEL) *.o *.ppu *.a'#010+
'endif'#010+
' -$(DELTREE) *$(SMARTEXT)'#010+
' -$(DEL) fpcmade.* Package.fpc *.fpm'#010+
- ' -$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res ','*_s'+
- 'cript.res *_link.res'#010+
- ' -$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BA'+
- 'TCHEXT)'#010+
+ ' -$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_scr'+
+ 'ipt.res *_link.res'#010+
+ ' -$(DEL) $(P','PAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$('+
+ 'BATCHEXT)'#010+
'ifdef AOUTEXT'#010+
' -$(DEL) *$(AOUTEXT)'#010+
'endif'#010+
@@ -2275,8 +2290,8 @@ const fpcmakeini : array[0..255,1..240] of char=(
' -$(DEL) *$(DEBUGSYMEXT)'#010+
'endif'#010+
'ifdef LOCALFPMAKEBIN'#010+
- ' -$(DE','L) $(LOCALFPMAKEBIN)'#010+
- ' -$(DEL) $(FPMAKEBINOBJ)'#010+
+ ' -$(DEL) $(LOCALFPMAKEBIN)'#010+
+ ' -$(DEL) $(FPMA','KEBINOBJ)'#010+
'endif'#010+
#010+
'fpc_distclean: cleanall'#010+
@@ -2285,108 +2300,107 @@ const fpcmakeini : array[0..255,1..240] of char=(
'[baseinforules]'#010+
'#####################################################################'#010+
'# Base info rules'#010+
- '##################################################','##################'+
- '#'#010+
+ '#####################################################################'#010+
#010+
'.PHONY: fpc_baseinfo'#010+
- #010+
+ #010,
'override INFORULES+=fpc_baseinfo'#010+
#010+
'fpc_baseinfo:'#010+
' @$(ECHO)'#010+
' @$(ECHO) == Package info =='#010+
' @$(ECHO) Package Name..... $(PACKAGE_NAME)'#010+
- ' @$(ECHO) Package Version.. $(PACKA','GE_VERSION)'#010+
+ ' @$(ECHO) Package Version.. $(PACKAGE_VERSION)'#010+
' @$(ECHO)'#010+
- ' @$(ECHO) == Configuration info =='#010+
+ ' @$(ECH','O) == Configuration info =='#010+
' @$(ECHO)'#010+
' @$(ECHO) FPC.......... $(FPC)'#010+
' @$(ECHO) FPC Version.. $(FPC_VERSION)'#010+
' @$(ECHO) Source CPU... $(CPU_SOURCE)'#010+
- ' @$(ECHO) T','arget CPU... $(CPU_TARGET)'#010+
- ' @$(ECHO) Source OS.... $(OS_SOURCE)'#010+
+ ' @$(ECHO) Target CPU... $(CPU_TARGET)'#010+
+ ' @$(ECHO)',' Source OS.... $(OS_SOURCE)'#010+
' @$(ECHO) Target OS.... $(OS_TARGET)'#010+
' @$(ECHO) Full Source.. $(FULL_SOURCE)'#010+
' @$(ECHO) Full Target.. $(FULL_TARGET)'#010+
- ' @$(ECHO) SourceSuffi','x. $(SOURCESUFFIX)'#010+
- ' @$(ECHO) TargetSuffix. $(TARGETSUFFIX)'#010+
+ ' @$(ECHO) SourceSuffix. $(SOURCESUFFIX)'#010+
+ ' @$(ECHO) Target','Suffix. $(TARGETSUFFIX)'#010+
' @$(ECHO) FPC fpmake... $(FPCFPMAKE)'#010+
' @$(ECHO)'#010+
' @$(ECHO) == Directory info =='#010+
' @$(ECHO)'#010+
- ' @$(ECHO) Required pkgs... $(REQUIRE_PACKAGES)'#010,
+ ' @$(ECHO) Required pkgs... $(REQUIRE_PACKAGES)'#010+
' @$(ECHO)'#010+
- ' @$(ECHO) Basedir......... $(BASEDIR)'#010+
+ ' @$(ECHO) Basedir.','........ $(BASEDIR)'#010+
' @$(ECHO) FPCDir.......... $(FPCDIR)'#010+
' @$(ECHO) CrossBinDir..... $(CROSSBINDIR)'#010+
' @$(ECHO) UnitsDir........ $(UNITSDIR)'#010+
- ' @$(ECHO) PackagesDir..... ','$(PACKAGESDIR)'#010+
+ ' @$(ECHO) PackagesDir..... $(PACKAGESDIR)'#010+
' @$(ECHO)'#010+
- ' @$(ECHO) GCC library..... $(GCCLIBDIR)'#010+
+ ' @$(','ECHO) GCC library..... $(GCCLIBDIR)'#010+
' @$(ECHO) Other library... $(OTHERLIBDIR)'#010+
' @$(ECHO)'#010+
' @$(ECHO) == Tools info =='#010+
' @$(ECHO)'#010+
' @$(ECHO) As........ $(AS)'#010+
- ' ',' @$(ECHO) Ld........ $(LD)'#010+
- ' @$(ECHO) Ar........ $(AR)'#010+
+ ' @$(ECHO) Ld........ $(LD)'#010+
+ ' @$(ECH','O) Ar........ $(AR)'#010+
' @$(ECHO) Rc........ $(RC)'#010+
' @$(ECHO)'#010+
' @$(ECHO) Mv........ $(MVPROG)'#010+
' @$(ECHO) Cp........ $(CPPROG)'#010+
' @$(ECHO) Rm........ $(RMPROG)'#010+
- ' ',' @$(ECHO) GInstall.. $(GINSTALL)'#010+
- ' @$(ECHO) Echo...... $(ECHO)'#010+
+ ' @$(ECHO) GInstall.. $(GINSTALL)'#010+
+ ' @','$(ECHO) Echo...... $(ECHO)'#010+
' @$(ECHO) Shell..... $(SHELL)'#010+
' @$(ECHO) Date...... $(DATE)'#010+
' @$(ECHO) FPCMake... $(FPCMAKE)'#010+
' @$(ECHO) PPUMove... $(PPUMOVE)'#010+
- ' @$(ECH','O) Zip....... $(ZIPPROG)'#010+
- ' @$(ECHO)'#010+
+ ' @$(ECHO) Zip....... $(ZIPPROG)'#010+
+ ' @$(ECHO)'#010,
' @$(ECHO) == Object info =='#010+
' @$(ECHO)'#010+
' @$(ECHO) Target Loaders........ $(TARGET_LOADERS)'#010+
' @$(ECHO) Target Units.......... $(TARGET_UNITS)'#010+
- ' @$(ECHO) Target Imp','licit Units. $(TARGET_IMPLICITUNITS)'#010+
- ' @$(ECHO) Target Programs....... $(TARGET_PROGRAMS)'#010+
+ ' @$(ECHO) Target Implicit Units. $(TARGET_IMPLICITUNITS)'#010+
+ ' ',' @$(ECHO) Target Programs....... $(TARGET_PROGRAMS)'#010+
' @$(ECHO) Target Dirs........... $(TARGET_DIRS)'#010+
' @$(ECHO) Target Examples....... $(TARGET_EXAMPLES)'#010+
- ' @$(ECHO) Target Ex','ampleDirs.... $(TARGET_EXAMPLEDIRS)'#010+
- ' @$(ECHO)'#010+
+ ' @$(ECHO) Target ExampleDirs.... $(TARGET_EXAMPLEDIRS)'#010+
+ ' ',' @$(ECHO)'#010+
' @$(ECHO) Clean Units......... $(CLEAN_UNITS)'#010+
' @$(ECHO) Clean Files......... $(CLEAN_FILES)'#010+
' @$(ECHO)'#010+
' @$(ECHO) Install Units....... $(INSTALL_UNITS)'#010+
- ' ',' @$(ECHO) Install Files....... $(INSTALL_FILES)'#010+
+ ' @$(ECHO) Install Files....... $(INSTALL_','FILES)'#010+
' @$(ECHO)'#010+
' @$(ECHO) == Install info =='#010+
' @$(ECHO)'#010+
' @$(ECHO) DateStr.............. $(DATESTR)'#010+
' @$(ECHO) ZipName.............. $(ZIPNAME)'#010+
- ' @$(ECHO) ',' ZipPrefix............ $(ZIPPREFIX)'#010+
- ' @$(ECHO) ZipCrossPrefix....... $(ZIPCROSSPREFIX)'#010+
+ ' @$(ECHO) ZipPrefix............ $(ZIPPREFIX)'#010+
+ ' ',' @$(ECHO) ZipCrossPrefix....... $(ZIPCROSSPREFIX)'#010+
' @$(ECHO) ZipSuffix............ $(ZIPSUFFIX)'#010+
' @$(ECHO) FullZipName.......... $(FULLZIPNAME)'#010+
- ' @$(ECHO) Install FPC Package.','. $(INSTALL_FPCPACKAGE)'#010+
+ ' @$(ECHO) Install FPC Package.. $(INSTALL_FPCPACKAGE)'#010+
' @$(ECHO)'#010+
- ' @$(ECHO) Install base dir..... $(INSTALL_BASEDIR)'#010+
+ ' ',' @$(ECHO) Install base dir..... $(INSTALL_BASEDIR)'#010+
' @$(ECHO) Install binary dir... $(INSTALL_BINDIR)'#010+
' @$(ECHO) Install library dir.. $(INSTALL_LIBDIR)'#010+
- ' @$(ECHO) Instal','l units dir.... $(INSTALL_UNITDIR)'#010+
- ' @$(ECHO) Install source dir... $(INSTALL_SOURCEDIR)'#010+
+ ' @$(ECHO) Install units dir.... $(INSTALL_UNITDIR)'#010+
+ ' ','@$(ECHO) Install source dir... $(INSTALL_SOURCEDIR)'#010+
' @$(ECHO) Install doc dir...... $(INSTALL_DOCDIR)'#010+
' @$(ECHO) Install example dir.. $(INSTALL_EXAMPLEDIR)'#010+
- ' @$(ECHO) Instal','l data dir..... $(INSTALL_DATADIR)'#010+
- ' @$(ECHO)'#010+
+ ' @$(ECHO) Install data dir..... $(INSTALL_DATADIR)'#010+
+ ' ','@$(ECHO)'#010+
' @$(ECHO) Dist destination dir. $(DIST_DESTDIR)'#010+
' @$(ECHO) Dist zip name........ $(DIST_ZIPNAME)'#010+
' @$(ECHO)'#010+
#010+
'[inforules]'#010+
- '##############################################','######################'+
- '#'#010+
- '# Info rules'#010+
'#####################################################################'#010+
+ '# Info rules'#010+
+ '######','##############################################################'+
+ '#'#010+
#010+
'.PHONY: fpc_info'#010+
#010+
@@ -2394,36 +2408,37 @@ const fpcmakeini : array[0..255,1..240] of char=(
#010+
'[makefilerules]'#010+
'#####################################################################'#010+
- '# Re','build Makefile'#010+
- '#####################################################################'#010+
+ '# Rebuild Makefile'#010+
+ '############################','########################################'+
+ '#'#010+
#010+
'.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2'+
' \'#010+
' fpc_makefile_dirs'#010+
#010+
'fpc_makefile:'#010+
- ' $(FPCMAKE) -w -T$(OS_TARGET) Mak','efile.fpc'#010+
+ ' $(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc'#010+
#010+
'fpc_makefile_sub1:'#010+
- 'ifdef TARGET_DIRS'#010+
+ 'ifdef TARGET_','DIRS'#010+
' $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGE'+
'T_DIRS))'#010+
'endif'#010+
'ifdef TARGET_EXAMPLEDIRS'#010+
' $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGE'+
- 'T_EXAMPLEDIR','S))'#010+
+ 'T_EXAMPLEDIRS))'#010+
'endif'#010+
#010+
- 'fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_'+
- 'EXAMPLEDIRS))'#010+
+ 'fpc_makefile_sub2: $(addsuffix _','makefile_dirs,$(TARGET_DIRS) $(TARGE'+
+ 'T_EXAMPLEDIRS))'#010+
#010+
'fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2'#010+
#010+
'fpc_makefiles: fpc_makefile fpc_makefile_dirs'#010+
#010+
'[localmakefile]'#010+
- '#########################','###########################################'+
- '#'#010+
+ '####################################################################','#'+
+ #010+
'# Local Makefile'#010+
'#####################################################################'#010+
#010+
@@ -2433,16 +2448,15 @@ const fpcmakeini : array[0..255,1..240] of char=(
#010+
#010+
'[userrules]'#010+
- '##################################','##################################'+
- '#'#010+
- '# Users rules'#010+
+ '#####################################################################'#010+
+ '# Users',' rules'#010+
'#####################################################################'#010+
#010+
'[lclrules]'#010+
'#####################################################################'#010+
'# LCL Rules'#010+
- '##########################','##########################################'+
- '#'#010+
+ '#####################################################################',
+ #010+
#010+
'# LCL Platform'#010+
'ifndef LCL_PLATFORM'#010+
@@ -2454,9 +2468,9 @@ const fpcmakeini : array[0..255,1..240] of char=(
'endif'#010+
'export LCL_PLATFORM'#010+
#010+
- '# Check if the specified LCLDIR is cor','rect'#010+
+ '# Check if the specified LCLDIR is correct'#010+
'ifdef LCLDIR'#010+
- 'override LCLDIR:=$(subst \,/,$(LCLDIR))'#010+
+ 'override LCLDIR:=$(subst ','\,/,$(LCLDIR))'#010+
'ifeq ($(wildcard $(LCLDIR)/units/$(LCL_PLATFORM)),)'#010+
'override LCLDIR=wrong'#010+
'endif'#010+
@@ -2466,16 +2480,16 @@ const fpcmakeini : array[0..255,1..240] of char=(
#010+
'# Check if the default LCLDIR is correct'#010+
'ifdef DEFAULT_LCLDIR'#010+
- 'overri','de LCLDIR:=$(subst \,/,$(DEFAULT_LCLDIR))'#010+
- 'ifeq ($(wildcard $(LCLDIR)/units/$(LCL_PLATFORM)),)'#010+
+ 'override LCLDIR:=$(subst \,/,$(DEFAULT_LCLDIR))'#010+
+ 'i','feq ($(wildcard $(LCLDIR)/units/$(LCL_PLATFORM)),)'#010+
'override LCLDIR=wrong'#010+
'endif'#010+
'endif'#010+
#010+
'# Check for development version'#010+
'ifeq ($(LCLDIR),wrong)'#010+
- 'override LCLDIR=$(subst /units/$(LCL_PLATFORM),,$(firstw','ord $(wildca'+
- 'rd $(addsuffix /units/$(LCL_PLATFORM),$(BASEDIR)/lcl $(BASEDIR)))))'#010+
+ 'override LCLDIR=$(subst /units/$(LCL_PLATFORM),,$(firstword $(wildcard'+
+ ' $(addsuffix /units/$(LCL_PLA','TFORM),$(BASEDIR)/lcl $(BASEDIR)))))'#010+
'ifeq ($(LCLDIR),)'#010+
'override LCLDIR=wrong'#010+
'endif'#010+
@@ -2483,8 +2497,8 @@ const fpcmakeini : array[0..255,1..240] of char=(
#010+
'# Check for release version'#010+
'ifeq ($(LCLDIR),wrong)'#010+
- 'override LCLDIR=$(subst /units/$(LCL_PLATFORM),,$(firstw','ord $(wildca'+
- 'rd $(addsuffix /lib/lazarus/units/$(LCL_PLATFORM),/usr/local /usr))))'#010+
+ 'override LCLDIR=$(subst /units/$(LCL_PLATFORM),,$(firstword $(wildcard'+
+ ' $(addsuffix /lib/lazarus/uni','ts/$(LCL_PLATFORM),/usr/local /usr))))'#010+
'ifeq ($(LCLDIR),)'#010+
'override LCLDIR=wrong'#010+
'endif'#010+
@@ -2493,16 +2507,17 @@ const fpcmakeini : array[0..255,1..240] of char=(
'# Generate dirs'#010+
'override LCLUNITDIR=$(wildcard $(LCLDIR)/units/$(LCL_PLATFORM) $(LCLDI'+
'R)/units)'#010+
- 'override ','LCLCOMPONENTDIR=$(wildcard $(LCLDIR)/.. $(LCLDIR)/../compon'+
+ 'override LCLCOMPONENTDIR=$(wildcard $(LCLDIR)/.. $(L','CLDIR)/../compon'+
'ents $(LCLDIR)/components)'#010+
'export LCLDIR LCLUNITDIR LCLCOMPONENTDIR'#010+
#010+
'# Add LCL dirs to paths'#010+
'override REQUIRE_PACKAGESDIR+=$(LCLCOMPONENTDIR)'#010+
- 'override COMPILER_UNITDIR+=$(LCLUNITDIR',')'#010+
+ 'override COMPILER_UNITDIR+=$(LCLUNITDIR)'#010+
#010+
'[lclinforules]'#010+
- '#####################################################################'#010+
+ '#########################','###########################################'+
+ '#'#010+
'# LCL Info rules'#010+
'#####################################################################'#010+
'override INFORULES+=lclinfo'#010+
@@ -2510,20 +2525,20 @@ const fpcmakeini : array[0..255,1..240] of char=(
'.PHONY: lclinfo'#010+
#010+
'lclinfo:'#010+
- ' @$','(ECHO) == LCL info =='#010+
+ ' @$(ECHO) == LCL info =='#010+
' @$(ECHO)'#010+
- ' @$(ECHO) Platform............. $(LCL_PLATFORM)'#010+
+ ' ',' @$(ECHO) Platform............. $(LCL_PLATFORM)'#010+
' @$(ECHO) LCLDIR............... $(LCLDIR)'#010+
' @$(ECHO) LCL Unit dir......... $(LCLUNITDIR)'#010+
- ' @$(ECHO) LCL Component dir.... ','$(LCLCOMPONENTDIR)'#010+
+ ' @$(ECHO) LCL Component dir.... $(LCLCOMPONENTDIR)'#010+
' @$(ECHO)'#010+
#010+
- '[fpmakeprerules]'#010+
+ '[fpmak','eprerules]'#010+
'#####################################################################'#010+
'# fpmake prerules'#010+
'#####################################################################'#010+
- 'FPMAKEBIN=fpmake$(SRCEXEEXT)',#010+
- 'FPMAKEBINOBJ=fpmake$(OEXT) fpmake$(LTOEXT)'#010+
+ 'FPMAKEBIN=fpmake$(SRCEXEEXT)'#010+
+ 'FPMAKEBINOBJ=fpmake$(OEXT) fpmake$(LTOEXT)',#010+
'LOCALFPMAKEBIN=.$(PATHSEP)$(FPMAKEBIN)'#010+
#010+
'# Convert the OS_TARGET and CPU_TARGET options to fpmake'#039's --os an'+
@@ -2531,53 +2546,52 @@ const fpcmakeini : array[0..255,1..240] of char=(
'ifdef OS_TARGET'#010+
'FPC_TARGETOPT+=--os=$(OS_TARGET)'#010+
'endif'#010+
- 'ifdef CPU_TARGET',#010+
+ 'ifdef CPU_TARGET'#010+
'FPC_TARGETOPT+=--cpu=$(CPU_TARGET)'#010+
'endif'#010+
- #010+
+ #010,
'# Get the location of the bootstrap-fpmkunit units'#010+
'PACKAGEDIR_FPMKUNIT:=$(firstword $(subst /Makefile.fpc,,$(strip $(wild'+
'card $(addsuffix /fpmkunit/Makefile.fpc,$(PACKAGESDIR))))))'#010+
- 'ifneq ($(PACKAGE','DIR_FPMKUNIT),)'#010+
- 'UNITDIR_FPMAKE_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)/units_bs/$(SOURCESUFFIX'+
- ')'#010+
+ 'ifneq ($(PACKAGEDIR_FPMKUNIT),)'#010+
+ 'UNITDIR_FPMAKE_FPMKUNIT=$(P','ACKAGEDIR_FPMKUNIT)/units_bs/$(SOURCESUFF'+
+ 'IX)'#010+
'override COMPILER_FPMAKE_UNITDIR=$(UNITDIR_FPMAKE_FPMKUNIT)'#010+
'FPMKUNIT_SRC=$(PACKAGEDIR_FPMKUNIT)/src/fpmkunit.pp'#010+
- 'FPMKUNIT_PPU=$(UNITDIR_FPMAKE_FPMKUNIT)/','fpmkunit.ppu'#010+
+ 'FPMKUNIT_PPU=$(UNITDIR_FPMAKE_FPMKUNIT)/fpmkunit.ppu'#010+
'endif'#010+
#010+
- 'ifdef FPMAKE_SKIP_CONFIG'#010+
+ 'ifdef FPMAKE_SKIP_CONFI','G'#010+
'override FPMAKE_BUILD_OPT+=$(FPMAKE_SKIP_CONFIG)'#010+
'endif'#010+
#010+
'[fpmakerules]'#010+
'#####################################################################'#010+
'# fpmake rules'#010+
- '########################################','############################'+
- '#'#010+
- '.PHONY: fpc_fpmake fpc_fpmake_clean fpc_fpmake_install fpc_fpmake_exam'+
- 'pleinstall'#010+
+ '#####################################################################'#010+
+ '.PHONY: fpc_f','pmake fpc_fpmake_clean fpc_fpmake_install fpc_fpmake_ex'+
+ 'ampleinstall'#010+
#010+
'# Do not pass the Makefile'#039's unit and binary target locations. fpm'+
'ake uses it'#039's own.'#010+
- 'override FPCOPT:=$(filter-out -FU%,$(FPCOPT','))'#010+
- 'override FPCOPT:=$(filter-out -FE%,$(FPCOPT))'#010+
+ 'override FPCOPT:=$(filter-out -FU%,$(FPCOPT))'#010+
+ 'override FPCOPT:=$(filter-out -FE%,$(FPC','OPT))'#010+
'# Compose general fpmake-parameters'#010+
'ifdef FPMAKEOPT'#010+
'FPMAKE_OPT+=$(FPMAKEOPT)'#010+
'endif'#010+
'FPMAKE_OPT+=--localunitdir=$(FPCDIR)'#010+
'FPMAKE_OPT+=--globalunitdir=$(FPCDIR)/packages'#010+
- 'FPMAKE_OPT+=$(FPC_TARGET','OPT)'#010+
- 'FPMAKE_OPT+=$(addprefix -o ,$(FPCOPT))'#010+
+ 'FPMAKE_OPT+=$(FPC_TARGETOPT)'#010+
+ 'FPMAKE_OPT+=$(addprefix -o ,$(FPCOPT))',#010+
'FPMAKE_OPT+=--compiler=$(FPC)'#010+
'FPMAKE_OPT+=-bu'#010+
#010+
'FPMAKE_INSTALL_OPT+=--unitinstalldir=$(INSTALL_UNITDIR)'#010+
'ifdef UNIXHier'#010+
'FPMAKE_INSTALL_OPT+=--prefix=$(INSTALL_PREFIX)'#010+
- 'FPMAKE_INSTALL_OPT+=--baseinsta','lldir=$(INSTALL_LIBDIR)/fpc/$(FPC_VER'+
- 'SION)'#010+
+ 'FPMAKE_INSTALL_OPT+=--baseinstalldir=$(INSTALL_LIBDIR)/fpc/$(FPC_VERSI'+
+ 'ON)'#010,
'else'#010+
'FPMAKE_INSTALL_OPT+=--prefix=$(INSTALL_BASEDIR)'#010+
'endif'#010+
@@ -2585,21 +2599,21 @@ const fpcmakeini : array[0..255,1..240] of char=(
'override ALLTARGET+=fpc_fpmake'#010+
'override INSTALLTARGET+=fpc_fpmake_install'#010+
'override EXAMPLEINSTALLTARGET+=fpc_fpmake_exampleinstall'#010+
- '# If n','o fpmake exists and (dist)clean is called, do not try to build'+
+ '# If no fpmake exists and (dist)clean is called, ','do not try to build'+
' fpmake, it will'#010+
'# most often fail because the dependencies are cleared.'#010+
'# In case of a clean, simply do nothing'#010+
'ifneq ($(wildcard $(LOCALFPMAKEBIN)),)'#010+
- 'override CLEANTARGET+=fpc_','fpmake_clean'#010+
+ 'override CLEANTARGET+=fpc_fpmake_clean'#010+
'endif'#010+
#010+
- '$(FPMKUNIT_PPU): $(FPMKUNIT_SRC)'#010+
+ '$(FPMKUNIT_PPU): $(FPMK','UNIT_SRC)'#010+
' $(MAKE) -C $(PACKAGEDIR_FPMKUNIT) bootstrap $(addprefix OP'+
'T=,$(FPMAKE_BUILD_OPT))'#010+
#010+
'$(FPMAKEBIN): fpmake.pp $(FPMKUNIT_PPU)'#010+
- ' $(FPCFPMAKE) fpmake.pp $(addprefix -Fu,$(COM','PILER_FPMAKE_UNI'+
- 'TDIR)) $(FPMAKE_BUILD_OPT)'#010+
+ ' $(FPCFPMAKE) fpmake.pp $(addprefix -Fu,$(COMPILER_FPMAKE_UNITD'+
+ 'IR)) $(FPMAKE_BUILD_OPT)'#010,
#010+
'fpc_fpmake: $(FPMAKEBIN)'#010+
' $(LOCALFPMAKEBIN) compile $(FPMAKE_OPT)'#010+
@@ -2608,14 +2622,14 @@ const fpcmakeini : array[0..255,1..240] of char=(
' $(LOCALFPMAKEBIN) clean $(FPMAKE_OPT)'#010+
#010+
'fpc_fpmake_install: $(FPMAKEBIN)'#010+
- ' ',' $(LOCALFPMAKEBIN) install $(FPMAKE_OPT) $(FPMAKE_INSTALL'+
+ ' $(LOCALFPMAKEBIN) install $(FPMAKE','_OPT) $(FPMAKE_INSTALL'+
'_OPT)'#010+
#010+
'# This is not completely valid. Exampleinstall should only install the'+
' examples, while'#010+
'# fpmake -ie installs everything, including the examples. This also me'+
- 'ans that on',#010+
- '# a distinstall fpmake install wil be called twice.'#010+
+ 'ans that on'#010+
+ '# a distinstall fpmake install wil be call','ed twice.'#010+
'fpc_fpmake_exampleinstall: $(FPMAKEBIN)'#010+
' $(LOCALFPMAKEBIN) install -ie $(FPMAKE_OPT) $(FPMAKE_INSTA'+
'LL_OPT)'#010
diff --git a/utils/fpcm/fpcmake.ini b/utils/fpcm/fpcmake.ini
index f78782fe29..8af5b1ce10 100644
--- a/utils/fpcm/fpcmake.ini
+++ b/utils/fpcm/fpcmake.ini
@@ -898,10 +898,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
@@ -1509,7 +1517,7 @@ endif
# create always pic'ed code on x86_64, mips and mipsel
# on unix-like systems
ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),)
-ifneq ($(findstring $(CPU_TARGET),x86_64 mips mipsel),)
+ifneq ($(findstring $(CPU_TARGET),x86_64 mips mipsel riscv64),)
override FPCOPT+=-Cg
endif
endif
diff --git a/utils/fpcm/revision.inc b/utils/fpcm/revision.inc
index 877a2cb79b..f0692a17cb 100644
--- a/utils/fpcm/revision.inc
+++ b/utils/fpcm/revision.inc
@@ -1 +1 @@
-'2021-01-24 rev 48368'
+'2021-03-10 rev 48929'
diff --git a/utils/fpcmkcfg/Makefile b/utils/fpcmkcfg/Makefile
index 8ed4345c57..18a20eba1e 100644
--- a/utils/fpcmkcfg/Makefile
+++ b/utils/fpcmkcfg/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/utils/fpcres/Makefile b/utils/fpcres/Makefile
index 89d3fdbab3..0f72608c6c 100644
--- a/utils/fpcres/Makefile
+++ b/utils/fpcres/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/utils/fpcreslipo/Makefile b/utils/fpcreslipo/Makefile
index 058493a967..ce5a2fddc0 100644
--- a/utils/fpcreslipo/Makefile
+++ b/utils/fpcreslipo/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/utils/fpdoc/Makefile b/utils/fpdoc/Makefile
index e16917fdfc..21b676c8f2 100644
--- a/utils/fpdoc/Makefile
+++ b/utils/fpdoc/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/utils/fpmc/Makefile b/utils/fpmc/Makefile
index 8efbda7db5..a557db1cca 100644
--- a/utils/fpmc/Makefile
+++ b/utils/fpmc/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/utils/fppkg/Makefile b/utils/fppkg/Makefile
index 1dd7590db4..31ebc6905c 100644
--- a/utils/fppkg/Makefile
+++ b/utils/fppkg/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/utils/fprcp/Makefile b/utils/fprcp/Makefile
index b9d3a75f6a..958dc19021 100644
--- a/utils/fprcp/Makefile
+++ b/utils/fprcp/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/utils/h2pas/Makefile b/utils/h2pas/Makefile
index 4204d75746..192aecc114 100644
--- a/utils/h2pas/Makefile
+++ b/utils/h2pas/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/utils/ihxutil/Makefile b/utils/ihxutil/Makefile
index 111586ae3a..6a2d4f52ea 100644
--- a/utils/ihxutil/Makefile
+++ b/utils/ihxutil/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/utils/importtl/Makefile b/utils/importtl/Makefile
index 2c07a323a9..02b6368191 100644
--- a/utils/importtl/Makefile
+++ b/utils/importtl/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/utils/instantfpc/Makefile b/utils/instantfpc/Makefile
index e1c8eb93b1..1b3e0c6bd8 100644
--- a/utils/instantfpc/Makefile
+++ b/utils/instantfpc/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/utils/json2pas/Makefile b/utils/json2pas/Makefile
index c4736c659e..e9fb7c3fa9 100644
--- a/utils/json2pas/Makefile
+++ b/utils/json2pas/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/utils/mksymbian/Makefile b/utils/mksymbian/Makefile
index bea6b44b90..3d1ea44503 100644
--- a/utils/mksymbian/Makefile
+++ b/utils/mksymbian/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/utils/pas2fpm/Makefile b/utils/pas2fpm/Makefile
index 26efb90654..c82e0769ee 100644
--- a/utils/pas2fpm/Makefile
+++ b/utils/pas2fpm/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/utils/pas2jni/Makefile b/utils/pas2jni/Makefile
index 2b106f2b4f..4afc9d107e 100644
--- a/utils/pas2jni/Makefile
+++ b/utils/pas2jni/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/utils/pas2js/Makefile b/utils/pas2js/Makefile
index b1a9bee0f7..14ba173fa0 100644
--- a/utils/pas2js/Makefile
+++ b/utils/pas2js/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/utils/pas2ut/Makefile b/utils/pas2ut/Makefile
index 469b016b0f..3ce10ece7e 100644
--- a/utils/pas2ut/Makefile
+++ b/utils/pas2ut/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/utils/rmwait/Makefile b/utils/rmwait/Makefile
index d708ad2700..125f783870 100644
--- a/utils/rmwait/Makefile
+++ b/utils/rmwait/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/utils/tply/Makefile b/utils/tply/Makefile
index ca9b2d5bc0..eda5dd4074 100644
--- a/utils/tply/Makefile
+++ b/utils/tply/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif
diff --git a/utils/unicode/Makefile b/utils/unicode/Makefile
index de30ab14fc..845490910a 100644
--- a/utils/unicode/Makefile
+++ b/utils/unicode/Makefile
@@ -607,10 +607,18 @@ else
ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
FPCMAKE_CROSSGCCOPT=-mabi=32
else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv64),)
+FPCMAKE_CROSSGCCOPT=-mabi=lp64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),riscv32),)
+FPCMAKE_CROSSGCCOPT=-mabi=ilp32
+else
FPCMAKE_CROSSGCCOPT=-m32
endif
endif
endif
+endif
+endif
FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
endif
endif